[Toybox] grep getdelim() and errno

enh enh at google.com
Thu Mar 11 16:16:52 PST 2021


attached is the patch that's the reason why this morning i went through the
other places where toybox looks at errno without first checking that the
function call failed...

i think we should take this fix since POSIX allows errno to be clobbered by
a successful call to most functions ["The setting of errno after a
successful call to a function is unspecified unless the description of that
function specifies that errno shall not be modified"], and that certainly
happens in practice.

there's definitely something odd going on here though. the reason i've not
added a test case is that i can't reproduce this at all on glibc/x86-64,
nor on bionic/x86-64. i can reproduce it on bionic/arm64, but not quite as
reliably as the person who hit this in practice while doing real work (and
they only see it 1/100 runs). but what we do have in common is that we're
seeing errno set to ENOENT (!), and i have no explanation for how
getdelim() is clobbering errno with that specific value. so i think we have
more than one bug, but this is a bug regardless, so... patch attached.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20210311/c7774ebb/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: b5d5f38.diff
Type: text/x-patch
Size: 910 bytes
Desc: not available
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20210311/c7774ebb/attachment-0002.bin>


More information about the Toybox mailing list