]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
misc-progs: Add functions to sanitise input arguments
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 6 Jan 2021 11:34:31 +0000 (11:34 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 27 Jan 2021 21:06:57 +0000 (21:06 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/misc-progs/setuid.c
src/misc-progs/setuid.h

index 6637d3e6fcba82bc40acd27a62160d57e2c0544e..efd181ad8c51beb0e709dc4da0a5ac3a0a482436 100644 (file)
@@ -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;
+}
index aa265a52f7c31e8f2304f3f2f99411584c759af7..2936c439978cc084b9d5351dbbb357d0e7845093 100644 (file)
@@ -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)