]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/misc-progs/sambactrl.c
misc-progs: sambactrl: Sanitise username
[ipfire-2.x.git] / 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);