mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
Drop usage of strncpy
This commit is contained in:
parent
8a919932a6
commit
8e6de1fb5f
@ -1,5 +1,20 @@
|
|||||||
2014-06-10 Giuseppe Scrivano <gscrivan@redhat.com>
|
2014-06-10 Giuseppe Scrivano <gscrivan@redhat.com>
|
||||||
|
|
||||||
|
* retr.c (getproxy): Return a dinamically allocated string and...
|
||||||
|
(retrieve_from_file, retrieve_url, url_uses_proxy): ...fix the caller
|
||||||
|
to handle it.
|
||||||
|
* init.c (home_dir): Replace strncpy with strdup.
|
||||||
|
* mswindows.c (struct fake_fork_info): Make lfilename a pointer.
|
||||||
|
(fake_fork_child): Replace strncpy with strdup.
|
||||||
|
* http.c (ensure_extension): Replace strncpy with memcpy, not much
|
||||||
|
better but make "make syntax-check" happy and we know the size.
|
||||||
|
* ftp.c (getftp): Add parameter last_expected_bytes.
|
||||||
|
(ftp_loop_internal): Pass parameter last_expected_bytes to getftp.
|
||||||
|
* ftp-basic.c: Remove declaration of ftp_last_respline.
|
||||||
|
(ftp_response): Do not set ftp_last_respline.
|
||||||
|
* css-url.c (get_uri_string): Replace strncpy with strdup.
|
||||||
|
* vms.c (set_vms_name): Replace strncpy with strdup.
|
||||||
|
|
||||||
* exits.c: Move WGET_EXIT_* definitions to...
|
* exits.c: Move WGET_EXIT_* definitions to...
|
||||||
* exits.h: ...here. Add WGET_EXIT_GENERIC_ERROR, WGET_EXIT_PARSE_ERROR.
|
* exits.h: ...here. Add WGET_EXIT_GENERIC_ERROR, WGET_EXIT_PARSE_ERROR.
|
||||||
Remove WGET_EXIT_MINIMUM.
|
Remove WGET_EXIT_MINIMUM.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Collect URLs from CSS source.
|
/* Collect URLs from CSS source.
|
||||||
Copyright (C) 1998, 2000, 2001, 2002, 2003, 2009, 2010, 2011 Free
|
Copyright (C) 1998, 2000, 2001, 2002, 2003, 2009, 2010, 2011, 2014 Free
|
||||||
Software Foundation, Inc.
|
Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GNU Wget.
|
This file is part of GNU Wget.
|
||||||
@ -76,12 +76,6 @@ extern int yylex (void);
|
|||||||
static char *
|
static char *
|
||||||
get_uri_string (const char *at, int *pos, int *length)
|
get_uri_string (const char *at, int *pos, int *length)
|
||||||
{
|
{
|
||||||
char *uri;
|
|
||||||
/*char buf[1024];
|
|
||||||
strncpy(buf,at + *pos, *length);
|
|
||||||
buf[*length] = '\0';
|
|
||||||
DEBUGP (("get_uri_string: \"%s\"\n", buf));*/
|
|
||||||
|
|
||||||
if (0 != strncasecmp (at + *pos, "url(", 4))
|
if (0 != strncasecmp (at + *pos, "url(", 4))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -107,14 +101,7 @@ get_uri_string (const char *at, int *pos, int *length)
|
|||||||
*length -= 2;
|
*length -= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
uri = xmalloc (*length + 1);
|
return xstrdup (at + *pos);
|
||||||
if (uri)
|
|
||||||
{
|
|
||||||
strncpy (uri, at + *pos, *length);
|
|
||||||
uri[*length] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
return uri;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -126,12 +113,6 @@ get_urls_css (struct map_context *ctx, int offset, int buf_length)
|
|||||||
int pos, length;
|
int pos, length;
|
||||||
char *uri;
|
char *uri;
|
||||||
|
|
||||||
/*
|
|
||||||
strncpy(tmp,ctx->text + offset, buf_length);
|
|
||||||
tmp[buf_length] = '\0';
|
|
||||||
DEBUGP (("get_urls_css: \"%s\"\n", tmp));
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* tell flex to scan from this buffer */
|
/* tell flex to scan from this buffer */
|
||||||
yy_scan_bytes (ctx->text + offset, buf_length);
|
yy_scan_bytes (ctx->text + offset, buf_length);
|
||||||
|
|
||||||
@ -165,7 +146,7 @@ get_urls_css (struct map_context *ctx, int offset, int buf_length)
|
|||||||
pos++;
|
pos++;
|
||||||
length -= 2;
|
length -= 2;
|
||||||
uri = xmalloc (length + 1);
|
uri = xmalloc (length + 1);
|
||||||
strncpy (uri, yytext + 1, length);
|
memcpy (uri, yytext + 1, length);
|
||||||
uri[length] = '\0';
|
uri[length] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Basic FTP routines.
|
/* Basic FTP routines.
|
||||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
|
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2014 Free Software Foundation,
|
||||||
Inc.
|
Inc.
|
||||||
|
|
||||||
This file is part of GNU Wget.
|
This file is part of GNU Wget.
|
||||||
@ -44,8 +44,6 @@ as that of the covered work. */
|
|||||||
#include "ftp.h"
|
#include "ftp.h"
|
||||||
#include "retr.h"
|
#include "retr.h"
|
||||||
|
|
||||||
char ftp_last_respline[128];
|
|
||||||
|
|
||||||
|
|
||||||
/* Get the response of FTP server and allocate enough room to handle
|
/* Get the response of FTP server and allocate enough room to handle
|
||||||
it. <CR> and <LF> characters are stripped from the line, and the
|
it. <CR> and <LF> characters are stripped from the line, and the
|
||||||
@ -84,8 +82,6 @@ ftp_response (int fd, char **ret_line)
|
|||||||
if (c_isdigit (line[0]) && c_isdigit (line[1]) && c_isdigit (line[2])
|
if (c_isdigit (line[0]) && c_isdigit (line[1]) && c_isdigit (line[2])
|
||||||
&& line[3] == ' ')
|
&& line[3] == ' ')
|
||||||
{
|
{
|
||||||
strncpy (ftp_last_respline, line, sizeof (ftp_last_respline));
|
|
||||||
ftp_last_respline[sizeof (ftp_last_respline) - 1] = '\0';
|
|
||||||
*ret_line = line;
|
*ret_line = line;
|
||||||
return FTPOK;
|
return FTPOK;
|
||||||
}
|
}
|
||||||
@ -1037,6 +1033,7 @@ ftp_syst (int csock, enum stype *server_type, enum ustype *unix_type)
|
|||||||
char *request, *respline;
|
char *request, *respline;
|
||||||
int nwritten;
|
int nwritten;
|
||||||
uerr_t err;
|
uerr_t err;
|
||||||
|
char *ftp_last_respline;
|
||||||
|
|
||||||
/* Send SYST request. */
|
/* Send SYST request. */
|
||||||
request = ftp_request ("SYST", NULL);
|
request = ftp_request ("SYST", NULL);
|
||||||
@ -1058,6 +1055,8 @@ ftp_syst (int csock, enum stype *server_type, enum ustype *unix_type)
|
|||||||
return FTPSRVERR;
|
return FTPSRVERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ftp_last_respline = strdup (respline);
|
||||||
|
|
||||||
/* Skip the number (215, but 200 (!!!) in case of VMS) */
|
/* Skip the number (215, but 200 (!!!) in case of VMS) */
|
||||||
strtok (respline, " ");
|
strtok (respline, " ");
|
||||||
|
|
||||||
@ -1092,6 +1091,7 @@ ftp_syst (int csock, enum stype *server_type, enum ustype *unix_type)
|
|||||||
else
|
else
|
||||||
*server_type = ST_OTHER;
|
*server_type = ST_OTHER;
|
||||||
|
|
||||||
|
xfree (ftp_last_respline);
|
||||||
xfree (respline);
|
xfree (respline);
|
||||||
/* All OK. */
|
/* All OK. */
|
||||||
return FTPOK;
|
return FTPOK;
|
||||||
|
14
src/ftp.c
14
src/ftp.c
@ -1,6 +1,6 @@
|
|||||||
/* File Transfer Protocol support.
|
/* File Transfer Protocol support.
|
||||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
|
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2014 Free Software Foundation,
|
||||||
Inc.
|
Inc.
|
||||||
|
|
||||||
This file is part of GNU Wget.
|
This file is part of GNU Wget.
|
||||||
@ -243,7 +243,8 @@ static uerr_t ftp_get_listing (struct url *, ccon *, struct fileinfo **);
|
|||||||
is non-NULL, the downloaded data will be written there as well. */
|
is non-NULL, the downloaded data will be written there as well. */
|
||||||
static uerr_t
|
static uerr_t
|
||||||
getftp (struct url *u, wgint passed_expected_bytes, wgint *qtyread,
|
getftp (struct url *u, wgint passed_expected_bytes, wgint *qtyread,
|
||||||
wgint restval, ccon *con, int count, FILE *warc_tmp)
|
wgint restval, ccon *con, int count, wgint *last_expected_bytes,
|
||||||
|
FILE *warc_tmp)
|
||||||
{
|
{
|
||||||
int csock, dtsock, local_sock, res;
|
int csock, dtsock, local_sock, res;
|
||||||
uerr_t err = RETROK; /* appease the compiler */
|
uerr_t err = RETROK; /* appease the compiler */
|
||||||
@ -1078,7 +1079,7 @@ Error in server response, closing control connection.\n"));
|
|||||||
logputs (LOG_VERBOSE, _("done.\n"));
|
logputs (LOG_VERBOSE, _("done.\n"));
|
||||||
|
|
||||||
if (! got_expected_bytes)
|
if (! got_expected_bytes)
|
||||||
expected_bytes = ftp_expected_bytes (ftp_last_respline);
|
expected_bytes = *last_expected_bytes;
|
||||||
} /* do retrieve */
|
} /* do retrieve */
|
||||||
|
|
||||||
if (cmd & DO_LIST)
|
if (cmd & DO_LIST)
|
||||||
@ -1127,7 +1128,7 @@ Error in server response, closing control connection.\n"));
|
|||||||
logputs (LOG_VERBOSE, _("done.\n"));
|
logputs (LOG_VERBOSE, _("done.\n"));
|
||||||
|
|
||||||
if (! got_expected_bytes)
|
if (! got_expected_bytes)
|
||||||
expected_bytes = ftp_expected_bytes (ftp_last_respline);
|
expected_bytes = *last_expected_bytes;
|
||||||
} /* cmd & DO_LIST */
|
} /* cmd & DO_LIST */
|
||||||
|
|
||||||
if (!(cmd & (DO_LIST | DO_RETR)) || (opt.spider && !(cmd & DO_LIST)))
|
if (!(cmd & (DO_LIST | DO_RETR)) || (opt.spider && !(cmd & DO_LIST)))
|
||||||
@ -1345,6 +1346,7 @@ Error in server response, closing control connection.\n"));
|
|||||||
|
|
||||||
/* Get the server to tell us if everything is retrieved. */
|
/* Get the server to tell us if everything is retrieved. */
|
||||||
err = ftp_response (csock, &respline);
|
err = ftp_response (csock, &respline);
|
||||||
|
*last_expected_bytes = ftp_expected_bytes (respline);
|
||||||
if (err != FTPOK)
|
if (err != FTPOK)
|
||||||
{
|
{
|
||||||
/* The control connection is decidedly closed. Print the time
|
/* The control connection is decidedly closed. Print the time
|
||||||
@ -1547,6 +1549,7 @@ ftp_loop_internal (struct url *u, struct fileinfo *f, ccon *con, char **local_fi
|
|||||||
bool warc_enabled = (opt.warc_filename != NULL);
|
bool warc_enabled = (opt.warc_filename != NULL);
|
||||||
FILE *warc_tmp = NULL;
|
FILE *warc_tmp = NULL;
|
||||||
ip_address *warc_ip = NULL;
|
ip_address *warc_ip = NULL;
|
||||||
|
wgint last_expected_bytes = 0;
|
||||||
|
|
||||||
/* Get the target, and set the name for the message accordingly. */
|
/* Get the target, and set the name for the message accordingly. */
|
||||||
if ((f == NULL) && (con->target))
|
if ((f == NULL) && (con->target))
|
||||||
@ -1673,7 +1676,8 @@ ftp_loop_internal (struct url *u, struct fileinfo *f, ccon *con, char **local_fi
|
|||||||
|
|
||||||
/* If we are working on a WARC record, getftp should also write
|
/* If we are working on a WARC record, getftp should also write
|
||||||
to the warc_tmp file. */
|
to the warc_tmp file. */
|
||||||
err = getftp (u, len, &qtyread, restval, con, count, warc_tmp);
|
err = getftp (u, len, &qtyread, restval, con, count, &last_expected_bytes,
|
||||||
|
warc_tmp);
|
||||||
|
|
||||||
if (con->csock == -1)
|
if (con->csock == -1)
|
||||||
con->st &= ~DONE_CWD;
|
con->st &= ~DONE_CWD;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* HTTP support.
|
/* HTTP support.
|
||||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation,
|
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014 Free Software Foundation,
|
||||||
Inc.
|
Inc.
|
||||||
|
|
||||||
This file is part of GNU Wget.
|
This file is part of GNU Wget.
|
||||||
@ -4033,10 +4033,12 @@ ensure_extension (struct http_stat *hs, const char *ext, int *dt)
|
|||||||
{
|
{
|
||||||
char *last_period_in_local_filename = strrchr (hs->local_file, '.');
|
char *last_period_in_local_filename = strrchr (hs->local_file, '.');
|
||||||
char shortext[8];
|
char shortext[8];
|
||||||
int len = strlen (ext);
|
int len;
|
||||||
|
shortext[0] = '\0';
|
||||||
|
len = strlen (ext);
|
||||||
if (len == 5)
|
if (len == 5)
|
||||||
{
|
{
|
||||||
strncpy (shortext, ext, len - 1);
|
memcpy (shortext, ext, len - 1);
|
||||||
shortext[len - 1] = '\0';
|
shortext[len - 1] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Reading/parsing the initialization file.
|
/* Reading/parsing the initialization file.
|
||||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation,
|
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014 Free Software Foundation,
|
||||||
Inc.
|
Inc.
|
||||||
|
|
||||||
This file is part of GNU Wget.
|
This file is part of GNU Wget.
|
||||||
@ -445,12 +445,7 @@ home_dir (void)
|
|||||||
assert (p);
|
assert (p);
|
||||||
|
|
||||||
len = p - buff + 1;
|
len = p - buff + 1;
|
||||||
buff = malloc (len + 1);
|
buff = strdup (_w32_get_argv0 ());
|
||||||
if (buff == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
strncpy (buff, _w32_get_argv0 (), len);
|
|
||||||
buff[len] = '\0';
|
|
||||||
|
|
||||||
home = buf;
|
home = buf;
|
||||||
#elif !defined(WINDOWS)
|
#elif !defined(WINDOWS)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* mswindows.c -- Windows-specific support
|
/* mswindows.c -- Windows-specific support
|
||||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
|
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2014 Free Software Foundation,
|
||||||
Inc.
|
Inc.
|
||||||
|
|
||||||
This file is part of GNU Wget.
|
This file is part of GNU Wget.
|
||||||
@ -123,7 +123,7 @@ struct fake_fork_info
|
|||||||
{
|
{
|
||||||
HANDLE event;
|
HANDLE event;
|
||||||
bool logfile_changed;
|
bool logfile_changed;
|
||||||
char lfilename[MAX_PATH + 1];
|
char *lfilename;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Determines if we are the child and if so performs the child logic.
|
/* Determines if we are the child and if so performs the child logic.
|
||||||
@ -165,8 +165,7 @@ fake_fork_child (void)
|
|||||||
if (new_log_fp)
|
if (new_log_fp)
|
||||||
{
|
{
|
||||||
info->logfile_changed = true;
|
info->logfile_changed = true;
|
||||||
strncpy (info->lfilename, opt.lfilename, sizeof (info->lfilename));
|
info->lfilename = strdup (opt.lfilename);
|
||||||
info->lfilename[sizeof (info->lfilename) - 1] = '\0';
|
|
||||||
fclose (new_log_fp);
|
fclose (new_log_fp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
20
src/retr.c
20
src/retr.c
@ -1,6 +1,6 @@
|
|||||||
/* File retrieval.
|
/* File retrieval.
|
||||||
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
|
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2014 Free Software Foundation,
|
||||||
Inc.
|
Inc.
|
||||||
|
|
||||||
This file is part of GNU Wget.
|
This file is part of GNU Wget.
|
||||||
@ -782,6 +782,7 @@ retrieve_url (struct url * orig_parsed, const char *origurl, char **file,
|
|||||||
result = PROXERR;
|
result = PROXERR;
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
free (proxy);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (u->scheme == SCHEME_HTTP
|
if (u->scheme == SCHEME_HTTP
|
||||||
@ -1065,8 +1066,9 @@ retrieve_from_file (const char *file, bool html, int *count)
|
|||||||
|
|
||||||
parsed_url = url_parse (cur_url->url->url, NULL, tmpiri, true);
|
parsed_url = url_parse (cur_url->url->url, NULL, tmpiri, true);
|
||||||
|
|
||||||
|
char *proxy = getproxy (cur_url->url);
|
||||||
if ((opt.recursive || opt.page_requisites)
|
if ((opt.recursive || opt.page_requisites)
|
||||||
&& (cur_url->url->scheme != SCHEME_FTP || getproxy (cur_url->url)))
|
&& (cur_url->url->scheme != SCHEME_FTP || proxy))
|
||||||
{
|
{
|
||||||
int old_follow_ftp = opt.follow_ftp;
|
int old_follow_ftp = opt.follow_ftp;
|
||||||
|
|
||||||
@ -1084,6 +1086,7 @@ retrieve_from_file (const char *file, bool html, int *count)
|
|||||||
cur_url->url->url, &filename,
|
cur_url->url->url, &filename,
|
||||||
&new_file, NULL, &dt, opt.recursive, tmpiri,
|
&new_file, NULL, &dt, opt.recursive, tmpiri,
|
||||||
true);
|
true);
|
||||||
|
free(proxy);
|
||||||
|
|
||||||
if (parsed_url)
|
if (parsed_url)
|
||||||
url_free (parsed_url);
|
url_free (parsed_url);
|
||||||
@ -1236,7 +1239,6 @@ getproxy (struct url *u)
|
|||||||
{
|
{
|
||||||
char *proxy = NULL;
|
char *proxy = NULL;
|
||||||
char *rewritten_url;
|
char *rewritten_url;
|
||||||
static char rewritten_storage[1024];
|
|
||||||
|
|
||||||
if (!opt.use_proxy)
|
if (!opt.use_proxy)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -1266,13 +1268,9 @@ getproxy (struct url *u)
|
|||||||
getproxy() to return static storage. */
|
getproxy() to return static storage. */
|
||||||
rewritten_url = rewrite_shorthand_url (proxy);
|
rewritten_url = rewrite_shorthand_url (proxy);
|
||||||
if (rewritten_url)
|
if (rewritten_url)
|
||||||
{
|
return rewritten_url;
|
||||||
strncpy (rewritten_storage, rewritten_url, sizeof (rewritten_storage));
|
|
||||||
rewritten_storage[sizeof (rewritten_storage) - 1] = '\0';
|
|
||||||
proxy = rewritten_storage;
|
|
||||||
}
|
|
||||||
|
|
||||||
return proxy;
|
return strdup(proxy);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns true if URL would be downloaded through a proxy. */
|
/* Returns true if URL would be downloaded through a proxy. */
|
||||||
@ -1283,7 +1281,9 @@ url_uses_proxy (struct url * u)
|
|||||||
bool ret;
|
bool ret;
|
||||||
if (!u)
|
if (!u)
|
||||||
return false;
|
return false;
|
||||||
ret = getproxy (u) != NULL;
|
char *proxy = getproxy (u);
|
||||||
|
ret = proxy != NULL;
|
||||||
|
free(proxy);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -841,12 +841,11 @@ else
|
|||||||
|
|
||||||
/* Action routine for decc$to_vms(), in utime(). */
|
/* Action routine for decc$to_vms(), in utime(). */
|
||||||
|
|
||||||
char vms_path[ NAMX$C_MAXRSS+ 1];
|
char *vms_path;
|
||||||
|
|
||||||
int set_vms_name( char *name, int type)
|
int set_vms_name( char *name, int type)
|
||||||
{
|
{
|
||||||
strncpy( vms_path, name, NAMX$C_MAXRSS);
|
vms_path = strdup(name);
|
||||||
vms_path[ NAMX$C_MAXRSS] = '\0';
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user