This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Re: PATCH: natPlainDatagramSocketImplXXXX.cc offset bug.
On Sun, 2004-03-21 at 20:52, Michael Koch wrote:
> Am Sonntag, 21. März 2004 20:14 schrieb Norbert Frese:
> > This patch fixes a buffer-offset related bug in
> > natPlainDatagramSocketImplPosix.cc and
> > natPlainDatagramSocketImplWin32.cc.
> >
> > With this patch all the Mauve
> > gnu.testlet.java.net.DatagramPacket.DatagramPacketOffset tests
> > pass.
> >
> > Norbert
> >
> >
> > 2004-03-21 Norbert Frese <postfach@nfrese.net>
> >
> > * gnu/java/net/natPlainDatagramSocketImplPosix.cc
> > (peekData): Do not subtract buffer offset from maxlen.
> > (receive): Likewise.
> > * gnu/java/net/natPlainDatagramSocketImplWin32.cc
> > (peekData): Do not subtract buffer offset from maxlen.
> > (receive): Likewise
> >
> >
> > Index: gcc/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc
> > ===================================================================
> > RCS file:
> > /cvs/gcc/gcc/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc,
> >vretrieving revision 1.7 diff -u -r1.7
> > natPlainDatagramSocketImplPosix.cc
> > --- gcc/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc 17
> > Mar 2004 08:10:28 -0000 1.7
> > +++ gcc/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc 21
> > Mar 2004 18:10:09 -0000
> > @@ -210,7 +210,7 @@
> > union SockAddr u;
> > socklen_t addrlen = sizeof(u);
> > jbyte *dbytes = elements (p->getData()) + p->getOffset();
> > - jint maxlen = p->maxlen - p->getOffset();
> > + jint maxlen = p->maxlen; // Max bytes starting from offset.
> > ssize_t retlen = 0;
> >
> > // Do timeouts via select since SO_RCVTIMEO is not always
> > available. @@ -335,7 +335,7 @@
> > union SockAddr u;
> > socklen_t addrlen = sizeof(u);
> > jbyte *dbytes = elements (p->getData()) + p->getOffset();
> > - jint maxlen = p->maxlen - p->getOffset();
> > + jint maxlen = p->maxlen; // Max bytes starting from offset.
> > ssize_t retlen = 0;
> >
> > // Do timeouts via select since SO_RCVTIMEO is not always
> > available. Index:
> > gcc/libjava/gnu/java/net/natPlainDatagramSocketImplWin32.cc
> > ===================================================================
> > RCS file:
> > /cvs/gcc/gcc/libjava/gnu/java/net/natPlainDatagramSocketImplWin32.cc,
> >vretrieving revision 1.8 diff -u -r1.8
> > natPlainDatagramSocketImplWin32.cc
> > --- gcc/libjava/gnu/java/net/natPlainDatagramSocketImplWin32.cc 17
> > Mar 2004 08:10:28 -0000 1.8
> > +++ gcc/libjava/gnu/java/net/natPlainDatagramSocketImplWin32.cc 21
> > Mar 2004 18:10:10 -0000
> > @@ -202,7 +202,7 @@
> > union SockAddr u;
> > socklen_t addrlen = sizeof(u);
> > jbyte *dbytes = elements (p->getData()) + p->getOffset();
> > - jint maxlen = p->maxlen - p->getOffset();
> > + jint maxlen = p->maxlen; // Max bytes starting from offset.
> > ssize_t retlen = 0;
> >
> > if (timeout > 0)
> > @@ -321,7 +321,7 @@
> > union SockAddr u;
> > socklen_t addrlen = sizeof(u);
> > jbyte *dbytes = elements (p->getData()) + p->getOffset();
> > - jint maxlen = p->maxlen - p->getOffset();
> > + jint maxlen = p->maxlen; // Max bytes starting from offset.
> > ssize_t retlen = 0;
> >
> > if (timeout > 0)
>
> What about the code changes I proposed ?
I agree: To get rid of the local 'maxlen' variable would be prettier. It
is used only once anyway. Do you want me to change this and create
another patch?
Norbert