On 8/10/14, Vadim Zhukov <persg...@gmail.com> wrote: > This changes the way ifconfig(8) to print lines like 'crazy "nwid', > i.e., containing double quotes inside the data being output. > At the present, such lines will be printed in the following way: > > "crazy "nwid" > > And this makes everything that tries to parse such lines go crazy > in their turn. I propose to force unambigious hexadecimal output > in this case.
Caution: Slippery slope ahead! Any other "weird" characters that may confuse parsers? I see a bunch of networks with single-quotes in them in my area. What about back-slashes, back-ticks, exclamation-marks, hash-marks, ...? --patrick > Objections/okays? > -- > WBR, > Vadim Zhukov > > > Index: ifconfig.c > =================================================================== > RCS file: /cvs/src/sbin/ifconfig/ifconfig.c,v > retrieving revision 1.287 > diff -u -p -r1.287 ifconfig.c > --- ifconfig.c 12 Jul 2014 19:58:17 -0000 1.287 > +++ ifconfig.c 10 Aug 2014 21:11:03 -0000 > @@ -1499,8 +1499,8 @@ print_string(const u_int8_t *buf, int le > > if (len < 2 || buf[0] != '0' || tolower(buf[1]) != 'x') { > for (; i < len; i++) { > - /* Only print 7-bit ASCII keys */ > - if (buf[i] & 0x80 || !isprint(buf[i])) > + /* Only print 7-bit ASCII keys, excluding double quote > */ > + if (buf[i] & 0x80 || !isprint(buf[i]) || buf[i] == '"') > break; > if (isspace(buf[i])) > hasspc++; > >