This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]