On Sat, Feb 22, 2020 at 06:38:36PM +0100, Stefan Sperling wrote:
>
> This fixes display of hex SSIDs in 'ifconfig joinlist' and prevents a
> negative number being passed to printf on the following line when 'maxlen'
> ends up being capped below the maximum value returned from len_string():
>
> printf("%-*s", maxlen - len, " ");
>
> Hex SSIDs can be as wide as IEEE80211_NWID_LEN * 2 + 2 /* "0x" */
>
> ok?
ok kevlo@
>
> diff c20bd74017ceeadb2db0f78a352ed1f1e2b77c2b /usr/src
> blob - e1dc9dbb07bf109c3ec7f5fd4d851a7dbb5692f1
> file + sbin/ifconfig/ifconfig.c
> --- sbin/ifconfig/ifconfig.c
> +++ sbin/ifconfig/ifconfig.c
> @@ -2571,16 +2571,14 @@ join_status(void)
>
> maxlen = 0;
> for (i = 0; i < ja.ja_nodes; i++) {
> len = len_string(jn[i].i_nwid, jn[i].i_len);
> if (len > maxlen)
> maxlen = len;
> }
> - if (maxlen > IEEE80211_NWID_LEN)
> - maxlen = IEEE80211_NWID_LEN - 1;
>
> for (i = 0; i < ja.ja_nodes; i++) {
> printf("\t ");
> if (jn[i].i_len > IEEE80211_NWID_LEN)
> jn[i].i_len = IEEE80211_NWID_LEN;
> len = print_string(jn[i].i_nwid, jn[i].i_len);
> printf("%-*s", maxlen - len, " ");
>