From: Michael Tremer Date: Wed, 6 Jan 2021 11:34:31 +0000 (+0000) Subject: misc-progs: Add functions to sanitise input arguments X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=db984059b22a4680046df31579b44fa05c8264d5;p=people%2Fms%2Fipfire-2.x.git misc-progs: Add functions to sanitise input arguments Signed-off-by: Michael Tremer --- diff --git a/src/misc-progs/setuid.c b/src/misc-progs/setuid.c index 6637d3e6fc..efd181ad8c 100644 --- a/src/misc-progs/setuid.c +++ b/src/misc-progs/setuid.c @@ -199,3 +199,42 @@ int initsetuid(void) { return 1; } + +/* Checks if a string only contains alphanumerical characters, dash or underscore */ +int is_valid_argument_alnum(const char* arg) { + size_t l = strlen(arg); + + for (unsigned int i = 0; i < l; i++) { + char c = arg[i]; + + // Dash or underscore + if (c == '-' || c == '_') + continue; + + // Any alphanumerical character + if (isalnum(c)) + continue; + + // Invalid + return 0; + } + + return 1; +} + +int is_valid_argument_num(const char* arg) { + size_t l = strlen(arg); + + for (unsigned int i = 0; i < l; i++) { + char c = arg[i]; + + // Any digit + if (isdigit(c)) + continue; + + // Invalid + return 0; + } + + return 1; +} diff --git a/src/misc-progs/setuid.h b/src/misc-progs/setuid.h index aa265a52f7..2936c43997 100644 --- a/src/misc-progs/setuid.h +++ b/src/misc-progs/setuid.h @@ -33,6 +33,9 @@ int safe_system(char* command); int unpriv_system(char* command, uid_t uid, gid_t gid); int initsetuid(void); +int is_valid_argument_alnum(const char* arg); +int is_valid_argument_num(const char* arg); + /* Compatibility for the local copy of strlcat, * which has been removed. */ #define strlcat(src, dst, size) strncat(src, dst, size)