uud/uue: fix buffer length checking
authorAlan Cox <alan@linux.intel.com>
Thu, 21 May 2015 22:38:02 +0000 (23:38 +0100)
committerAlan Cox <alan@linux.intel.com>
Thu, 21 May 2015 22:38:02 +0000 (23:38 +0100)
Applications/util/uud.c
Applications/util/uue.c

index 6ddb6cf..f2c796d 100644 (file)
@@ -110,10 +110,10 @@ int main(int argc, char *argv[])
        strcpy(ifname, "<stdin>");
     } else {
        if (source != NULL) {
-           strcpy(ifname, source);
-           strcat(ifname, curarg);
+           strlcpy(ifname, source, sizeof(ifname));
+           strlcat(ifname, curarg, sizeof(ifname));
        } else {
-           strcpy(ifname, curarg);
+           strlcpy(ifname, curarg, sizeof(ifname));
        }
        if ((inpf = fopen(ifname, "r")) == NULL) {
            printf("uud: Can't open %s\n", ifname);
@@ -176,10 +176,10 @@ int main(int argc, char *argv[])
                malformed_begin();
 
        if (target != NULL) {
-           strcpy(ofname, target);
-           strcat(ofname, dest);
+           strlcpy(ofname, target, sizeof(ofname));
+           strlcat(ofname, dest, sizeof(ofname));
        } else {
-           strcpy(ofname, dest);
+           strlcpy(ofname, dest, sizeof(ofname));
        }
 
        if ((outf = fopen(ofname, "w")) == NULL) {      /* binary! */
@@ -406,10 +406,10 @@ void getfile(char *buf)
        printf("uud: Missing include file name.\n");
        exit(17);
     } else if (source != NULL) {
-       strcpy(ifname, source);
-       strcat(ifname, pos);
+       strlcpy(ifname, source, sizeof(ifname));
+       strlcat(ifname, pos, sizeof(ifname));
     } else {
-       strcpy(ifname, pos);
+       strlcpy(ifname, pos, sizeof(ifname));
     }
 
     if (access(ifname, 04)) {
index a6e664a..28c8c2e 100644 (file)
@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
 
     fname = argv[1] + strlen(argv[1]);
     while (fname > argv[1] && fname[-1] != '/') fname--;
-    strcpy(ofname, fname);
+    strlcpy(ofname, fname, sizeof(ofname));
     fname = ofname;
     do {
        if (*fname == '.') *fname = '\0';