RFR: 8229378: jdwp library loader in linker_md.c quietly truncates on buffer overflow
Adam Farley8
adam.farley at uk.ibm.com
Thu Aug 15 11:38:34 UTC 2019
Hi Serguei, Daniel,
Good to hear you like the fix.
My intention with the testing was to make sure my change didn't break
anything else. I didn't do a code paths check before I ran it though;
saturation run.
As for writing a new test, I'm finding it tricky.
Here's the current flow:
Step 1) VM initialises.
Step 2) VM loads a couple of libraries and shuts down if one or more paths
is too long in sun.boot.library.path.
Step 3) JDWP initializes
Step 4) JDWP loads a library and shuts down if one or more paths is too
long in sun.boot.library.path.
As you can see, Step 2 prevents us from reaching Step 4 with a
too-long-path (required to cause failure).
I worked around that with my webrev by disabling the bit in os.cpp that
enacts Step 2.
Since my hack will be removed in the final webrev, we need another way to
reach step 4.
So what we need to test this change, I believe, is a way to insert Step
2.5) Change the property to include a too-long path.
This allows the VM to start up properly, but gives us the excessive path
we need to test the jdwp fix.
Right now, I'm not seeing a way to do this outside of using the JNI.
1) shell script launches cpp file.
2) cpp starts vm without jdwp.
3) change the property.
4) call jdwp library-loading method directly.
5) check the return code.
This seems messy, but I'm not seeing a way to initialise jdwp from inside
java code (which sounds better to me).
I welcome anyone who can think of a better way to do this.
Best Regards
Adam Farley
IBM Runtimes
"serguei.spitsyn at oracle.com" <serguei.spitsyn at oracle.com> wrote on
15/08/2019 09:25:36:
> From: "serguei.spitsyn at oracle.com" <serguei.spitsyn at oracle.com>
> To: Adam Farley8 <adam.farley at uk.ibm.com>
> Cc: Chris Plummer <chris.plummer at oracle.com>,
> daniel.daugherty at oracle.com, serviceability-dev at openjdk.java.net
> Date: 15/08/2019 09:25
> Subject: Re: RFR: 8229378: jdwp library loader in linker_md.c
> quietly truncates on buffer overflow
>
> Hi Adam,
>
> The fix itself looks Okay to me.
> I'm not sure there is any test case in these test suites which
> provide a coverage for it.
> It looks like you need to develop a unit jtreg unit test for this.
>
> Thanks,
> Serguei
>
>
> On 8/13/19 09:28, Adam Farley8 wrote:
> Hi Serguei, Daniel,
>
> My testing was limited to the bug specific test case I mentioned,
> and the following jdwp tests:
>
> test/jdk/com/sun/jdi/Jdwp*
> test/hotspot/jtreg/serviceability/jdwp
>
> Best Regards
>
> Adam Farley
> IBM Runtimes
>
>
> "serguei.spitsyn at oracle.com" <serguei.spitsyn at oracle.com> wrote on
> 13/08/2019 17:04:43:
>
> > From: "serguei.spitsyn at oracle.com" <serguei.spitsyn at oracle.com>
> > To: daniel.daugherty at oracle.com, Adam Farley8
> > <adam.farley at uk.ibm.com>, Chris Plummer <chris.plummer at oracle.com>
> > Cc: serviceability-dev at openjdk.java.net
> > Date: 13/08/2019 17:08
> > Subject: Re: RFR: 8229378: jdwp library loader in linker_md.c
> > quietly truncates on buffer overflow
> >
> > Hi Adam,
> >
> > I'm looking at your fix.
> > Also interested about your testing.
> >
> > Thanks,
> > Serguei
> >
> > On 8/13/19 08:48, Daniel D. Daugherty wrote:
> > I don't see any information about how this change was tested...
> > Is there something on another email thread?
> >
> > Dan
> >
>
> > On 8/13/19 11:41 AM, Adam Farley8 wrote:
> > Hi Chris,
> >
> > Thanks!
> >
> > I understand we need a second reviewer/sponsor to get this change
> > in. Any volunteers?
> >
> > Best Regards
> >
> > Adam Farley
> > IBM Runtimes
> >
> >
> > Chris Plummer <chris.plummer at oracle.com> wrote on 12/08/2019 21:35:06:
> >
> > > From: Chris Plummer <chris.plummer at oracle.com>
> > > To: Adam Farley8 <adam.farley at uk.ibm.com>, serviceability-
> > dev at openjdk.java.net
> > > Date: 12/08/2019 21:35
> > > Subject: Re: RFR: 8229378: jdwp library loader in linker_md.c
> > > quietly truncates on buffer overflow
> > >
> > > Hi Adam,
> > >
> > > It looks good to me.
> > >
> > > thanks,
> > >
> > > Chris
> > >
> > > On 8/12/19 7:34 AM, Adam Farley8 wrote:
> > > Hi All,
> > >
> > > This is a known bug, mentioned in a code comment.
> > >
> > > Here is the fix for that bug.
> > >
> > > Reviewers and sponsors requested.
> > >
> > > Short version: if you set sun.boot.library.path to
> > > something beyond a system's max path length, the
> > > current code will return an empty string (rather than
> > > printing a useful error message and shutting down).
> > >
> > > This is also a problem if you've specified multiple
> > > paths with a separator, as this code seems to wrongly
> > > assess whether the *total* length exceeds max path
> > > length. So two 200 char paths on windows will cause
> > > failure, as the total length is 400 (which is beyond
> > > max length for windows).
> > >
> > > Note that the os.cpp bit of the webrev will not be included
> > > in the final webrev, it just makes this change trivially
> > > testable.
> > >
> > > Bug: https://bugs.openjdk.java.net/browse/JDK-8229378
> > > Webrev: http://cr.openjdk.java.net/~afarley/8229378/webrev/
> > >
> > >
> > > Best Regards
> > >
> > > Adam Farley
> > > IBM Runtimes
> > >
> > > Unless stated otherwise above:
> > > IBM United Kingdom Limited - Registered in England and Wales with
> > > number 741598.
> > > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire
PO6 3AU
> > Unless stated otherwise above:
> > IBM United Kingdom Limited - Registered in England and Wales with
> > number 741598.
> > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
3AU
> Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with
> number 741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
3AU
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20190815/38ea36ba/attachment.html>
More information about the serviceability-dev
mailing list