mirror of
https://git.busybox.net/busybox.git
synced 2024-12-12 15:03:27 +08:00
Avoid a segfault (detected by Fabio Ferrari
<fabio.ferrari@digitro.com.br> in the wget applet) when concat_path_file() or last_char_is() were fed a NULL. -Erik
This commit is contained in:
parent
934c8ecb88
commit
5a071bcbf2
@ -13,11 +13,14 @@ extern char *concat_path_file(const char *path, const char *filename)
|
||||
{
|
||||
char *outbuf;
|
||||
char *lc;
|
||||
|
||||
|
||||
if (!path)
|
||||
path="";
|
||||
lc = last_char_is(path, '/');
|
||||
if (filename[0] == '/')
|
||||
filename++;
|
||||
outbuf = xmalloc(strlen(path)+strlen(filename)+1+(lc==NULL));
|
||||
sprintf(outbuf, (lc==NULL ? "%s/%s" : "%s%s"), path, filename);
|
||||
sprintf(outbuf, "%s%s%s", path, (lc==NULL)? "/" : "", filename);
|
||||
|
||||
return outbuf;
|
||||
}
|
||||
|
@ -28,7 +28,10 @@
|
||||
*/
|
||||
char * last_char_is(const char *s, int c)
|
||||
{
|
||||
char *sret = (char *)s+strlen(s)-1;
|
||||
char *sret;
|
||||
if (!s)
|
||||
return NULL;
|
||||
sret = (char *)s+strlen(s)-1;
|
||||
if (sret>=s && *sret == c) {
|
||||
return sret;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user