fix a few stray unguarded strdup's
authorDenis Vlasenko <vda.linux@googlemail.com>
Fri, 28 Mar 2008 02:24:59 +0000 (02:24 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Fri, 28 Mar 2008 02:24:59 +0000 (02:24 -0000)
e2fsprogs/old_e2fsprogs/fsck.c
editors/ed.c
networking/httpd.c
selinux/sestatus.c

index a51c33a1cad9b6648287051fd2e83a3dde34c8b2..9cb9f754db4c37eab007f30fae76794c4eb25581 100644 (file)
@@ -285,7 +285,7 @@ static char *string_copy(const char *s)
 
        if (!s)
                return 0;
-       ret = strdup(s);
+       ret = xstrdup(s);
        return ret;
 }
 
index 9606cfdde7e8542ebb3aad5c105ef7e8542a6d95..2f3bf03bf009cb7d1b4a9172ef38b92c3ac60bea 100644 (file)
@@ -119,7 +119,7 @@ int ed_main(int argc ATTRIBUTE_UNUSED, char **argv)
 static void doCommands(void)
 {
        const char *cp;
-       char *endbuf, *newname, buf[USERSIZE];
+       char *endbuf, buf[USERSIZE];
        int len, num1, num2;
        smallint have1, have2;
 
@@ -168,162 +168,157 @@ static void doCommands(void)
                        num2 = num1;
 
                switch (*cp++) {
-                       case 'a':
-                               addLines(num1 + 1);
-                               break;
+               case 'a':
+                       addLines(num1 + 1);
+                       break;
 
-                       case 'c':
-                               deleteLines(num1, num2);
-                               addLines(num1);
-                               break;
+               case 'c':
+                       deleteLines(num1, num2);
+                       addLines(num1);
+                       break;
 
-                       case 'd':
-                               deleteLines(num1, num2);
-                               break;
+               case 'd':
+                       deleteLines(num1, num2);
+                       break;
 
-                       case 'f':
-                               if (*cp && !isblank(*cp)) {
-                                       bb_error_msg("bad file command");
-                                       break;
-                               }
-                               cp = skip_blank(cp);
-                               if (*cp == '\0') {
-                                       if (fileName)
-                                               printf("\"%s\"\n", fileName);
-                                       else
-                                               printf("No file name\n");
-                                       break;
-                               }
-                               newname = strdup(cp);
-                               if (newname == NULL) {
-                                       bb_error_msg("no memory for file name");
-                                       break;
-                               }
-                               free(fileName);
-                               fileName = newname;
+               case 'f':
+                       if (*cp && !isblank(*cp)) {
+                               bb_error_msg("bad file command");
                                break;
-
-                       case 'i':
-                               addLines(num1);
+                       }
+                       cp = skip_blank(cp);
+                       if (*cp == '\0') {
+                               if (fileName)
+                                       printf("\"%s\"\n", fileName);
+                               else
+                                       printf("No file name\n");
                                break;
+                       }
+                       free(fileName);
+                       fileName = xstrdup(cp);
+                       break;
 
-                       case 'k':
-                               cp = skip_blank(cp);
-                               if ((*cp < 'a') || (*cp > 'z') || cp[1]) {
-                                       bb_error_msg("bad mark name");
-                                       break;
-                               }
-                               marks[*cp - 'a'] = num2;
-                               break;
+               case 'i':
+                       addLines(num1);
+                       break;
 
-                       case 'l':
-                               printLines(num1, num2, TRUE);
+               case 'k':
+                       cp = skip_blank(cp);
+                       if ((*cp < 'a') || (*cp > 'z') || cp[1]) {
+                               bb_error_msg("bad mark name");
                                break;
+                       }
+                       marks[*cp - 'a'] = num2;
+                       break;
 
-                       case 'p':
-                               printLines(num1, num2, FALSE);
-                               break;
+               case 'l':
+                       printLines(num1, num2, TRUE);
+                       break;
 
-                       case 'q':
-                               cp = skip_blank(cp);
-                               if (have1 || *cp) {
-                                       bb_error_msg("bad quit command");
-                                       break;
-                               }
-                               if (!dirty)
-                                       return;
-                               len = read_line_input("Really quit? ", buf, 16, NULL);
-                               /* read error/EOF - no way to continue */
-                               if (len < 0)
-                                       return;
-                               cp = skip_blank(buf);
-                               if ((*cp | 0x20) == 'y') /* Y or y */
-                                       return;
-                               break;
+               case 'p':
+                       printLines(num1, num2, FALSE);
+                       break;
 
-                       case 'r':
-                               if (*cp && !isblank(*cp)) {
-                                       bb_error_msg("bad read command");
-                                       break;
-                               }
-                               cp = skip_blank(cp);
-                               if (*cp == '\0') {
-                                       bb_error_msg("no file name");
-                                       break;
-                               }
-                               if (!have1)
-                                       num1 = lastNum;
-                               if (readLines(cp, num1 + 1))
-                                       break;
-                               if (fileName == NULL)
-                                       fileName = strdup(cp);
+               case 'q':
+                       cp = skip_blank(cp);
+                       if (have1 || *cp) {
+                               bb_error_msg("bad quit command");
                                break;
+                       }
+                       if (!dirty)
+                               return;
+                       len = read_line_input("Really quit? ", buf, 16, NULL);
+                       /* read error/EOF - no way to continue */
+                       if (len < 0)
+                               return;
+                       cp = skip_blank(buf);
+                       if ((*cp | 0x20) == 'y') /* Y or y */
+                               return;
+                       break;
 
-                       case 's':
-                               subCommand(cp, num1, num2);
+               case 'r':
+                       if (*cp && !isblank(*cp)) {
+                               bb_error_msg("bad read command");
                                break;
-
-                       case 'w':
-                               if (*cp && !isblank(*cp)) {
-                                       bb_error_msg("bad write command");
-                                       break;
-                               }
-                               cp = skip_blank(cp);
-                               if (!have1) {
-                                       num1 = 1;
-                                       num2 = lastNum;
-                               }
-                               if (*cp == '\0')
-                                       cp = fileName;
-                               if (cp == NULL) {
-                                       bb_error_msg("no file name specified");
-                                       break;
-                               }
-                               writeLines(cp, num1, num2);
+                       }
+                       cp = skip_blank(cp);
+                       if (*cp == '\0') {
+                               bb_error_msg("no file name");
                                break;
-
-                       case 'z':
-                               switch (*cp) {
-                               case '-':
-                                       printLines(curNum - 21, curNum, FALSE);
-                                       break;
-                               case '.':
-                                       printLines(curNum - 11, curNum + 10, FALSE);
-                                       break;
-                               default:
-                                       printLines(curNum, curNum + 21, FALSE);
-                                       break;
-                               }
+                       }
+                       if (!have1)
+                               num1 = lastNum;
+                       if (readLines(cp, num1 + 1))
                                break;
+                       if (fileName == NULL)
+                               fileName = xstrdup(cp);
+                       break;
 
-                       case '.':
-                               if (have1) {
-                                       bb_error_msg("no arguments allowed");
-                                       break;
-                               }
-                               printLines(curNum, curNum, FALSE);
+               case 's':
+                       subCommand(cp, num1, num2);
+                       break;
+
+               case 'w':
+                       if (*cp && !isblank(*cp)) {
+                               bb_error_msg("bad write command");
+                               break;
+                       }
+                       cp = skip_blank(cp);
+                       if (!have1) {
+                               num1 = 1;
+                               num2 = lastNum;
+                       }
+                       if (*cp == '\0')
+                               cp = fileName;
+                       if (cp == NULL) {
+                               bb_error_msg("no file name specified");
                                break;
+                       }
+                       writeLines(cp, num1, num2);
+                       break;
 
+               case 'z':
+                       switch (*cp) {
                        case '-':
-                               if (setCurNum(curNum - 1))
-                                       printLines(curNum, curNum, FALSE);
+                               printLines(curNum - 21, curNum, FALSE);
                                break;
-
-                       case '=':
-                               printf("%d\n", num1);
+                       case '.':
+                               printLines(curNum - 11, curNum + 10, FALSE);
                                break;
-                       case '\0':
-                               if (have1) {
-                                       printLines(num2, num2, FALSE);
-                                       break;
-                               }
-                               if (setCurNum(curNum + 1))
-                                       printLines(curNum, curNum, FALSE);
+                       default:
+                               printLines(curNum, curNum + 21, FALSE);
                                break;
+                       }
+                       break;
 
-                       default:
-                               bb_error_msg("unimplemented command");
+               case '.':
+                       if (have1) {
+                               bb_error_msg("no arguments allowed");
+                               break;
+                       }
+                       printLines(curNum, curNum, FALSE);
+                       break;
+
+               case '-':
+                       if (setCurNum(curNum - 1))
+                               printLines(curNum, curNum, FALSE);
+                       break;
+
+               case '=':
+                       printf("%d\n", num1);
+                       break;
+               case '\0':
+                       if (have1) {
+                               printLines(num2, num2, FALSE);
                                break;
+                       }
+                       if (setCurNum(curNum + 1))
+                               printLines(curNum, curNum, FALSE);
+                       break;
+
+               default:
+                       bb_error_msg("unimplemented command");
+                       break;
                }
        }
 }
