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:
Eric Andersen 2001-07-07 04:27:35 +00:00
parent 934c8ecb88
commit 5a071bcbf2
2 changed files with 9 additions and 3 deletions

View File

@ -13,11 +13,14 @@ 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;
} }

View File

@ -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 {