]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
misc-progs: sambactrl: Sanitise username
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 6 Jan 2021 11:56:08 +0000 (11:56 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 27 Jan 2021 21:06:57 +0000 (21:06 +0000)
Fixes: #12562
Reported-by: Albert Schwarzkopf <ipfire@quitesimple.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/misc-progs/sambactrl.c

index adcfe4628c7ea1561a86ad7175c9fd893e57537c..eee396e7e61ea4626b05d52f88a27710374d633e 100644 (file)
@@ -20,14 +20,29 @@ int main(int argc, char *argv[]) {
                return 1;
 
        } else if (strcmp(argv[1], "smbuserdisable") == 0) {
+               if (!is_valid_argument_alnum(argv[2])) {
+                       fprintf(stderr, "Invalid username '%s'\n", argv[2]);
+                       exit(2);
+               }
+
                snprintf(command, BUFFER_SIZE-1, "/usr/bin/smbpasswd -d %s >/dev/null", argv[2]);
                safe_system(command);
 
        } else if (strcmp(argv[1], "smbuserenable") == 0) {
+               if (!is_valid_argument_alnum(argv[2])) {
+                       fprintf(stderr, "Invalid username '%s'\n", argv[2]);
+                       exit(2);
+               }
+
                snprintf(command, BUFFER_SIZE-1, "/usr/bin/smbpasswd -e %s >/dev/null", argv[2]);
                safe_system(command);
 
        } else if (strcmp(argv[1], "smbuserdelete") == 0) {
+               if (!is_valid_argument_alnum(argv[2])) {
+                       fprintf(stderr, "Invalid username '%s'\n", argv[2]);
+                       exit(2);
+               }
+
                snprintf(command, BUFFER_SIZE-1, "/usr/bin/smbpasswd -x %s >/dev/null", argv[2]);
                safe_system(command);
 
@@ -56,6 +71,11 @@ int main(int argc, char *argv[]) {
                safe_system(command);
 
        } else if (strcmp(argv[1], "smbuseradd") == 0) {
+               if (!is_valid_argument_alnum(argv[2])) {
+                       fprintf(stderr, "Invalid username '%s'\n", argv[2]);
+                       exit(2);
+               }
+
                snprintf(command, BUFFER_SIZE-1, "/usr/sbin/groupadd sambauser >/dev/null");
                safe_system(command);
 
@@ -69,6 +89,11 @@ int main(int argc, char *argv[]) {
                safe_system(command);
 
        } else if (strcmp(argv[1], "smbchangepw") == 0) {
+               if (!is_valid_argument_alnum(argv[2])) {
+                       fprintf(stderr, "Invalid username '%s'\n", argv[2]);
+                       exit(2);
+               }
+
                snprintf(command, BUFFER_SIZE-1, "echo %s:%s | chpasswd", argv[2], argv[3]);
                safe_system(command);