On Tue, 25 Aug 2015 20:20:20 +0200 (CEST), Karl wrote:
> Irrwahn:
>> On Tue, 25 Aug 2015 19:24:17 +0200 (CEST), Karl wrote:
>>> Tilt!:
>>>> i wonder if we ever get to see such SSIDs from iwlist anyway -
>>>> how is it supposed to print SSIDs that contain the zerobyte ...
>>>
>>> iwlib.c line 989..995:
>>>       /* Is it a non-ASCII character ??? */
>>>       if(isescape || !isascii(*s) || iscntrl(*s))
>>>         {
>>>           /* Escape */
>>>           sprintf(d, "\\x%02X", *s);
>>>           d += 4;
>>>         }
>>
>> Thank you. One problem, though: 
>> Not a single version of the Wireless Tools for Linux sources I 
>> happened to stumble upon doing a quick internet search contains 
>> this snippet, or anything remotely like it. Care to share with us, 
>> where this originates?
> 
> $ apt-get source wireless-tools
> $ cd wireless-tools-30~pre9
> $ ls iw*.[ch]
> iwconfig.c  iwevent.c  iwgetid.c  iwlib.c  iwlib.h  iwlib-private.h  iwlist.c 
>  iwmulticall.c  iwpriv.c  iwspy.c
> $ grep download debian/copyright 
> It was downloaded from: 
> http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html
> $
> 
> 
> http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html 
> under "Wireless Tools latest versions":
> ///
>  The main features of the latest beta is support for non-ASCII ESSIDs (such 
> as localised ESSID), support for displaying Scanning Capabilities, slightly 
> bigger scan buffer, fixing minor bug iwconfig parser and minor enhancement to 
> ifrename :
> 
>     Wireless Tools version 30-pre9 (beta) 
> ///
> 
>> Or give a little more context, particularly 
>> how isescape is set?
> 
> iwlib.c line 971..981:
>       /* Escape the escape to avoid ambiguity.
>        * We do a fast path test for performance reason. Compiler will
>        * optimise all that ;-) */
>       if(*s == '\\')
>         {
>           /* Check if we would confuse it with an escape sequence */
>           if((e-s) > 4 && (s[1] == 'x')
>              && (isxdigit(s[2])) && (isxdigit(s[3])))
>             {
>               isescape = 1;
>             }

Thanks a lot, Karl! I was stupid enough to not simply apt-get the sources. 
I checked, it is exactly the function that is used when printing the scan 
results. 

That makes escaping for file system path purposes quite easy, as everything 
is already escaped, except the notorious '/'. however, that is already taken 
care of in my modified version of Ed's netman. 

Now, what about the consumers? I found out that wpa_supplicant can digest 
printf-style escaping, provided the quoted string is prefixed with 'P':

  # ssid: SSID (mandatory); network name in one of the optional formats:
  #     - an ASCII string with double quotation
  #     - a hex string (two characters per octet of SSID)
  #     - a printf-escaped ASCII string P"<escaped string>"

I was not able to find information on how ifup passes on the information 
from the wpa-ssid field. Assuming it is just handed down as is, the only 
change in netman would be to prefix the SSID with 'P'. 

-- 
Irrwahn

 
_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to