From: Pali Rohár Date: Fri, 1 Jan 2021 15:39:52 +0000 (+0100) Subject: pppoe: Do not use %.*v and %.*B formats which are unsupported by C printf() X-Git-Tag: ppp-2.5.0~50^2~3 X-Git-Url: https://git.ozlabs.org/?p=ppp.git;a=commitdiff_plain;h=8a244973b319be723a6e817dd123b558f528d6c9 pppoe: Do not use %.*v and %.*B formats which are unsupported by C printf() Signed-off-by: Pali Rohár --- diff --git a/pppd/plugins/pppoe/common.c b/pppd/plugins/pppoe/common.c index 9140ea9..f57d9de 100644 --- a/pppd/plugins/pppoe/common.c +++ b/pppd/plugins/pppoe/common.c @@ -203,7 +203,7 @@ void pppoe_printpkt(PPPoEPacket *packet, void (*printer)(void *, char *, ...), void *arg) { int len = ntohs(packet->length); - int i, tag, tlen, text; + int i, j, tag, tlen, text; switch (ntohs(packet->ethHdr.h_proto)) { case ETH_PPPOE_DISCOVERY: @@ -300,12 +300,13 @@ void pppoe_printpkt(PPPoEPacket *packet, } if (tlen) { if (text) - printer(arg, " %.*v", tlen, &packet->payload[i]); - else if (tlen <= 32) - printer(arg, " %.*B", tlen, &packet->payload[i]); - else - printer(arg, " %.32B... (length %d)", - &packet->payload[i], tlen); + printer(arg, " %.*s", tlen, &packet->payload[i]); + else { + for (j = 0; j < tlen && j < 32; j++) + printer(arg, " %02x", (unsigned) *(&packet->payload[i]+j)); + if (j < tlen) + printer(arg, "... (length %d)", tlen); + } } printer(arg, "]"); }