GNU bug report logs -
#45595
recvfrom! optional start and end parameter invalid
Previous Next
Reported by: d4ryus <d4ryus <at> mailbox.org>
Date: Fri, 1 Jan 2021 14:59:02 UTC
Severity: normal
Done: lloda <lloda <at> sarc.name>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your message dated Wed, 3 Nov 2021 19:29:03 +0100
with message-id <658A0848-76C3-4ABE-B543-455AFC965623 <at> sarc.name>
and subject line Re: recvfrom! optional start and end parameter invalid
has caused the debbugs.gnu.org bug report #45595,
regarding recvfrom! optional start and end parameter invalid
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
45595: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=45595
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
[Message part 3 (text/plain, inline)]
hi,
the parameter validation for the optional "start" and "end" arguments to
"recvfrom!" are off by one if "end" is passed. From libguile/socket.c
(master commit 64c89458e6):
...
if (SCM_UNBNDP (end))
cend = SCM_BYTEVECTOR_LENGTH (buf);
else
{
cend = scm_to_size_t (end);
if (SCM_UNLIKELY (cend >= SCM_BYTEVECTOR_LENGTH (buf)
|| cend < offset))
scm_out_of_range (FUNC_NAME, end);
}
...
"end" is the optional end argument, "offset" is 0 or "start" if start
was given. The check must be:
cend > SCM_BYTEVECTOR_LENGTH (buf) || cend <= offset
to allow filling the last byte in the buffer and verify that start is
not equal to end. A workaround to skip the validation is to not pass
end. But i think a better way would be to always validate start (and
end), if one (or both) of them are passed. A potentional fix is
attached.
If you need any additional information, please let me know.
Thank you for your great work!
- d4ryus
[recvfrom-fix.patch (text/plain, attachment)]
[Message part 5 (message/rfc822, inline)]
Hi,
Your patch didn't allow for start == end, which is valid as far as I can tell.
With that amended, applied in 1a8294f495cb202f8fcd0f260627c58e7a4c4d10. Thanks!
This bug report was last modified 3 years and 283 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.