about summary refs log tree commit diff
path: root/frida_mode/src
diff options
context:
space:
mode:
authorYour Name <you@example.com>2021-11-29 17:38:06 +0000
committerYour Name <you@example.com>2021-11-29 17:38:06 +0000
commitb0c51964b7f1ca57455268ab3c65117526ba9742 (patch)
treee60508142ea6815b3fac30a7060021ae6016db5d /frida_mode/src
parent2cdd75a27493618d0e2a37a6af3623ee191ce5d7 (diff)
downloadafl++-b0c51964b7f1ca57455268ab3c65117526ba9742.tar.gz
Add support for parsing zero as a configuration setting
Diffstat (limited to 'frida_mode/src')
-rw-r--r--frida_mode/src/util.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/frida_mode/src/util.c b/frida_mode/src/util.c
index d84b7065..c9ef0edc 100644
--- a/frida_mode/src/util.c
+++ b/frida_mode/src/util.c
@@ -3,6 +3,7 @@
 guint64 util_read_address(char *key) {
 
   char *value_str = getenv(key);
+  char *end_ptr;
 
   if (value_str == NULL) { return 0; }
 
@@ -25,8 +26,17 @@ guint64 util_read_address(char *key) {
 
   }
 
-  guint64 value = g_ascii_strtoull(value_str2, NULL, 16);
-  if (value == 0) {
+  errno = 0;
+
+  guint64 value = g_ascii_strtoull(value_str2, &end_ptr, 16);
+
+  if (errno != 0) {
+
+    FATAL("Error (%d) during conversion: %s", errno, value_str);
+
+  }
+
+  if (value == 0 && end_ptr == value_str2) {
 
     FATAL("Invalid address failed hex conversion: %s=%s\n", key, value_str2);
 
@@ -39,6 +49,7 @@ guint64 util_read_address(char *key) {
 guint64 util_read_num(char *key) {
 
   char *value_str = getenv(key);
+  char *end_ptr;
 
   if (value_str == NULL) { return 0; }
 
@@ -53,8 +64,17 @@ guint64 util_read_num(char *key) {
 
   }
 
+  errno = 0;
+
   guint64 value = g_ascii_strtoull(value_str, NULL, 10);
-  if (value == 0) {
+
+  if (errno != 0) {
+
+    FATAL("Error (%d) during conversion: %s", errno, value_str);
+
+  }
+
+  if (value == 0 && end_ptr == value_str) {
 
     FATAL("Invalid address failed numeric conversion: %s=%s\n", key, value_str);