don't pay attention to special characters if they don't come from the command
line (from jmcneill)
This commit is contained in:
parent
8933a7a2ee
commit
d138fe3e34
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: fetch.c,v 1.205 2013/11/07 02:06:51 christos Exp $ */
|
||||
/* $NetBSD: fetch.c,v 1.206 2014/10/26 16:21:59 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1997-2009 The NetBSD Foundation, Inc.
|
||||
|
@ -34,7 +34,7 @@
|
|||
|
||||
#include <sys/cdefs.h>
|
||||
#ifndef lint
|
||||
__RCSID("$NetBSD: fetch.c,v 1.205 2013/11/07 02:06:51 christos Exp $");
|
||||
__RCSID("$NetBSD: fetch.c,v 1.206 2014/10/26 16:21:59 christos Exp $");
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
|
@ -571,7 +571,7 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
|
|||
url_decode(decodedpath);
|
||||
|
||||
if (outfile)
|
||||
savefile = ftp_strdup(outfile);
|
||||
savefile = outfile;
|
||||
else {
|
||||
cp = strrchr(decodedpath, '/'); /* find savefile */
|
||||
if (cp != NULL)
|
||||
|
@ -595,8 +595,7 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
|
|||
rangestart = rangeend = entitylen = -1;
|
||||
mtime = -1;
|
||||
if (restartautofetch) {
|
||||
if (strcmp(savefile, "-") != 0 && *savefile != '|' &&
|
||||
stat(savefile, &sb) == 0)
|
||||
if (stat(savefile, &sb) == 0)
|
||||
restart_point = sb.st_size;
|
||||
}
|
||||
if (urltype == FILE_URL_T) { /* file:// URLs */
|
||||
|
@ -1150,18 +1149,26 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
|
|||
}
|
||||
} /* end of ftp:// or http:// specific setup */
|
||||
|
||||
/* Open the output file. */
|
||||
if (strcmp(savefile, "-") == 0) {
|
||||
fout = stdout;
|
||||
} else if (*savefile == '|') {
|
||||
oldpipe = xsignal(SIGPIPE, SIG_IGN);
|
||||
fout = popen(savefile + 1, "w");
|
||||
if (fout == NULL) {
|
||||
warn("Can't execute `%s'", savefile + 1);
|
||||
goto cleanup_fetch_url;
|
||||
/* Open the output file. */
|
||||
|
||||
/*
|
||||
* Only trust filenames with special meaning if they came from
|
||||
* the command line
|
||||
*/
|
||||
if (outfile == savefile) {
|
||||
if (strcmp(savefile, "-") == 0) {
|
||||
fout = stdout;
|
||||
} else if (*savefile == '|') {
|
||||
oldpipe = xsignal(SIGPIPE, SIG_IGN);
|
||||
fout = popen(savefile + 1, "w");
|
||||
if (fout == NULL) {
|
||||
warn("Can't execute `%s'", savefile + 1);
|
||||
goto cleanup_fetch_url;
|
||||
}
|
||||
closefunc = pclose;
|
||||
}
|
||||
closefunc = pclose;
|
||||
} else {
|
||||
}
|
||||
if (fout == NULL) {
|
||||
if ((rangeend != -1 && rangeend <= restart_point) ||
|
||||
(rangestart == -1 && filesize != -1 && filesize <= restart_point)) {
|
||||
/* already done */
|
||||
|
@ -1379,7 +1386,8 @@ fetch_url(const char *url, const char *proxyenv, char *proxyauth, char *wwwauth)
|
|||
(*closefunc)(fout);
|
||||
if (res0)
|
||||
freeaddrinfo(res0);
|
||||
FREEPTR(savefile);
|
||||
if (savefile != outfile)
|
||||
FREEPTR(savefile);
|
||||
FREEPTR(uuser);
|
||||
if (pass != NULL)
|
||||
memset(pass, 0, strlen(pass));
|
||||
|
|
Loading…
Reference in New Issue