about summary refs log tree commit diff
path: root/frida_mode/src
diff options
context:
space:
mode:
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);