GTK+ on Windows doesn't handle characters with ascii value greater than 127.
Unfortunately it is not enough to just use isprint(c) due to this.
There are similar problems with some other dissectors (e.g. COPS), but the behaviour for many protocols has been improved in Ethereal 0.9.9 on Windows since the format_text routine now checks for ascii values greater than 127.
Extract from the format_text routine in strutil.c:
#ifdef _WIN32
/*
* XXX - "isprint()" can return "true" for non-ASCII characters, but
* those don't work with GTK+ on Windows, as GTK+ on Windows assumes
* UTF-8 strings. Until we fix up Ethereal to properly handle
* non-ASCII characters in all output (both GUI displays and text
* printouts) on all platforms including Windows, we work around
* the problem by escaping all characters that aren't printable ASCII.
*/
if (c >= 0x20 && c <= 0x7f) {
#else
if (isprint(c)) {
#endif
Flavio Poletti wrote:
>
> Hi all,
>
> I notice a different behaviour in Windows and Linux regarding RADIUS
> Access Request messages dissection. In particular, the User Password field
> (id #2) is displayed correctly under Linux, but is completely "ignored" in
> Windows (i.e. an empty line is shown; however, it is correctly selected in
> the hex dump). I notice that the problem was there at least since release
> 0.9.5.
>
> Unfortunately, I can't test any patch, because I only have a development
> environment under Linux, not under Windows.
>
> Best regards,
>
> Flavio.
>
> --
> Flavio Poletti
> flavio@xxxxxxxxxxx
>
> _______________________________________________
> Ethereal-dev mailing list
> Ethereal-dev@xxxxxxxxxxxx
> http://www.ethereal.com/mailman/listinfo/ethereal-dev
>