[RFC PATCH v2 1/4] Add "base" parameter to string_to_uint_ex

Sahil Siddiq icegambit91 at gmail.com
Wed May 1 17:27:58 UTC 2024


Add a "base" parameter to string_to_uint_ex instead of
hardcoding the base to 10.

* src/filter_qualify.c
  (parse_inject_token): Pass base 10 as argument.
* src/strace.c (is_uid_gid_pair): Likewise.
* src/string_to_uint.c
  (string_to_uint_ex): Introduce "base" parameter.
* src/string_to_uint.h: Likewise.
* src/util.c
  (parse_ts): Pass base 10 as argument.
  (set_tty_index): Likewise.
  (parse_fdinfo_pid): Likewise.

Signed-off-by: Sahil Siddiq <icegambit91 at gmail.com>
---
Changes v1 -> v2:
- src/filter_qualify.c
  (parse_inject_token): Shift changes from patch #2

 src/filter_qualify.c | 4 ++--
 src/strace.c         | 4 ++--
 src/string_to_uint.c | 4 ++--
 src/string_to_uint.h | 4 ++--
 src/util.c           | 6 +++---
 5 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/filter_qualify.c b/src/filter_qualify.c
index be383a5c9..87c1a6106 100644
--- a/src/filter_qualify.c
+++ b/src/filter_qualify.c
@@ -273,7 +273,7 @@ parse_inject_token(const char *const token, struct inject_opts *const fopts,
 		 * F..L+S
 		 */
 		char *end;
-		intval = string_to_uint_ex(val, &end, 0xffff, "+.");
+		intval = string_to_uint_ex(val, &end, 0xffff, "+.", 10);
 		if (intval < 1)
 			return false;
 
@@ -287,7 +287,7 @@ parse_inject_token(const char *const token, struct inject_opts *const fopts,
 			 * F..L+S
 			 */
 			val = end + 2;
-			intval = string_to_uint_ex(val, &end, 0xffff, "+");
+			intval = string_to_uint_ex(val, &end, 0xffff, "+", 10);
 			if (intval < fopts->first || intval == INJECT_LAST_INF)
 				return false;
 			fopts->last = intval;
diff --git a/src/strace.c b/src/strace.c
index 785ee0712..c8f76cada 100644
--- a/src/strace.c
+++ b/src/strace.c
@@ -1528,13 +1528,13 @@ is_uid_gid_pair(const char *username, uid_t *uid_ptr, gid_t *gid_ptr)
 		const unsigned long long max_uid =
 			zero_extend_signed_to_ull((uid_t) -1) - 1;
 		*uid_ptr = (uid_t) string_to_uint_ex(username, NULL,
-						     max_uid, ":");
+						     max_uid, ":", 10);
 	}
 	if (gid_ptr) {
 		const unsigned long long max_gid =
 			zero_extend_signed_to_ull((gid_t) -1) - 1;
 		*gid_ptr = (gid_t) string_to_uint_ex(colon + 1, NULL,
-						     max_gid, ":");
+						     max_gid, ":", 10);
 	}
 	return true;
 }
diff --git a/src/string_to_uint.c b/src/string_to_uint.c
index 6fbd8c168..e06ccac33 100644
--- a/src/string_to_uint.c
+++ b/src/string_to_uint.c
@@ -18,7 +18,7 @@
 long long
 string_to_uint_ex(const char *const str, char **const endptr,
 		  const unsigned long long max_val,
-		  const char *const accepted_ending)
+		  const char *const accepted_ending, int base)
 {
 	char *end;
 	long long val;
@@ -27,7 +27,7 @@ string_to_uint_ex(const char *const str, char **const endptr,
 		return -1;
 
 	errno = 0;
-	val = strtoll(str, &end, 10);
+	val = strtoll(str, &end, base);
 
 	if (str == end || val < 0 || (unsigned long long) val > max_val
 	    || (val == LLONG_MAX && errno == ERANGE))
diff --git a/src/string_to_uint.h b/src/string_to_uint.h
index c02130b51..0bc4d7a92 100644
--- a/src/string_to_uint.h
+++ b/src/string_to_uint.h
@@ -14,12 +14,12 @@
 
 extern long long
 string_to_uint_ex(const char *str, char **endptr,
-		  unsigned long long max_val, const char *accepted_ending);
+		  unsigned long long max_val, const char *accepted_ending, int base);
 
 static inline long long
 string_to_uint_upto(const char *const str, const unsigned long long max_val)
 {
-	return string_to_uint_ex(str, NULL, max_val, NULL);
+	return string_to_uint_ex(str, NULL, max_val, NULL, 10);
 }
 
 static inline int
diff --git a/src/util.c b/src/util.c
index efd390577..4140cb718 100644
--- a/src/util.c
+++ b/src/util.c
@@ -172,7 +172,7 @@ parse_ts(const char *s, struct timespec *t)
 		if (float_val < 0)
 			return -1;
 	} else {
-		int_val = string_to_uint_ex(s, &endptr, LLONG_MAX, "smun");
+		int_val = string_to_uint_ex(s, &endptr, LLONG_MAX, "smun", 10);
 
 		if (int_val < 0)
 			return -1;
@@ -695,7 +695,7 @@ set_tty_index(const char *value, void *data)
 {
 	struct finfo *finfo = data;
 
-	finfo->dev.tty_index = string_to_uint_ex(value, NULL, INT_MAX, "\n");
+	finfo->dev.tty_index = string_to_uint_ex(value, NULL, INT_MAX, "\n", 10);
 	return true;
 }
 
@@ -775,7 +775,7 @@ static bool
 parse_fdinfo_pid(const char *value, void *data)
 {
 	pid_t *pid = data;
-	*pid = string_to_uint_ex(value, NULL, INT_MAX, "\n");
+	*pid = string_to_uint_ex(value, NULL, INT_MAX, "\n", 10);
 	return true;
 }
 
-- 
2.44.0



More information about the Strace-devel mailing list