Skip to content

Commit ac6721a

Browse files
committed
loader.c: memcpy structs into properly aligned buffers before accessing contents
Signed-off-by: Drew Fisher <drew.m.fisher@gmail.com>
1 parent e1365de commit ac6721a

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/loader.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,15 @@ static void dump_cemd_cmd(freenect_context* ctx, cemdloader_command cmd) {
4949
static int get_reply(fnusb_dev* dev) {
5050
freenect_context* ctx = dev->parent->parent;
5151
unsigned char dump[512];
52-
bootloader_status_code buffer = ((bootloader_status_code*)dump)[0];
52+
bootloader_status_code buffer;
5353
int res;
5454
int transferred;
55-
res = fnusb_bulk(dev, 0x81, (unsigned char*)&buffer, 512, &transferred);
55+
res = fnusb_bulk(dev, 0x81, dump, 512, &transferred);
5656
if(res != 0 || transferred != sizeof(bootloader_status_code)) {
5757
FN_ERROR("Error reading reply: %d\ttransferred: %d (expected %d)\n", res, transferred, (int)(sizeof(bootloader_status_code)));
5858
return res;
5959
}
60+
memcpy(&buffer, dump, sizeof(bootloader_status_code));
6061
if(fn_le32(buffer.magic) != 0x0a6fe000) {
6162
FN_ERROR("Error reading reply: invalid magic %08X\n",buffer.magic);
6263
return -1;

0 commit comments

Comments
 (0)