Request for code review 6512101: Incorrect encoding in NetworkInterface.getDisplayName()

Dmitry Samersoff dmitry.samersoff at oracle.com
Sun Nov 11 11:03:40 PST 2012


Frank,

Changes look good for me.

But it might be better to fall back to original behavior if
MultiByteToWideChar return error, rather than abort.

-Dmitry

On 2012-11-07 13:08, Frank Ding wrote:
> Hi guys,
>   Could you please take a look at patch below aimed to resolve existing
> bug http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6512101 ?
>   http://cr.openjdk.java.net/~dingxmin/6512101/webrev.01/
> 
>   I happen to have a Chinese Win 7 environment.  "buggy.png" is current
> output of test case described in bug system whereas "fixed.png" is the
> output after the my patch is applied.
> 
> http://cr.openjdk.java.net/~dingxmin/6512101/buggy.png
> http://cr.openjdk.java.net/~dingxmin/6512101/fixed.png
> 
>   The patch simply converts to wide chars encoded in CP_OEMCP by calling
> MultiByteToWideChar.  We have confirmed a guy from Microsoft who said that
> 
> BEGIN QUOTE
> I'm not sure how common it is to call the Java code that results in
> calling the GetIfTable API but I would guess it does not happen that
> often. Additionally, if it's rare that the adapter contains the accented
> characters, it would definitely be quite easy to miss in testing.
> 
> I have not found any documentation about the encoding of the bDescr
> string unfortunately. I did, however, debug through the API and located
> the place where it is generated. It is getting converted from a UTF-16
> string to a single-byte string using a conversion like this:
> 
> WideCharToMultiByte(
> CP_OEMCP,
> WC_NO_BEST_FIT_CHARS,
> <source string>,
> -1,
> IfRow->bDescr,
> <size>,
> NULL,
> NULL);
> 
> I have checked the source for Windows Vista, 2008, Windows 7, and
> Windows 2008 R2. It is using CP_OEMCP in all of them. So using the
> reverse conversion in your code using CP_OEMCP should be safe.
> Alternatively, you can use the GetIfTable2 function
> (http://msdn.microsoft.com/en-us/library/windows/desktop/aa365945^(v=vs.85).aspx
> ) which returns the same information in the original UTF-16 encoding.
> END QUOTE
> 
>   The link below may be helpful to the second param of
> WideCharToMultiByte.
> http://blogs.msdn.com/b/oldnewthing/archive/2012/05/04/10300670.aspx
> 
> You comments are appreciated.
> Best regards,
> Frank
> 


-- 
Dmitry Samersoff
Saint Petersburg, Russia, http://devnull.samersoff.net
* There will come soft rains  ...



More information about the net-dev mailing list