1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
--- libcx9r/kdbx.c.orig 2022-09-06 17:07:27 UTC
+++ libcx9r/kdbx.c
@@ -112,22 +112,25 @@ static cx9r_err kdbx_read_magic(cx9r_stream_t *stream)
uint8_t const kdbx_magic[KDBX_MAGIC_LENGTH] = { 0x03, 0xd9, 0xa2, 0x9a,
0x67, 0xfb, 0x4b, 0xb5 };
DEBUG("Reading magic...\n");
- uint8_t magic[KDBX_MAGIC_LENGTH];
+ union {
+ uint8_t magic[KDBX_MAGIC_LENGTH];
+ uint64_t joined;
+ } m;
// default return value
cx9r_err err = CX9R_OK;
// read magic bytes
- CHECK((cx9r_sread(magic, 1, KDBX_MAGIC_LENGTH, stream) == KDBX_MAGIC_LENGTH),
+ CHECK((cx9r_sread(m.magic, 1, KDBX_MAGIC_LENGTH, stream) == KDBX_MAGIC_LENGTH),
err, CX9R_FILE_READ_ERR, kdbx_magic_bail);
DEBUG("Proper magic length\n");
// compare magic bytes to expected
- CHECK((memcmp(magic, kdbx_magic, KDBX_MAGIC_LENGTH) == 0), err,
+ CHECK((memcmp(m.magic, kdbx_magic, KDBX_MAGIC_LENGTH) == 0), err,
CX9R_BAD_MAGIC, kdbx_magic_bail);
DEBUG("Proper magic content\n");
kdbx_magic_bail:
-DEBUG("%016lX (%d)\n", *(uint64_t*)&magic, err);
+DEBUG("%016llX (%d)\n", (unsigned long long)m.joined, err);
return err;
}
|