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
@ -14,10 +14,13 @@ extern char *concat_path_file(const char *path, const char *filename)
|
|||||||
char *outbuf;
|
char *outbuf;
|
||||||
char *lc;
|
char *lc;
|
||||||
|
|
||||||
|
if (!path)
|
||||||
|
path="";
|
||||||
lc = last_char_is(path, '/');
|
lc = last_char_is(path, '/');
|
||||||
if (filename[0] == '/')
|
if (filename[0] == '/')
|
||||||
filename++;
|
filename++;
|
||||||
outbuf = xmalloc(strlen(path)+strlen(filename)+1+(lc==NULL));
|
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;
|
return outbuf;
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,10 @@
|
|||||||
*/
|
*/
|
||||||
char * last_char_is(const char *s, int c)
|
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) {
|
if (sret>=s && *sret == c) {
|
||||||
return sret;
|
return sret;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user