]> www.infradead.org Git - users/dwmw2/qemu.git/commitdiff
util/getauxval: Ensure setting errno if not found
authorVivian Wang <uwu@dram.page>
Tue, 23 Jul 2024 10:05:44 +0000 (18:05 +0800)
committerRichard Henderson <richard.henderson@linaro.org>
Mon, 29 Jul 2024 21:59:23 +0000 (07:59 +1000)
Sometimes zero is a valid value for getauxval (e.g. AT_EXECFD). Make
sure that we can distinguish between a valid zero value and a not found
entry by setting errno.

Assumes that getauxval from sys/auxv.h sets errno correctly.

Signed-off-by: Vivian Wang <uwu@dram.page>
Message-ID: <20240723100545.405476-2-uwu@dram.page>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
util/getauxval.c

index b124107d61eadf49bd6182f0633c02802304b9bd..ad4f6686a8abfc88cb51b75a82f284fed858cc5e 100644 (file)
@@ -95,6 +95,7 @@ unsigned long qemu_getauxval(unsigned long type)
         }
     }
 
+    errno = ENOENT;
     return 0;
 }
 
@@ -104,7 +105,10 @@ unsigned long qemu_getauxval(unsigned long type)
 unsigned long qemu_getauxval(unsigned long type)
 {
     unsigned long aux = 0;
-    elf_aux_info(type, &aux, sizeof(aux));
+    int ret = elf_aux_info(type, &aux, sizeof(aux));
+    if (ret != 0) {
+        errno = ret;
+    }
     return aux;
 }
 
@@ -112,6 +116,7 @@ unsigned long qemu_getauxval(unsigned long type)
 
 unsigned long qemu_getauxval(unsigned long type)
 {
+    errno = ENOSYS;
     return 0;
 }