<AWT Dev> Review Request: JDK-8179014 JFileChooser with Windows look and feel crashes on win 10 + jre-8 131
Phil Race
philip.race at oracle.com
Fri May 5 17:00:54 UTC 2017
OK +1 to this fix. Please follow RDP2 procedures to request this fix in 9 ..
-phil.
On 05/04/2017 02:55 AM, Prem Balakrishnan wrote:
>
> Thanks Kevin and Phil for the review.
>
> I shouldn't have missed the 'break' statement. Mistake on my part :(
>
> The crash fix null check is in thrid switch case.
>
> As a good practice of making the method robust, I added the null check
> in first switch case as well.
>
> The null checks have been added in method:
>
> static jstring jstringFromSTRRET(JNIEnv* env, LPITEMIDLIST pidl,
> STRRET* pStrret)
>
> This method is invoked from below methods in ShellFolder2.cpp
>
> getDisplayNameOf()
>
> doGetColumnValue()
>
> createColumnInfo()
>
> The crash was due to function call getDisplayNameOf() --- which gets
> fixed if we add null check only in third swich case.
>
> The null check in first switch case is more of making the code robust
> against possible crash.
>
> I examined calls to these native methods getDisplayNameOf(),
> doGetColumnValue() & createColumnInfo() -
>
> Only getDisplayNameOf() return has null checks on java side. There are
> no checks on java side for string being null for other two methods.
>
> These two methods are invoked from FilePane.java class, which is used
> only in XXXXFileChooserUI classes.
>
> I haven't seen any side effect in my jtreg test runs of JFileChooser
> with this fix.
>
> The null check for first switch statement never existed and there were
> no crashes reported. What I have done is more of preventive check.
>
> Request you to review.
>
> http://cr.openjdk.java.net/~pkbalakr/8179014/webrev.01/
> <http://cr.openjdk.java.net/%7Epkbalakr/8179014/webrev.01/>
>
> Regards,
>
> Prem
>
> *From:*Phil Race
> *Sent:* Saturday, April 29, 2017 11:00 PM
> *To:* Kevin Rushforth
> *Cc:* Prem Balakrishnan; Alexander Scherbatiy; Sergey Bylokhov;
> awt-dev at openjdk.java.net <mailto:awt-dev at openjdk.java.net>
> *Subject:* Re: <AWT Dev> Review Request: JDK-8179014 JFileChooser with
> Windows look and feel crashes on win 10 + jre-8 131
>
> I agree. This switch statement clearly was written in the expectation
> that each case executed return.
>
> And as I said offline pls confirm that you are confident that all
> return paths actually handle that null which may not have been tested
> in practice before now. There seemed to be several code paths.
>
> -Phil.
>
>
> On Apr 29, 2017, at 5:33 AM, Kevin Rushforth
> <kevin.rushforth at oracle.com <mailto:kevin.rushforth at oracle.com>> wrote:
>
> I'm not a "R"eviewer for AWT, but this part of the change looks
> wrong to me:
>
> case STRRET_CSTR :
>
> + if (pStrret->cStr != NULL) {
>
> return JNU_NewStringPlatform(env, reinterpret_cast<const char*>(pStrret->cStr));
>
> + }
>
> case STRRET_OFFSET :
>
>
>
> Did you really intended that a NULL pStrret->cStr pointer should
> fall through to the next case (STRRET_OFFSET)? If so, then a
> comment is in order because this seems odd.
>
> -- Kevin
>
>
> Prem Balakrishnan wrote:
>
> Hi*,*
>
> Please review fix for JDK 9,
>
> *Bug:*https://bugs.openjdk.java.net/browse/JDK-8179014
>
> *Webrev:*http://cr.openjdk.java.net/~pkbalakr/8179014/webrev.00/
> <http://cr.openjdk.java.net/%7Epkbalakr/8179014/webrev.00/>
>
> *Issue:*
>
> JFileChooser with Windows LAF crashes on Windows 10.
>
> This issue is reproducible only on Windows 10 (v1703).
>
> Creating GodMode directory is the only way we are able to
> reproduce this issue.
>
> *Cause:*
>
> IShellFolder::GetDisplayNameOf() method is used to retrieve the
> display name of folder/subfolder using the GUID.
>
> This method returns NULL for GodMode directory [i.e., folder
> created with name: GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}].
>
> In previous version of windows (tested on v1511) this call returns
> name “GodMode”.
>
> Hence we get crash when processing the return data from the this
> method.
>
> Why only on Windows LAF?
>
> Unlike other LAFs in Windows LAF “useSystemExtensionHiding” is set
> to true.
>
> This check avoids the call to IShellFolder::GetDisplayNameOf()
> method in all other LAF’s.
>
> Hence crash is not reported on other LAFs.
>
> *Fix:*
>
> Added missing NULL checks in native method.
>
> This results in native method returning NULL in this case, which
> has already been handled on java side, hence no additional change
> is needed.
>
> Regards,
>
> Prem
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20170505/ce2eb032/attachment-0001.html>
More information about the awt-dev
mailing list