aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Denis Vlasenko <vda.linux@googlemail.com>2008-03-28 02:24:59 +0000
committerGravatar Denis Vlasenko <vda.linux@googlemail.com>2008-03-28 02:24:59 +0000
commitc4523c2b3da206312ed0b007a46eace58659ec31 (patch)
tree5d4f169b7de1d73e7948f2bf8ecad79df2f18c6b
parent2570b2e5759e8ac32b0922d71056bd426caae9f1 (diff)
downloadbusybox-c4523c2b3da206312ed0b007a46eace58659ec31.tar.gz
busybox-c4523c2b3da206312ed0b007a46eace58659ec31.tar.bz2
fix a few stray unguarded strdup's
-rw-r--r--e2fsprogs/old_e2fsprogs/fsck.c2
-rw-r--r--editors/ed.c259
-rw-r--r--networking/httpd.c16
-rw-r--r--selinux/sestatus.c4
4 files changed, 137 insertions, 144 deletions
diff --git a/e2fsprogs/old_e2fsprogs/fsck.c b/e2fsprogs/old_e2fsprogs/fsck.c
index a51c33a1c..9cb9f754d 100644
--- a/e2fsprogs/old_e2fsprogs/fsck.c
+++ b/e2fsprogs/old_e2fsprogs/fsck.c
@@ -285,7 +285,7 @@ static char *string_copy(const char *s)
if (!s)
return 0;
- ret = strdup(s);
+ ret = xstrdup(s);
return ret;
}
diff --git a/editors/ed.c b/editors/ed.c
index 9606cfdde..2f3bf03bf 100644
--- a/editors/ed.c
+++ b/editors/ed.c
@@ -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;
}
}
}
diff --git a/networking/httpd.c b/networking/httpd.c
index 5e6037cbe..b4a8d277b 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -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);
diff --git a/selinux/sestatus.c b/selinux/sestatus.c
index 43e31d455..ec39afc21 100644
--- a/selinux/sestatus.c
+++ b/selinux/sestatus.c
@@ -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;
}
}