]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
misc-progs: Fix invalid command line argument parsing.
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 12 Oct 2013 14:20:20 +0000 (16:20 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 12 Oct 2013 14:20:20 +0000 (16:20 +0200)
Fixes #10431.

src/misc-progs/backupctrl.c
src/misc-progs/pakfire.c
src/misc-progs/smartctrl.c

index 2941117b03db4d83acb3f26288a555453ec4847a..00c8d5b86e21a40a80ae2dd2051119417da07053 100644 (file)
 
 int main(int argc, char *argv[]) {
        int i;
-       char command[1024];
-       char add[STRING_SIZE];
-       
+       char command[STRING_SIZE] = "/var/ipfire/backup/bin/backup.pl";
+       char temp[STRING_SIZE];
+
        if (!(initsetuid()))
                exit(1);
 
-       snprintf(command, STRING_SIZE, "/var/ipfire/backup/bin/backup.pl");
-
        for (i = 1; i < argc; i++) {
-    if (strstr(argv[i], "&&")){
-             fprintf (stderr, "Bad Argument!\n");
-        exit (1);
-    }
-               else if (strstr(argv[i], "|")){
-                   fprintf (stderr, "Bad Argument!\n");
-                   exit (1);
-               }
-               else if (argc > 3){
-                   fprintf (stderr, "Too Many Arguments!\n");
-                   exit (1);
+               if (strstr(argv[i], "&&")){
+                       fprintf (stderr, "Bad Argument!\n");
+                       exit (1);
+
+               } else if (strstr(argv[i], "|")) {
+                       fprintf (stderr, "Bad Argument!\n");
+                       exit (1);
+
+               } else if (argc > 3) {
+                       fprintf (stderr, "Too Many Arguments!\n");
+                       exit (1);
+
+               } else {
+                       snprintf(temp, STRING_SIZE, "%s %s", command, argv[i]);
+                       snprintf(command, STRING_SIZE, "%s", temp);
                }
-               else{
-               sprintf(add, " %s", argv[i]);
-                   strcat(command, add);
-    }
        }
+
        return safe_system(command);
 }
index 113216faa71dede918f35c49f740d25d74d9e0aa..fe6edfc32948c496df9f05ffa057bdcb427978ae 100644 (file)
 
 int main(int argc, char *argv[]) {
        int i;
-       char command[1024];
-       char add[STRING_SIZE];
-       
+       char command[STRING_SIZE] = "/opt/pakfire/pakfire";
+       char temp[STRING_SIZE];
+
        if (!(initsetuid()))
                exit(1);
 
-       snprintf(command, STRING_SIZE, "/opt/pakfire/pakfire");
-
        for (i = 1; i < argc; i++) {
-               sprintf(add, " %s", argv[i]);
-               strcat(command, add);
+               snprintf(temp, STRING_SIZE, "%s %s", command, argv[i]);
+               snprintf(command, STRING_SIZE, "%s", temp);
        }
-       
+
        return safe_system(command);
 }
index d9dd8463fb15c32196ad92a96b456337d264026f..c6451acba3a031baaa1f2ce2856a668395a88a92 100644 (file)
 #include <fcntl.h>
 #include "setuid.h"
 
-#define BUFFER_SIZE 1024
-
-char command[BUFFER_SIZE]; 
-
 int main(int argc, char *argv[]) {
-
         if (!(initsetuid()))
-                exit(1);
+               exit(1);
 
-        if (argc < 2) {
-                fprintf(stderr, "\nNo argument given.\n\nsmartctrl <device>\n\n");
-                exit(1);
-        }
+       if (argc < 2) {
+               fprintf(stderr, "\nNo argument given.\n\nsmartctrl <device>\n\n");
+               exit(1);
+       }
 
+       char command[STRING_SIZE];
+       snprintf(command, STRING_SIZE, "/var/run/hddshutdown-%s", argv[1]);
 
-        sprintf(command, "/var/run/hddshutdown-%s", argv[1]);
-        FILE *fp = fopen(command,"r");
-       if( fp ) {
+        FILE *fp = fopen(command, "r");
+       if (fp != NULL) {
                fclose(fp);
+
                printf("\nDisk %s is in Standby. Do nothing because we won't wakeup\n",argv[1]);
-                exit(1);
+               exit(1);
        }
 
-        sprintf(command, "smartctl -iHA /dev/%s", argv[1]);
-        safe_system(command);
+       snprintf(command, STRING_SIZE, "smartctl -iHA /dev/%s", argv[1]);
+       safe_system(command);
 
         return 0;
 }