index 5e6037cbe7defaa65da495afdd382ea61ae0baf4..b4a8d277bc832b53557557d549514da8ebd1c28d 100644 (file)
@@ -800,7 +800,7 @@ static char *encodeString(const char *string)
 /*
  * Given a URL encoded string, convert it to plain ascii.
  * Since decoding always makes strings smaller, the decode is done in-place.
- * Thus, callers should strdup() the argument if they do not want the
+ * Thus, callers should xstrdup() the argument if they do not want the
  * argument modified.  The return is the original pointer, allowing this
  * function to be easily used as arguments to other functions.
  *
@@ -1725,9 +1725,7 @@ static int checkPerm(const char *path, const char *request)
 
                        if (strcmp(p, request) == 0) {
  set_remoteuser_var:
-                               remoteuser = strdup(request);
-                               if (remoteuser)
-                                       remoteuser[u - request] = '\0';
+                               remoteuser = xstrndup(request, u - request);
                                return 1;   /* Ok */
                        }
                        /* unauthorized */
@@ -1990,13 +1988,13 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
 #endif
 #if ENABLE_FEATURE_HTTPD_CGI
                        else if (STRNCASECMP(iobuf, "Cookie:") == 0) {
-                               cookie = strdup(skip_whitespace(iobuf + sizeof("Cookie:")-1));
+                               cookie = xstrdup(skip_whitespace(iobuf + sizeof("Cookie:")-1));
                        } else if (STRNCASECMP(iobuf, "Content-Type:") == 0) {
-                               content_type = strdup(skip_whitespace(iobuf + sizeof("Content-Type:")-1));
+                               content_type = xstrdup(skip_whitespace(iobuf + sizeof("Content-Type:")-1));
                        } else if (STRNCASECMP(iobuf, "Referer:") == 0) {
-                               referer = strdup(skip_whitespace(iobuf + sizeof("Referer:")-1));
+                               referer = xstrdup(skip_whitespace(iobuf + sizeof("Referer:")-1));
                        } else if (STRNCASECMP(iobuf, "User-Agent:") == 0) {
-                               user_agent = strdup(skip_whitespace(iobuf + sizeof("User-Agent:")-1));
+                               user_agent = xstrdup(skip_whitespace(iobuf + sizeof("User-Agent:")-1));
                        }
 #endif
 #if ENABLE_FEATURE_HTTPD_BASIC_AUTH
@@ -2377,7 +2375,7 @@ int httpd_main(int argc ATTRIBUTE_UNUSED, char **argv)
         * Besides, it is also smaller. */
        {
                char *p = getenv("PATH");
-               /* env strings themself are not freed, no need to strdup(p): */
+               /* env strings themself are not freed, no need to xstrdup(p): */
                clearenv();
                if (p)
                        putenv(p - 5);
index 43e31d455c5de37404f084a3a46ace709789c8bd..ec39afc218a271dae11b62fb590cd7290bc91da4 100644 (file)
@@ -78,10 +78,10 @@ static void read_config(char **pc, int npc, char **fc, int nfc)
                        section = 2;
                } else {
                        if (section == 1 && pc_ofs < npc -1) {
-                               pc[pc_ofs++] = strdup(buf);
+                               pc[pc_ofs++] = xstrdup(buf);
                                pc[pc_ofs] = NULL;
                        } else if (section == 2 && fc_ofs < nfc - 1) {
-                               fc[fc_ofs++] = strdup(buf);
+                               fc[fc_ofs++] = xstrdup(buf);
                                fc[fc_ofs] = NULL;
                        }
                }