Skip to content

Commit 8a29f67

Browse files
committed
if QCBOR is not compiled with consistent -DCONFIG options, resulting in item.label being in different place
for plutoctrl_cbor.c than for compiled QCBOR library in libwhack.
1 parent 9e48a48 commit 8a29f67

6 files changed

Lines changed: 24 additions & 2 deletions

File tree

include/whack.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ enum whack_CBOR_actions {
112112
WHACK_INITIATE_OPPO=8,
113113
WHACK_TERMINATE=9,
114114
WHACK_ADD_KEY =10,
115+
WHACK_NOOP =23,
115116
};
116117

117118
#define CborSignatureTag 55799

lib/libpluto/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ CFLAGS+=-DLEAK_DETECTIVE
3232

3333
# for access to qcbor code, submodule of libwhack
3434
CFLAGS+=-I${OPENSWANSRCDIR}/lib/libwhack/qcbor/inc
35+
CFLAGS+= -DQCBOR_DISABLE_FLOAT_HW_USE
36+
CFLAGS+= -DQCBOR_CONFIG_DISABLE_EXP_AND_MANTISSA
3537

3638
ONEFILE=pluto_constants.c
3739
SRCS=defs.c db_ops.c db2_ops.c ai2db.c spdb_print.c

lib/libpluto/plutoctrl_cbor.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,8 +582,10 @@ err_t whack_cbor_decode_msg(struct whack_message *wm, unsigned char *buf, size_t
582582
if(item.uLabelType != QCBOR_TYPE_INT64) {
583583
return "map key must be integer";
584584
}
585-
CBOR_DEBUG("%u found map with labeled: %ld\n", elemCount, item.label.int64);
585+
CBOR_DEBUG("%u found map %d with labeled: %ld\n", elemCount, item.uDataType, item.label.int64);
586586
switch(item.label.int64) {
587+
case WHACK_NOOP:
588+
break;
587589
case WHACK_STATUS:
588590
wm->whack_status = TRUE;
589591
/* consume value, which is probably empty map */

lib/libwhack/whackwrite.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,21 +298,28 @@ err_t whack_cbor_encode_msg(struct whack_message *wm, unsigned char *buf, size_t
298298
QCBOREncode_OpenMapInMapN(&qec, WHACK_ROUTE);
299299
if(wm->name) {
300300
QCBOREncode_AddSZStringToMapN(&qec, WHACK_OPT_NAME, wm->name);
301+
} else {
302+
QCBOREncode_AddInt64ToMapN(&qec, 0, 1);
301303
}
304+
302305
QCBOREncode_CloseMap(&qec);
303306
}
304307

305308
if(wm->whack_unroute) {
306309
QCBOREncode_OpenMapInMapN(&qec, WHACK_UNROUTE);
307310
if(wm->name) {
308311
QCBOREncode_AddSZStringToMapN(&qec, WHACK_OPT_NAME, wm->name);
312+
} else {
313+
QCBOREncode_AddInt64ToMapN(&qec, 0, 1);
309314
}
310315
QCBOREncode_CloseMap(&qec);
311316
}
312317
if(wm->whack_initiate) {
313318
QCBOREncode_OpenMapInMapN(&qec, WHACK_INITIATE);
314319
if(wm->name) {
315320
QCBOREncode_AddSZStringToMapN(&qec, WHACK_OPT_NAME, wm->name);
321+
} else {
322+
QCBOREncode_AddInt64ToMapN(&qec, 0, 1);
316323
}
317324
QCBOREncode_CloseMap(&qec);
318325
}
@@ -327,6 +334,8 @@ err_t whack_cbor_encode_msg(struct whack_message *wm, unsigned char *buf, size_t
327334
QCBOREncode_OpenMapInMapN(&qec, WHACK_TERMINATE);
328335
if(wm->name) {
329336
QCBOREncode_AddSZStringToMapN(&qec, WHACK_OPT_NAME, wm->name);
337+
} else {
338+
QCBOREncode_AddInt64ToMapN(&qec, 0, 1);
330339
}
331340
QCBOREncode_CloseMap(&qec);
332341
}
@@ -362,6 +371,7 @@ err_t whack_cbor_encode_msg(struct whack_message *wm, unsigned char *buf, size_t
362371
QCBOREncode_CloseMap(&qec);
363372
}
364373

374+
//QCBOREncode_AddInt64ToMapN(&qec, WHACK_NOOP, 1);
365375
QCBOREncode_CloseMap(&qec);
366376

367377
/* close the array */

tests/unit/libwhack/wo01-msgstop/msgstop.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,13 @@ int main(int argc, char *argv[])
7878
fwrite(wm_buf, outsize, 1, omsg);
7979
fclose(omsg);
8080

81+
/* now decode it again */
82+
memset(&wm1, 0, sizeof(wm1));
83+
err = whack_cbor_decode_msg(&wm1, wm_buf, &outsize);
84+
if(err) { printf("decode error: %s\n", err); exit(6); }
85+
86+
passert(wm1.whack_shutdown == TRUE);
87+
8188
report_leaks();
8289

8390
tool_close_log();

0 commit comments

Comments
 (0)