Hide Forgot
Description of problem: - off-by-one error in the bufsize parameter given to readlink() - broken error handling (len < 0 comparison of unsigned variable by is useless) Version-Release number of selected component (if applicable): util-linux-ng-2.17.2-9.el6
The latest RHEL61 built is util-linux-ng-2.17.2-11.el6, the package was already reviewed and the bugs fixed.... See https://bugzilla.redhat.com/show_bug.cgi?id=678378 *** This bug has been marked as a duplicate of bug 678378 ***
Ah... the problem with size_t vs. ssize_t should be probably fixed.
Created attachment 493166 [details] a reproducer
$ curl -o bz684037.c 'https://bugzilla.redhat.com/attachment.cgi?id=493166' $ sh bz684037.c ... bz684037.c: line 4: 31309 Segmentation fault LD_PRELOAD=./readlink.so valgrind namei lnk With the fixed version, it gives me: namei: failed to read symlink: lnk: Success
(In reply to comment #8) > With the fixed version, it gives me: > namei: failed to read symlink: lnk: Success Oops, forgot to set a meaningful errno... --- a/bz684037.c +++ b/bz684037.c @@ -5,6 +5,7 @@ exit $? #endif #include <unistd.h> +#include <errno.h> ssize_t readlink(const char *path, char *buf, size_t bufsize) { @@ -12,5 +13,6 @@ (void) buf; (void) bufsize; + errno = EPERM; return -1; } With the patch above, it says: namei: failed to read symlink: lnk: Operation not permitted
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHBA-2011-0699.html