neels has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-pfcp/+/30502 )
Change subject: gtlv: decoding error: log size limited hexdump of IE ......................................................................
gtlv: decoding error: log size limited hexdump of IE
When a decoding error is encountered, log the value part of the root cause as hexdump, but at most 16 bytes (16*3 chars as hexdump).
Contrived example of the change: before this patch:
<-tx- PFCP seq-4 ASSOC_SETUP_RESP: 0: Invalid FQDN (-22: Invalid argument) <-tx- PFCP seq-4 ASSOC_SETUP_RESP: 0: tag 0x3c = Node ID: Error while decoding this IE (-22: Invalid argument)
after this patch:
<-tx- PFCP seq-4 ASSOC_SETUP_RESP: 0: Invalid FQDN (-22: Invalid argument) <-tx- PFCP seq-4 ASSOC_SETUP_RESP: 0: tag 0x3c = Node ID: Error while decoding this IE. L=20 V=[ 02 07 65 78 61 6d 70 6c 65 03 63 6f 6d 01 02 03 ...] (-22: Invalid argument)
Change-Id: Ie814a117db3dfea32cf3f01cf124a2e472cb869f --- M src/libosmo-gtlv/gtlv_dec_enc.c 1 file changed, 6 insertions(+), 2 deletions(-)
Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved fixeria: Looks good to me, but someone else must approve
diff --git a/src/libosmo-gtlv/gtlv_dec_enc.c b/src/libosmo-gtlv/gtlv_dec_enc.c index 385ebfa..37e8a51 100644 --- a/src/libosmo-gtlv/gtlv_dec_enc.c +++ b/src/libosmo-gtlv/gtlv_dec_enc.c @@ -218,8 +218,12 @@ if (!iec->dec_func) RETURN_ERROR(-EIO, gtlv->ti, "IE definition lacks a dec_func()"); rc = iec->dec_func(decoded_struct, membof(obj, obj_maxlen, memb_ofs), gtlv); - if (rc) - RETURN_ERROR(rc, gtlv->ti, "Error while decoding this IE"); + if (rc) { + const size_t maxlen = 16; + RETURN_ERROR(rc, gtlv->ti, "Error while decoding this IE. L=%zu V=[ %s%s]", + gtlv->len, osmo_hexdump(gtlv->val, OSMO_MIN(maxlen, gtlv->len)), + gtlv->len > maxlen ? "..." : ""); + } }
if (multi_count_p) {