mirror of
https://github.com/mirror/wget.git
synced 2025-01-31 23:00:38 +08:00
* src/ftp.c (getftp): Remove use of alloca
This commit is contained in:
parent
6d181cb8ef
commit
6a3e96275b
18
src/ftp.c
18
src/ftp.c
@ -756,12 +756,12 @@ Error in server response, closing control connection.\n"));
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
const char *targ = NULL;
|
const char *targ = NULL;
|
||||||
|
char *target = u->dir;
|
||||||
|
char targetbuf[1024];
|
||||||
int cwd_count;
|
int cwd_count;
|
||||||
int cwd_end;
|
int cwd_end;
|
||||||
int cwd_start;
|
int cwd_start;
|
||||||
|
|
||||||
char *target = u->dir;
|
|
||||||
|
|
||||||
DEBUGP (("changing working directory\n"));
|
DEBUGP (("changing working directory\n"));
|
||||||
|
|
||||||
/* Change working directory. To change to a non-absolute
|
/* Change working directory. To change to a non-absolute
|
||||||
@ -799,13 +799,20 @@ Error in server response, closing control connection.\n"));
|
|||||||
&& (con->rs != ST_OS400)
|
&& (con->rs != ST_OS400)
|
||||||
&& (con->rs != ST_VMS))
|
&& (con->rs != ST_VMS))
|
||||||
{
|
{
|
||||||
int idlen = strlen (con->id);
|
|
||||||
char *ntarget, *p;
|
char *ntarget, *p;
|
||||||
|
size_t idlen = strlen (con->id);
|
||||||
|
size_t len;
|
||||||
|
|
||||||
/* Strip trailing slash(es) from con->id. */
|
/* Strip trailing slash(es) from con->id. */
|
||||||
while (idlen > 0 && con->id[idlen - 1] == '/')
|
while (idlen > 0 && con->id[idlen - 1] == '/')
|
||||||
--idlen;
|
--idlen;
|
||||||
p = ntarget = (char *)alloca (idlen + 1 + strlen (u->dir) + 1);
|
|
||||||
|
len = idlen + 1 + strlen (target);
|
||||||
|
if (len < sizeof (targetbuf))
|
||||||
|
p = ntarget = targetbuf;
|
||||||
|
else
|
||||||
|
p = ntarget = xmalloc (len + 1);
|
||||||
|
|
||||||
memcpy (p, con->id, idlen);
|
memcpy (p, con->id, idlen);
|
||||||
p += idlen;
|
p += idlen;
|
||||||
*p++ = '/';
|
*p++ = '/';
|
||||||
@ -985,6 +992,9 @@ Error in server response, closing control connection.\n"));
|
|||||||
|
|
||||||
/* 2004-09-20 SMS. */
|
/* 2004-09-20 SMS. */
|
||||||
|
|
||||||
|
if (target != targetbuf)
|
||||||
|
xfree (target);
|
||||||
|
|
||||||
} /* else */
|
} /* else */
|
||||||
}
|
}
|
||||||
else /* do not CWD */
|
else /* do not CWD */
|
||||||
|
Loading…
Reference in New Issue
Block a user