[RFC][PATCH][BZ 15846] Add error reporting (via errno) to getauxval().

Brooks Moses bmoses@google.com
Tue Dec 10 09:36:00 GMT 2013


As discussed in the recent thread on my $EXEC_ORIGIN patch and in BZ way 
of reporting an error condition.  It currently returns zero on error, 
but this may also be a valid result for some auxv entries.  As there is 
no clear invalid result for all current and future auxv entries, this 
patch sets errno (following a suggestion in the BZ entry).

This is still an RFC because I haven't yet tested it; at present it's a 
strawman to confirm that the proposed solution has consensus approval.

---
2013-12-10  Brooks Moses  <bmoses@google.com>

	* misc/getauxval.c: Include errno.h.
	(__getauxval): Set errno to ENOENT if the requested type is not
	found.

 misc/getauxval.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/misc/getauxval.c b/misc/getauxval.c
index e0317fd..dd4c8ec 100644
--- a/misc/getauxval.c
+++ b/misc/getauxval.c
@@ -16,6 +16,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sys/auxv.h>
+#include <errno.h>
 #include <ldsodefs.h>
 
 
@@ -32,6 +33,8 @@ __getauxval (unsigned long int type)
   for (p = GLRO(dl_auxv); p->a_type != AT_NULL; p++)
     if (p->a_type == type)
       return p->a_un.a_val;
+
+  __set_errno (ENOENT);
   return 0;
 }
 
-- 
1.8.5.1



More information about the Libc-alpha mailing list