Skip to content

Commit 76bf0f4

Browse files
committed
fix cannot handle data size larger than length 8
1 parent f3d7d49 commit 76bf0f4

File tree

1 file changed

+30
-5
lines changed

1 file changed

+30
-5
lines changed

socketcandcl.c

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -432,11 +432,32 @@ inline void state_connected()
432432

433433
// fprintf(stderr, "frame.can_id: %d frame.flags: %d frame.len: %d\n", frame.can_id, frame.flags, frame.len);
434434

435-
sscanf(data_str, "%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx",
436-
&frame.data[0], &frame.data[1],
437-
&frame.data[2], &frame.data[3],
438-
&frame.data[4], &frame.data[5],
439-
&frame.data[6], &frame.data[7]);
435+
sscanf(data_str,
436+
"%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx"
437+
"%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx"
438+
"%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx"
439+
"%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx"
440+
"%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx"
441+
"%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx"
442+
"%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx"
443+
"%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx",
444+
&frame.data[0], &frame.data[1], &frame.data[2], &frame.data[3],
445+
&frame.data[4], &frame.data[5], &frame.data[6], &frame.data[7],
446+
&frame.data[8], &frame.data[9], &frame.data[10], &frame.data[11],
447+
&frame.data[12], &frame.data[13], &frame.data[14], &frame.data[15],
448+
&frame.data[16], &frame.data[17], &frame.data[18], &frame.data[19],
449+
&frame.data[20], &frame.data[21], &frame.data[22], &frame.data[23],
450+
&frame.data[24], &frame.data[25], &frame.data[26], &frame.data[27],
451+
&frame.data[28], &frame.data[29], &frame.data[30], &frame.data[31],
452+
&frame.data[32], &frame.data[33], &frame.data[34], &frame.data[35],
453+
&frame.data[36], &frame.data[37], &frame.data[38], &frame.data[39],
454+
&frame.data[40], &frame.data[41], &frame.data[42], &frame.data[43],
455+
&frame.data[44], &frame.data[45], &frame.data[46], &frame.data[47],
456+
&frame.data[48], &frame.data[49], &frame.data[50], &frame.data[51],
457+
&frame.data[52], &frame.data[53], &frame.data[54], &frame.data[55],
458+
&frame.data[56], &frame.data[57], &frame.data[58], &frame.data[59],
459+
&frame.data[60], &frame.data[61], &frame.data[62], &frame.data[63]
460+
);
440461

441462
ret = write(raw_socket, &frame, sizeof(struct canfd_frame));
442463
if(ret != sizeof(struct canfd_frame)) {
@@ -503,6 +524,10 @@ inline void state_connected()
503524
}
504525
sprintf(buf+ret, ">");
505526

527+
#ifdef DEBUG
528+
PRINT_VERBOSE("%s\n", buf);
529+
#endif
530+
506531
const size_t len = strlen(buf);
507532
ret = send(server_socket, buf, len, 0);
508533
if(ret < sizeof(len)) {

0 commit comments

Comments
 (0)