[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