> On Mar 1, 2017, at 3:47 AM, Thomas Stüfe <thomas.stu...@gmail.com> wrote:
> 
> Hi Matthias,
> 
> the fix makes sense, this is very clearly a bug.
> 
> I'd suggest a simpler fix though:
> 
>                      end -= 4; // make sure there are 4 bytes to read at
> start
> -                     while (start < end) {
> +                    while (start <= end) {
> 

+1.

Cheers,
Henry


> Note that the code has a diffent bug too, very unlikely but not impossible
> to hit:
> 
> 321         ssize_t count = read(fd, buf, CHUNK_SIZE);
> 322         if (count >= MIN_SIZE) {
> 
> We attempt to read CHUNK_SIZE bytes and require the read to have returned
> at least MIN_SIZE (something like 30ish bytes). If not, jexec fails.
> 
> read may have been interrupted (EINTR) or may have returned less bytes than
> MIN_SIZE, so it should read in a loop til eof or CHUNK_SIZE bytes are read.
> 
> Kind Regards, Thomas
> 
> 
> On Wed, Mar 1, 2017 at 10:23 AM, Baesken, Matthias <matthias.baes...@sap.com
>> wrote:
> 
>> Ping ...
>> 
>> Can I get a review please for the change ?
>> 
>> 
>> Thanks, Matthias
>> 
>> From: Baesken, Matthias
>> Sent: Donnerstag, 23. Februar 2017 12:28
>> To: 'core-libs-dev@openjdk.java.net' <core-libs-dev@openjdk.java.net>
>> Cc: Langer, Christoph <christoph.lan...@sap.com>; Erik Joelsson (
>> erik.joels...@oracle.com) <erik.joels...@oracle.com>; 'Michel Trudeau' <
>> michel.trud...@oracle.com>
>> Subject: RE: RFR [XS] : 8175000 : jexec fails to execute simple
>> helloworld.jar
>> 
>> Here is  the webrev for jdk9 :
>> 
>> http://cr.openjdk.java.net/~mbaesken/webrevs/8175000/
>> 
>> 
>> ?  And btw I really wonder  - is  jexec still needed in future jdk's like
>> jdk10  ? Seems it is not used much .
>> 
>> ?
>> 
>> In case  jexec will stay in  the jdk  I might add a test for the tool as
>> well, if there is interest  ( could not really find one that tests
>> execution of a simple jar-file with jexec).
>> 
>> Best regards, Matthias
>> 
>> 
>> From: Baesken, Matthias
>> Sent: Donnerstag, 23. Februar 2017 07:39
>> To: 'core-libs-dev@openjdk.java.net' <core-libs-dev@openjdk.java.net
>> <mailto:core-libs-dev@openjdk.java.net>>
>> Cc: Langer, Christoph <christoph.lan...@sap.com<mailto:
>> christoph.lan...@sap.com>>; Erik Joelsson (erik.joels...@oracle.com<
>> mailto:erik.joels...@oracle.com>) <erik.joels...@oracle.com<mailto:
>> erik.joels...@oracle.com>>
>> Subject: RE: RFR [XS] : 8175000 : jexec fails to execute simple
>> helloworld.jar
>> 
>> Hello,  probably I should add the info that the fix is needed  in jdk9 as
>> well , not only jdk10 .
>> 
>> Without the fix jdk9/10    show this error  when executing a small
>> example jar :
>> 
>> /myjdk9/images/jdk/lib/jexec      /java_test/hellojar/helloworld.jar
>> invalid file (bad magic number): Exec format error
>> 
>> with the fix :
>> 
>> jdk/lib/jexec    /java_test/hellojar/helloworld.jar
>> Hello world from a jar file
>> 
>> 
>> And btw I really wonder  - is  jexec still needed in future jdk's like
>> jdk10  ? Seems it is not used much .
>> 
>> Best regards, Matthias
>> 
>> 
>> From: Baesken, Matthias
>> Sent: Mittwoch, 22. Februar 2017 18:16
>> To: core-libs-dev@openjdk.java.net<mailto:core-libs-dev@openjdk.java.net>
>> Cc: Langer, Christoph <christoph.lan...@sap.com<mailto:
>> christoph.lan...@sap.com>>; Erik Joelsson (erik.joels...@oracle.com<
>> mailto:erik.joels...@oracle.com>) <erik.joels...@oracle.com<mailto:
>> erik.joels...@oracle.com>>
>> Subject: RFR [XS] : 8175000 : jexec fails to execute simple helloworld.jar
>> 
>> Hello , when looking into  the jexec build I noticed   that  execution of
>> a simple helloworld.jar   with jexec does not work any more.
>> 
>> I did a little patch for this which adjusted the addition done with  CR
>> 8156478: 3 Buffer overrun defect groups in jexec.c<https://javapartner.
>> oracle.com/mproxy/repository/technology/java2/jdk9/jdk/rev/4f96129b45ee>
>> .
>> 
>> Could I have a review ( just a diff this time is provided because of
>> infrastructure issues) for it ?
>> 
>> 
>> Thanks, Matthias
>> 
>> Bug :
>> https://bugs.openjdk.java.net/browse/JDK-8175000
>> 
>> 
>> Diff for jdk10  :
>> 
>> # HG changeset patch
>> # User mbaesken
>> # Date 1487782485 -3600
>> #      Wed Feb 22 17:54:45 2017 +0100
>> # Node ID 93d55a711f3b1c3f282e6889c24d13f16d4a4548
>> # Parent  884872263accabd4ab68d005abd4e5393144aa4f
>> 8175000: jexec fails to execute simple helloworld.jar
>> 
>> diff --git a/src/java.base/unix/native/launcher/jexec.c
>> b/src/java.base/unix/native/launcher/jexec.c
>> --- a/src/java.base/unix/native/launcher/jexec.c
>> +++ b/src/java.base/unix/native/launcher/jexec.c
>> @@ -331,8 +331,9 @@
>>                 off_t end   = start  + xlen;
>> 
>>                 if (end <= count) {
>> -                    end -= 4; // make sure there are 4 bytes to read at
>> start
>> -                    while (start < end) {
>> +                    // make sure there are 4 bytes to read at start
>> +                    end -= 3;
>> +                    while ((start < end) && (start < count-3)) {
>>                         off_t xhid  = SH(buf, start);
>>                         off_t xdlen = SH(buf, start + 2);
>> 
>> 

Reply via email to