mirror of https://github.com/mirror/busybox.git
fix a few stray unguarded strdup's
parent
2570b2e575
commit
c4523c2b3d
|
@ -285,7 +285,7 @@ static char *string_copy(const char *s)
|
||||||
|
|
||||||
if (!s)
|
if (!s)
|
||||||
return 0;
|
return 0;
|
||||||
ret = strdup(s);
|
ret = xstrdup(s);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
265
editors/ed.c
265
editors/ed.c
|
@ -119,7 +119,7 @@ int ed_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
||||||
static void doCommands(void)
|
static void doCommands(void)
|
||||||
{
|
{
|
||||||
const char *cp;
|
const char *cp;
|
||||||
char *endbuf, *newname, buf[USERSIZE];
|
char *endbuf, buf[USERSIZE];
|
||||||
int len, num1, num2;
|
int len, num1, num2;
|
||||||
smallint have1, have2;
|
smallint have1, have2;
|
||||||
|
|
||||||
|
@ -168,162 +168,157 @@ static void doCommands(void)
|
||||||
num2 = num1;
|
num2 = num1;
|
||||||
|
|
||||||
switch (*cp++) {
|
switch (*cp++) {
|
||||||
case 'a':
|
case 'a':
|
||||||
addLines(num1 + 1);
|
addLines(num1 + 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'c':
|
case 'c':
|
||||||
deleteLines(num1, num2);
|
deleteLines(num1, num2);
|
||||||
addLines(num1);
|
addLines(num1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'd':
|
case 'd':
|
||||||
deleteLines(num1, num2);
|
deleteLines(num1, num2);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'f':
|
case 'f':
|
||||||
if (*cp && !isblank(*cp)) {
|
if (*cp && !isblank(*cp)) {
|
||||||
bb_error_msg("bad file command");
|
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;
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case 'i':
|
cp = skip_blank(cp);
|
||||||
addLines(num1);
|
if (*cp == '\0') {
|
||||||
|
if (fileName)
|
||||||
|
printf("\"%s\"\n", fileName);
|
||||||
|
else
|
||||||
|
printf("No file name\n");
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
free(fileName);
|
||||||
|
fileName = xstrdup(cp);
|
||||||
|
break;
|
||||||
|
|
||||||
case 'k':
|
case 'i':
|
||||||
cp = skip_blank(cp);
|
addLines(num1);
|
||||||
if ((*cp < 'a') || (*cp > 'z') || cp[1]) {
|
break;
|
||||||
bb_error_msg("bad mark name");
|
|
||||||
break;
|
case 'k':
|
||||||
}
|
cp = skip_blank(cp);
|
||||||
marks[*cp - 'a'] = num2;
|
if ((*cp < 'a') || (*cp > 'z') || cp[1]) {
|
||||||
|
bb_error_msg("bad mark name");
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
marks[*cp - 'a'] = num2;
|
||||||
|
break;
|
||||||
|
|
||||||
case 'l':
|
case 'l':
|
||||||
printLines(num1, num2, TRUE);
|
printLines(num1, num2, TRUE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'p':
|
||||||
|
printLines(num1, num2, FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'q':
|
||||||
|
cp = skip_blank(cp);
|
||||||
|
if (have1 || *cp) {
|
||||||
|
bb_error_msg("bad quit command");
|
||||||
break;
|
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':
|
case 'r':
|
||||||
printLines(num1, num2, FALSE);
|
if (*cp && !isblank(*cp)) {
|
||||||
|
bb_error_msg("bad read command");
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case 'q':
|
cp = skip_blank(cp);
|
||||||
cp = skip_blank(cp);
|
if (*cp == '\0') {
|
||||||
if (have1 || *cp) {
|
bb_error_msg("no file name");
|
||||||
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;
|
break;
|
||||||
|
}
|
||||||
case 'r':
|
if (!have1)
|
||||||
if (*cp && !isblank(*cp)) {
|
num1 = lastNum;
|
||||||
bb_error_msg("bad read command");
|
if (readLines(cp, num1 + 1))
|
||||||
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);
|
|
||||||
break;
|
break;
|
||||||
|
if (fileName == NULL)
|
||||||
|
fileName = xstrdup(cp);
|
||||||
|
break;
|
||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
subCommand(cp, num1, num2);
|
subCommand(cp, num1, num2);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'w':
|
||||||
|
if (*cp && !isblank(*cp)) {
|
||||||
|
bb_error_msg("bad write command");
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case 'w':
|
cp = skip_blank(cp);
|
||||||
if (*cp && !isblank(*cp)) {
|
if (!have1) {
|
||||||
bb_error_msg("bad write command");
|
num1 = 1;
|
||||||
break;
|
num2 = lastNum;
|
||||||
}
|
}
|
||||||
cp = skip_blank(cp);
|
if (*cp == '\0')
|
||||||
if (!have1) {
|
cp = fileName;
|
||||||
num1 = 1;
|
if (cp == NULL) {
|
||||||
num2 = lastNum;
|
bb_error_msg("no file name specified");
|
||||||
}
|
|
||||||
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 '-':
|
|
||||||
printLines(curNum - 21, curNum, FALSE);
|
|
||||||
break;
|
|
||||||
case '.':
|
|
||||||
printLines(curNum - 11, curNum + 10, FALSE);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
printLines(curNum, curNum + 21, FALSE);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '.':
|
|
||||||
if (have1) {
|
|
||||||
bb_error_msg("no arguments allowed");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
printLines(curNum, curNum, FALSE);
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
writeLines(cp, num1, num2);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'z':
|
||||||
|
switch (*cp) {
|
||||||
case '-':
|
case '-':
|
||||||
if (setCurNum(curNum - 1))
|
printLines(curNum - 21, curNum, FALSE);
|
||||||
printLines(curNum, curNum, FALSE);
|
|
||||||
break;
|
break;
|
||||||
|
case '.':
|
||||||
case '=':
|
printLines(curNum - 11, curNum + 10, FALSE);
|
||||||
printf("%d\n", num1);
|
|
||||||
break;
|
break;
|
||||||
case '\0':
|
|
||||||
if (have1) {
|
|
||||||
printLines(num2, num2, FALSE);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (setCurNum(curNum + 1))
|
|
||||||
printLines(curNum, curNum, FALSE);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
bb_error_msg("unimplemented command");
|
printLines(curNum, curNum + 21, FALSE);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -800,7 +800,7 @@ static char *encodeString(const char *string)
|
||||||
/*
|
/*
|
||||||
* Given a URL encoded string, convert it to plain ascii.
|
* Given a URL encoded string, convert it to plain ascii.
|
||||||
* Since decoding always makes strings smaller, the decode is done in-place.
|
* 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
|
* argument modified. The return is the original pointer, allowing this
|
||||||
* function to be easily used as arguments to other functions.
|
* 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) {
|
if (strcmp(p, request) == 0) {
|
||||||
set_remoteuser_var:
|
set_remoteuser_var:
|
||||||
remoteuser = strdup(request);
|
remoteuser = xstrndup(request, u - request);
|
||||||
if (remoteuser)
|
|
||||||
remoteuser[u - request] = '\0';
|
|
||||||
return 1; /* Ok */
|
return 1; /* Ok */
|
||||||
}
|
}
|
||||||
/* unauthorized */
|
/* unauthorized */
|
||||||
|
@ -1990,13 +1988,13 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
|
||||||
#endif
|
#endif
|
||||||
#if ENABLE_FEATURE_HTTPD_CGI
|
#if ENABLE_FEATURE_HTTPD_CGI
|
||||||
else if (STRNCASECMP(iobuf, "Cookie:") == 0) {
|
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) {
|
} 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) {
|
} 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) {
|
} 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
|
#endif
|
||||||
#if ENABLE_FEATURE_HTTPD_BASIC_AUTH
|
#if ENABLE_FEATURE_HTTPD_BASIC_AUTH
|
||||||
|
@ -2377,7 +2375,7 @@ int httpd_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
||||||
* Besides, it is also smaller. */
|
* Besides, it is also smaller. */
|
||||||
{
|
{
|
||||||
char *p = getenv("PATH");
|
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();
|
clearenv();
|
||||||
if (p)
|
if (p)
|
||||||
putenv(p - 5);
|
putenv(p - 5);
|
||||||
|
|
|
@ -78,10 +78,10 @@ static void read_config(char **pc, int npc, char **fc, int nfc)
|
||||||
section = 2;
|
section = 2;
|
||||||
} else {
|
} else {
|
||||||
if (section == 1 && pc_ofs < npc -1) {
|
if (section == 1 && pc_ofs < npc -1) {
|
||||||
pc[pc_ofs++] = strdup(buf);
|
pc[pc_ofs++] = xstrdup(buf);
|
||||||
pc[pc_ofs] = NULL;
|
pc[pc_ofs] = NULL;
|
||||||
} else if (section == 2 && fc_ofs < nfc - 1) {
|
} else if (section == 2 && fc_ofs < nfc - 1) {
|
||||||
fc[fc_ofs++] = strdup(buf);
|
fc[fc_ofs++] = xstrdup(buf);
|
||||||
fc[fc_ofs] = NULL;
|
fc[fc_ofs] = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue