On 8/10/14, Vadim Zhukov <[email protected]> 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++;
>
>