basebuilder_pel7x64builder0
6 years ago
24 changed files with 2303 additions and 0 deletions
@ -0,0 +1,151 @@ |
|||||||
|
From 043366ac3248a58662a6fbf47a1dd688a75d0e78 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Darshit Shah <darnir@gmail.com> |
||||||
|
Date: Mon, 8 Sep 2014 00:41:17 +0530 |
||||||
|
Subject: [PATCH 1/2] Fix R7-2014-15: Arbitrary Symlink Access |
||||||
|
|
||||||
|
Wget was susceptible to a symlink attack which could create arbitrary |
||||||
|
files, directories or symbolic links and set their permissions when |
||||||
|
retrieving a directory recursively through FTP. This commit changes the |
||||||
|
default settings in Wget such that Wget no longer creates local symbolic |
||||||
|
links, but rather traverses them and retrieves the pointed-to file in |
||||||
|
such a retrieval. |
||||||
|
|
||||||
|
The old behaviour can be attained by passing the --retr-symlinks=no |
||||||
|
option to the Wget invokation command. |
||||||
|
--- |
||||||
|
doc/wget.texi | 23 ++++++++++++----------- |
||||||
|
src/init.c | 16 ++++++++++++++++ |
||||||
|
2 files changed, 28 insertions(+), 11 deletions(-) |
||||||
|
|
||||||
|
diff --git a/doc/wget.texi b/doc/wget.texi |
||||||
|
index a31eb5e..f54e98d 100644 |
||||||
|
--- a/doc/wget.texi |
||||||
|
+++ b/doc/wget.texi |
||||||
|
@@ -1883,17 +1883,18 @@ Preserve remote file permissions instead of permissions set by umask. |
||||||
|
|
||||||
|
@cindex symbolic links, retrieving |
||||||
|
@item --retr-symlinks |
||||||
|
-Usually, when retrieving @sc{ftp} directories recursively and a symbolic |
||||||
|
-link is encountered, the linked-to file is not downloaded. Instead, a |
||||||
|
-matching symbolic link is created on the local filesystem. The |
||||||
|
-pointed-to file will not be downloaded unless this recursive retrieval |
||||||
|
-would have encountered it separately and downloaded it anyway. |
||||||
|
- |
||||||
|
-When @samp{--retr-symlinks} is specified, however, symbolic links are |
||||||
|
-traversed and the pointed-to files are retrieved. At this time, this |
||||||
|
-option does not cause Wget to traverse symlinks to directories and |
||||||
|
-recurse through them, but in the future it should be enhanced to do |
||||||
|
-this. |
||||||
|
+By default, when retrieving @sc{ftp} directories recursively and a symbolic link |
||||||
|
+is encountered, the symbolic link is traversed and the pointed-to files are |
||||||
|
+retrieved. Currently, Wget does not traverse symbolic links to directories to |
||||||
|
+download them recursively, though this feature may be added in the future. |
||||||
|
+ |
||||||
|
+When @samp{--retr-symlinks=no} is specified, the linked-to file is not |
||||||
|
+downloaded. Instead, a matching symbolic link is created on the local |
||||||
|
+filesystem. The pointed-to file will not be retrieved unless this recursive |
||||||
|
+retrieval would have encountered it separately and downloaded it anyway. This |
||||||
|
+option poses a security risk where a malicious FTP Server may cause Wget to |
||||||
|
+write to files outside of the intended directories through a specially crafted |
||||||
|
+@sc{.listing} file. |
||||||
|
|
||||||
|
Note that when retrieving a file (not a directory) because it was |
||||||
|
specified on the command-line, rather than because it was recursed to, |
||||||
|
diff --git a/src/init.c b/src/init.c |
||||||
|
index 93e95f8..94b6f8b 100644 |
||||||
|
--- a/src/init.c |
||||||
|
+++ b/src/init.c |
||||||
|
@@ -366,6 +366,22 @@ defaults (void) |
||||||
|
|
||||||
|
opt.dns_cache = true; |
||||||
|
opt.ftp_pasv = true; |
||||||
|
+ /* 2014-09-07 Darshit Shah <darnir@gmail.com> |
||||||
|
+ * opt.retr_symlinks is set to true by default. Creating symbolic links on the |
||||||
|
+ * local filesystem pose a security threat by malicious FTP Servers that |
||||||
|
+ * server a specially crafted .listing file akin to this: |
||||||
|
+ * |
||||||
|
+ * lrwxrwxrwx 1 root root 33 Dec 25 2012 JoCxl6d8rFU -> / |
||||||
|
+ * drwxrwxr-x 15 1024 106 4096 Aug 28 02:02 JoCxl6d8rFU |
||||||
|
+ * |
||||||
|
+ * A .listing file in this fashion makes Wget susceptiple to a symlink attack |
||||||
|
+ * wherein the attacker is able to create arbitrary files, directories and |
||||||
|
+ * symbolic links on the target system and even set permissions. |
||||||
|
+ * |
||||||
|
+ * Hence, by default Wget attempts to retrieve the pointed-to files and does |
||||||
|
+ * not create the symbolic links locally. |
||||||
|
+ */ |
||||||
|
+ opt.retr_symlinks = true; |
||||||
|
|
||||||
|
#ifdef HAVE_SSL |
||||||
|
opt.check_cert = true; |
||||||
|
-- |
||||||
|
2.1.0 |
||||||
|
|
||||||
|
From bfa8c9cc9937f686a4de110e49710061267f8d9e Mon Sep 17 00:00:00 2001 |
||||||
|
From: Darshit Shah <darnir@gmail.com> |
||||||
|
Date: Mon, 8 Sep 2014 15:07:45 +0530 |
||||||
|
Subject: [PATCH 2/2] Add checks for valid listing file in FTP |
||||||
|
|
||||||
|
When Wget retrieves a file through FTP, it first downloads a .listing |
||||||
|
file and parses it for information about the files and other metadata. |
||||||
|
Some servers may serve invalid .listing files. This patch checks for one |
||||||
|
such known inconsistency wherein multiple lines in a listing file have |
||||||
|
the same name. Such a filesystem is clearly not possible and hence we |
||||||
|
eliminate duplicate entries here. |
||||||
|
|
||||||
|
Signed-off-by: Darshit Shah <darnir@gmail.com> |
||||||
|
--- |
||||||
|
src/ftp.c | 27 +++++++++++++++++++++++++-- |
||||||
|
1 file changed, 25 insertions(+), 2 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/ftp.c b/src/ftp.c |
||||||
|
index 2d54333..054cb61 100644 |
||||||
|
--- a/src/ftp.c |
||||||
|
+++ b/src/ftp.c |
||||||
|
@@ -2211,6 +2211,29 @@ has_insecure_name_p (const char *s) |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
+/* Test if the file node is invalid. This can occur due to malformed or |
||||||
|
+ * maliciously crafted listing files being returned by the server. |
||||||
|
+ * |
||||||
|
+ * Currently, this function only tests if there are multiple entries in the |
||||||
|
+ * listing file by the same name. However this function can be expanded as more |
||||||
|
+ * such illegal listing formats are discovered. */ |
||||||
|
+static bool |
||||||
|
+is_invalid_entry (struct fileinfo *f) |
||||||
|
+{ |
||||||
|
+ struct fileinfo *cur; |
||||||
|
+ cur = f; |
||||||
|
+ char *f_name = f->name; |
||||||
|
+ /* If the node we're currently checking has a duplicate later, we eliminate |
||||||
|
+ * the current node and leave the next one intact. */ |
||||||
|
+ while (cur->next) |
||||||
|
+ { |
||||||
|
+ cur = cur->next; |
||||||
|
+ if (strcmp(f_name, cur->name) == 0) |
||||||
|
+ return true; |
||||||
|
+ } |
||||||
|
+ return false; |
||||||
|
+} |
||||||
|
+ |
||||||
|
/* A near-top-level function to retrieve the files in a directory. |
||||||
|
The function calls ftp_get_listing, to get a linked list of files. |
||||||
|
Then it weeds out the file names that do not match the pattern. |
||||||
|
@@ -2248,11 +2271,11 @@ ftp_retrieve_glob (struct url *u, ccon *con, int action) |
||||||
|
f = f->next; |
||||||
|
} |
||||||
|
} |
||||||
|
- /* Remove all files with possible harmful names */ |
||||||
|
+ /* Remove all files with possible harmful names or invalid entries. */ |
||||||
|
f = start; |
||||||
|
while (f) |
||||||
|
{ |
||||||
|
- if (has_insecure_name_p (f->name)) |
||||||
|
+ if (has_insecure_name_p (f->name) || is_invalid_entry (f)) |
||||||
|
{ |
||||||
|
logprintf (LOG_VERBOSE, _("Rejecting %s.\n"), |
||||||
|
quote (f->name)); |
||||||
|
-- |
||||||
|
2.1.0 |
||||||
|
|
@ -0,0 +1,261 @@ |
|||||||
|
diff --git a/src/ftp.c b/src/ftp.c |
||||||
|
index 2be2c76..345718f 100644 |
||||||
|
--- a/src/ftp.c |
||||||
|
+++ b/src/ftp.c |
||||||
|
@@ -234,14 +234,15 @@ print_length (wgint size, wgint start, bool authoritative) |
||||||
|
logputs (LOG_VERBOSE, !authoritative ? _(" (unauthoritative)\n") : "\n"); |
||||||
|
} |
||||||
|
|
||||||
|
-static uerr_t ftp_get_listing (struct url *, ccon *, struct fileinfo **); |
||||||
|
+static uerr_t ftp_get_listing (struct url *, struct url *, ccon *, struct fileinfo **); |
||||||
|
|
||||||
|
/* Retrieves a file with denoted parameters through opening an FTP |
||||||
|
connection to the server. It always closes the data connection, |
||||||
|
and closes the control connection in case of error. If warc_tmp |
||||||
|
is non-NULL, the downloaded data will be written there as well. */ |
||||||
|
static uerr_t |
||||||
|
-getftp (struct url *u, wgint passed_expected_bytes, wgint *qtyread, |
||||||
|
+getftp (struct url *u, struct url *original_url, |
||||||
|
+ wgint passed_expected_bytes, wgint *qtyread, |
||||||
|
wgint restval, ccon *con, int count, FILE *warc_tmp) |
||||||
|
{ |
||||||
|
int csock, dtsock, local_sock, res; |
||||||
|
@@ -944,7 +945,7 @@ Error in server response, closing control connection.\n")); |
||||||
|
bool exists = false; |
||||||
|
uerr_t res; |
||||||
|
struct fileinfo *f; |
||||||
|
- res = ftp_get_listing (u, con, &f); |
||||||
|
+ res = ftp_get_listing (u, original_url, con, &f); |
||||||
|
/* Set the DO_RETR command flag again, because it gets unset when |
||||||
|
calling ftp_get_listing() and would otherwise cause an assertion |
||||||
|
failure earlier on when this function gets repeatedly called |
||||||
|
@@ -1392,7 +1393,8 @@ Error in server response, closing control connection.\n")); |
||||||
|
This loop either gets commands from con, or (if ON_YOUR_OWN is |
||||||
|
set), makes them up to retrieve the file given by the URL. */ |
||||||
|
static uerr_t |
||||||
|
-ftp_loop_internal (struct url *u, struct fileinfo *f, ccon *con, char **local_file) |
||||||
|
+ftp_loop_internal (struct url *u, struct url *original_url, struct fileinfo *f, |
||||||
|
+ ccon *con, char **local_file) |
||||||
|
{ |
||||||
|
int count, orig_lp; |
||||||
|
wgint restval, len = 0, qtyread = 0; |
||||||
|
@@ -1415,7 +1417,7 @@ ftp_loop_internal (struct url *u, struct fileinfo *f, ccon *con, char **local_fi |
||||||
|
else |
||||||
|
{ |
||||||
|
/* URL-derived file. Consider "-O file" name. */ |
||||||
|
- con->target = url_file_name (u, NULL); |
||||||
|
+ con->target = url_file_name (opt.trustservernames || !original_url ? u : original_url, NULL); |
||||||
|
if (!opt.output_document) |
||||||
|
locf = con->target; |
||||||
|
else |
||||||
|
@@ -1524,7 +1526,7 @@ 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 |
||||||
|
to the warc_tmp file. */ |
||||||
|
- err = getftp (u, len, &qtyread, restval, con, count, warc_tmp); |
||||||
|
+ err = getftp (u, original_url, len, &qtyread, restval, con, count, warc_tmp); |
||||||
|
|
||||||
|
if (con->csock == -1) |
||||||
|
con->st &= ~DONE_CWD; |
||||||
|
@@ -1677,7 +1679,8 @@ Removing file due to --delete-after in ftp_loop_internal():\n")); |
||||||
|
/* Return the directory listing in a reusable format. The directory |
||||||
|
is specifed in u->dir. */ |
||||||
|
static uerr_t |
||||||
|
-ftp_get_listing (struct url *u, ccon *con, struct fileinfo **f) |
||||||
|
+ftp_get_listing (struct url *u, struct url *original_url, ccon *con, |
||||||
|
+ struct fileinfo **f) |
||||||
|
{ |
||||||
|
uerr_t err; |
||||||
|
char *uf; /* url file name */ |
||||||
|
@@ -1698,7 +1701,7 @@ ftp_get_listing (struct url *u, ccon *con, struct fileinfo **f) |
||||||
|
|
||||||
|
con->target = xstrdup (lf); |
||||||
|
xfree (lf); |
||||||
|
- err = ftp_loop_internal (u, NULL, con, NULL); |
||||||
|
+ err = ftp_loop_internal (u, original_url, NULL, con, NULL); |
||||||
|
lf = xstrdup (con->target); |
||||||
|
xfree (con->target); |
||||||
|
con->target = old_target; |
||||||
|
@@ -1721,8 +1724,9 @@ ftp_get_listing (struct url *u, ccon *con, struct fileinfo **f) |
||||||
|
return err; |
||||||
|
} |
||||||
|
|
||||||
|
-static uerr_t ftp_retrieve_dirs (struct url *, struct fileinfo *, ccon *); |
||||||
|
-static uerr_t ftp_retrieve_glob (struct url *, ccon *, int); |
||||||
|
+static uerr_t ftp_retrieve_dirs (struct url *, struct url *, |
||||||
|
+ struct fileinfo *, ccon *); |
||||||
|
+static uerr_t ftp_retrieve_glob (struct url *, struct url *, ccon *, int); |
||||||
|
static struct fileinfo *delelement (struct fileinfo *, struct fileinfo **); |
||||||
|
static void freefileinfo (struct fileinfo *f); |
||||||
|
|
||||||
|
@@ -1734,7 +1738,8 @@ static void freefileinfo (struct fileinfo *f); |
||||||
|
If opt.recursive is set, after all files have been retrieved, |
||||||
|
ftp_retrieve_dirs will be called to retrieve the directories. */ |
||||||
|
static uerr_t |
||||||
|
-ftp_retrieve_list (struct url *u, struct fileinfo *f, ccon *con) |
||||||
|
+ftp_retrieve_list (struct url *u, struct url *original_url, |
||||||
|
+ struct fileinfo *f, ccon *con) |
||||||
|
{ |
||||||
|
static int depth = 0; |
||||||
|
uerr_t err; |
||||||
|
@@ -1893,7 +1898,9 @@ Already have correct symlink %s -> %s\n\n"), |
||||||
|
else /* opt.retr_symlinks */ |
||||||
|
{ |
||||||
|
if (dlthis) |
||||||
|
- err = ftp_loop_internal (u, f, con, NULL); |
||||||
|
+ { |
||||||
|
+ err = ftp_loop_internal (u, original_url, f, con, NULL); |
||||||
|
+ } |
||||||
|
} /* opt.retr_symlinks */ |
||||||
|
break; |
||||||
|
case FT_DIRECTORY: |
||||||
|
@@ -1904,7 +1911,9 @@ Already have correct symlink %s -> %s\n\n"), |
||||||
|
case FT_PLAINFILE: |
||||||
|
/* Call the retrieve loop. */ |
||||||
|
if (dlthis) |
||||||
|
- err = ftp_loop_internal (u, f, con, NULL); |
||||||
|
+ { |
||||||
|
+ err = ftp_loop_internal (u, original_url, f, con, NULL); |
||||||
|
+ } |
||||||
|
break; |
||||||
|
case FT_UNKNOWN: |
||||||
|
logprintf (LOG_NOTQUIET, _("%s: unknown/unsupported file type.\n"), |
||||||
|
@@ -1969,7 +1978,7 @@ Already have correct symlink %s -> %s\n\n"), |
||||||
|
/* We do not want to call ftp_retrieve_dirs here */ |
||||||
|
if (opt.recursive && |
||||||
|
!(opt.reclevel != INFINITE_RECURSION && depth >= opt.reclevel)) |
||||||
|
- err = ftp_retrieve_dirs (u, orig, con); |
||||||
|
+ err = ftp_retrieve_dirs (u, original_url, orig, con); |
||||||
|
else if (opt.recursive) |
||||||
|
DEBUGP ((_("Will not retrieve dirs since depth is %d (max %d).\n"), |
||||||
|
depth, opt.reclevel)); |
||||||
|
@@ -1982,7 +1991,8 @@ Already have correct symlink %s -> %s\n\n"), |
||||||
|
ftp_retrieve_glob on each directory entry. The function knows |
||||||
|
about excluded directories. */ |
||||||
|
static uerr_t |
||||||
|
-ftp_retrieve_dirs (struct url *u, struct fileinfo *f, ccon *con) |
||||||
|
+ftp_retrieve_dirs (struct url *u, struct url *original_url, |
||||||
|
+ struct fileinfo *f, ccon *con) |
||||||
|
{ |
||||||
|
char *container = NULL; |
||||||
|
int container_size = 0; |
||||||
|
@@ -2032,7 +2042,7 @@ Not descending to %s as it is excluded/not-included.\n"), |
||||||
|
odir = xstrdup (u->dir); /* because url_set_dir will free |
||||||
|
u->dir. */ |
||||||
|
url_set_dir (u, newdir); |
||||||
|
- ftp_retrieve_glob (u, con, GLOB_GETALL); |
||||||
|
+ ftp_retrieve_glob (u, original_url, con, GLOB_GETALL); |
||||||
|
url_set_dir (u, odir); |
||||||
|
xfree (odir); |
||||||
|
|
||||||
|
@@ -2091,14 +2101,15 @@ is_invalid_entry (struct fileinfo *f) |
||||||
|
GLOB_GLOBALL, use globbing; if it's GLOB_GETALL, download the whole |
||||||
|
directory. */ |
||||||
|
static uerr_t |
||||||
|
-ftp_retrieve_glob (struct url *u, ccon *con, int action) |
||||||
|
+ftp_retrieve_glob (struct url *u, struct url *original_url, |
||||||
|
+ ccon *con, int action) |
||||||
|
{ |
||||||
|
struct fileinfo *f, *start; |
||||||
|
uerr_t res; |
||||||
|
|
||||||
|
con->cmd |= LEAVE_PENDING; |
||||||
|
|
||||||
|
- res = ftp_get_listing (u, con, &start); |
||||||
|
+ res = ftp_get_listing (u, original_url, con, &start); |
||||||
|
if (res != RETROK) |
||||||
|
return res; |
||||||
|
/* First: weed out that do not conform the global rules given in |
||||||
|
@@ -2194,7 +2205,7 @@ ftp_retrieve_glob (struct url *u, ccon *con, int action) |
||||||
|
if (start) |
||||||
|
{ |
||||||
|
/* Just get everything. */ |
||||||
|
- res = ftp_retrieve_list (u, start, con); |
||||||
|
+ res = ftp_retrieve_list (u, original_url, start, con); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
@@ -2210,7 +2221,7 @@ ftp_retrieve_glob (struct url *u, ccon *con, int action) |
||||||
|
{ |
||||||
|
/* Let's try retrieving it anyway. */ |
||||||
|
con->st |= ON_YOUR_OWN; |
||||||
|
- res = ftp_loop_internal (u, NULL, con, NULL); |
||||||
|
+ res = ftp_loop_internal (u, original_url, NULL, con, NULL); |
||||||
|
return res; |
||||||
|
} |
||||||
|
|
||||||
|
@@ -2230,8 +2241,8 @@ ftp_retrieve_glob (struct url *u, ccon *con, int action) |
||||||
|
of URL. Inherently, its capabilities are limited on what can be |
||||||
|
encoded into a URL. */ |
||||||
|
uerr_t |
||||||
|
-ftp_loop (struct url *u, char **local_file, int *dt, struct url *proxy, |
||||||
|
- bool recursive, bool glob) |
||||||
|
+ftp_loop (struct url *u, struct url *original_url, char **local_file, int *dt, |
||||||
|
+ struct url *proxy, bool recursive, bool glob) |
||||||
|
{ |
||||||
|
ccon con; /* FTP connection */ |
||||||
|
uerr_t res; |
||||||
|
@@ -2252,16 +2263,17 @@ ftp_loop (struct url *u, char **local_file, int *dt, struct url *proxy, |
||||||
|
if (!*u->file && !recursive) |
||||||
|
{ |
||||||
|
struct fileinfo *f; |
||||||
|
- res = ftp_get_listing (u, &con, &f); |
||||||
|
+ res = ftp_get_listing (u, original_url, &con, &f); |
||||||
|
|
||||||
|
if (res == RETROK) |
||||||
|
{ |
||||||
|
if (opt.htmlify && !opt.spider) |
||||||
|
{ |
||||||
|
+ struct url *url_file = opt.trustservernames ? u : original_url; |
||||||
|
char *filename = (opt.output_document |
||||||
|
? xstrdup (opt.output_document) |
||||||
|
: (con.target ? xstrdup (con.target) |
||||||
|
- : url_file_name (u, NULL))); |
||||||
|
+ : url_file_name (url_file, NULL))); |
||||||
|
res = ftp_index (filename, u, f); |
||||||
|
if (res == FTPOK && opt.verbose) |
||||||
|
{ |
||||||
|
@@ -2306,11 +2318,13 @@ ftp_loop (struct url *u, char **local_file, int *dt, struct url *proxy, |
||||||
|
/* ftp_retrieve_glob is a catch-all function that gets called |
||||||
|
if we need globbing, time-stamping, recursion or preserve |
||||||
|
permissions. Its third argument is just what we really need. */ |
||||||
|
- res = ftp_retrieve_glob (u, &con, |
||||||
|
+ res = ftp_retrieve_glob (u, original_url, &con, |
||||||
|
ispattern ? GLOB_GLOBALL : GLOB_GETONE); |
||||||
|
} |
||||||
|
else |
||||||
|
- res = ftp_loop_internal (u, NULL, &con, local_file); |
||||||
|
+ { |
||||||
|
+ res = ftp_loop_internal (u, original_url, NULL, &con, local_file); |
||||||
|
+ } |
||||||
|
} |
||||||
|
if (res == FTPOK) |
||||||
|
res = RETROK; |
||||||
|
diff --git a/src/ftp.h b/src/ftp.h |
||||||
|
index be00d88..2abc9c0 100644 |
||||||
|
--- a/src/ftp.h |
||||||
|
+++ b/src/ftp.h |
||||||
|
@@ -129,7 +129,8 @@ enum wget_ftp_fstatus |
||||||
|
}; |
||||||
|
|
||||||
|
struct fileinfo *ftp_parse_ls (const char *, const enum stype); |
||||||
|
-uerr_t ftp_loop (struct url *, char **, int *, struct url *, bool, bool); |
||||||
|
+uerr_t ftp_loop (struct url *, struct url *, char **, int *, struct url *, |
||||||
|
+ bool, bool); |
||||||
|
|
||||||
|
uerr_t ftp_index (const char *, struct url *, struct fileinfo *); |
||||||
|
|
||||||
|
diff --git a/src/retr.c b/src/retr.c |
||||||
|
index 66624dc..21fad56 100644 |
||||||
|
--- a/src/retr.c |
||||||
|
+++ b/src/retr.c |
||||||
|
@@ -794,7 +794,8 @@ retrieve_url (struct url * orig_parsed, const char *origurl, char **file, |
||||||
|
if (redirection_count) |
||||||
|
oldrec = glob = false; |
||||||
|
|
||||||
|
- result = ftp_loop (u, &local_file, dt, proxy_url, recursive, glob); |
||||||
|
+ result = ftp_loop (u, orig_parsed, &local_file, dt, proxy_url, |
||||||
|
+ recursive, glob); |
||||||
|
recursive = oldrec; |
||||||
|
|
||||||
|
/* There is a possibility of having HTTP being redirected to |
@ -0,0 +1,18 @@ |
|||||||
|
@@ -, +, @@ |
||||||
|
(CVE-2017-13089) |
||||||
|
--- |
||||||
|
src/http.c | 3 +++ |
||||||
|
1 file changed, 3 insertions(+) |
||||||
|
--- a/src/http.c |
||||||
|
+++ a/src/http.c |
||||||
|
@@ -973,6 +973,9 @@ skip_short_body (int fd, wgint contlen, bool chunked) |
||||||
|
remaining_chunk_size = strtol (line, &endl, 16); |
||||||
|
xfree (line); |
||||||
|
|
||||||
|
+ if (remaining_chunk_size < 0) |
||||||
|
+ return false; |
||||||
|
+ |
||||||
|
if (remaining_chunk_size == 0) |
||||||
|
{ |
||||||
|
line = fd_read_line (fd); |
||||||
|
-- |
@ -0,0 +1,21 @@ |
|||||||
|
@@ -, +, @@ |
||||||
|
(CVE-2017-13090) |
||||||
|
--- |
||||||
|
src/retr.c | 6 ++++++ |
||||||
|
1 file changed, 6 insertions(+) |
||||||
|
--- a/src/retr.c |
||||||
|
+++ a/src/retr.c |
||||||
|
@@ -378,6 +378,12 @@ fd_read_body (const char *downloaded_filename, int fd, FILE *out, wgint toread, |
||||||
|
remaining_chunk_size = strtol (line, &endl, 16); |
||||||
|
xfree (line); |
||||||
|
|
||||||
|
+ if (remaining_chunk_size < 0) |
||||||
|
+ { |
||||||
|
+ ret = -1; |
||||||
|
+ break; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
if (remaining_chunk_size == 0) |
||||||
|
{ |
||||||
|
ret = 0; |
||||||
|
-- |
@ -0,0 +1,43 @@ |
|||||||
|
diff --git a/src/http.c b/src/http.c |
||||||
|
index b45c404..aa4fd25 100644 |
||||||
|
--- a/src/http.c |
||||||
|
+++ b/src/http.c |
||||||
|
@@ -605,9 +605,9 @@ struct response { |
||||||
|
resp_header_*. */ |
||||||
|
|
||||||
|
static struct response * |
||||||
|
-resp_new (const char *head) |
||||||
|
+resp_new (char *head) |
||||||
|
{ |
||||||
|
- const char *hdr; |
||||||
|
+ char *hdr; |
||||||
|
int count, size; |
||||||
|
|
||||||
|
struct response *resp = xnew0 (struct response); |
||||||
|
@@ -636,15 +636,23 @@ resp_new (const char *head) |
||||||
|
break; |
||||||
|
|
||||||
|
/* Find the end of HDR, including continuations. */ |
||||||
|
- do |
||||||
|
+ for (;;) |
||||||
|
{ |
||||||
|
- const char *end = strchr (hdr, '\n'); |
||||||
|
+ char *end = strchr (hdr, '\n'); |
||||||
|
+ |
||||||
|
if (end) |
||||||
|
hdr = end + 1; |
||||||
|
else |
||||||
|
hdr += strlen (hdr); |
||||||
|
+ |
||||||
|
+ if (*hdr != ' ' && *hdr != '\t') |
||||||
|
+ break; |
||||||
|
+ |
||||||
|
+ // continuation, transform \r and \n into spaces |
||||||
|
+ *end = ' '; |
||||||
|
+ if (end > head && end[-1] == '\r') |
||||||
|
+ end[-1] = ' '; |
||||||
|
} |
||||||
|
- while (*hdr == ' ' || *hdr == '\t'); |
||||||
|
} |
||||||
|
DO_REALLOC (resp->headers, size, count + 1, const char *); |
||||||
|
resp->headers[count] = NULL; |
@ -0,0 +1,47 @@ |
|||||||
|
From 613d8639c48b950f76d132b70d27e518ba6d6891 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Tomas Hozza <thozza@redhat.com> |
||||||
|
Date: Fri, 26 Apr 2013 14:42:30 +0200 |
||||||
|
Subject: [PATCH] Fix using deadcode and possible use of NULL pointer |
||||||
|
|
||||||
|
Fix for deadcode in unique_create() so that "opened_name" parameter is |
||||||
|
always initialized to a valid string or NULL when returning from |
||||||
|
function. |
||||||
|
|
||||||
|
Fix for redirect_output() so that "logfile" is not blindly used in |
||||||
|
fprintf() call and checked if it is not NULL. |
||||||
|
|
||||||
|
Signed-off-by: Tomas Hozza <thozza@redhat.com> |
||||||
|
--- |
||||||
|
src/log.c | 2 +- |
||||||
|
src/utils.c | 2 +- |
||||||
|
2 files changed, 2 insertions(+), 2 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/log.c b/src/log.c |
||||||
|
index 0185df1..4f93a21 100644 |
||||||
|
--- a/src/log.c |
||||||
|
+++ b/src/log.c |
||||||
|
@@ -871,7 +871,7 @@ redirect_output (void) |
||||||
|
can do but disable printing completely. */ |
||||||
|
fprintf (stderr, _("\n%s received.\n"), redirect_request_signal_name); |
||||||
|
fprintf (stderr, _("%s: %s; disabling logging.\n"), |
||||||
|
- logfile, strerror (errno)); |
||||||
|
+ (logfile) ? logfile : DEFAULT_LOGFILE, strerror (errno)); |
||||||
|
inhibit_logging = true; |
||||||
|
} |
||||||
|
save_context_p = false; |
||||||
|
diff --git a/src/utils.c b/src/utils.c |
||||||
|
index 567dc35..7cc942f 100644 |
||||||
|
--- a/src/utils.c |
||||||
|
+++ b/src/utils.c |
||||||
|
@@ -703,7 +703,7 @@ unique_create (const char *name, bool binary, char **opened_name) |
||||||
|
xfree (uname); |
||||||
|
uname = unique_name (name, false); |
||||||
|
} |
||||||
|
- if (opened_name && fp != NULL) |
||||||
|
+ if (opened_name) |
||||||
|
{ |
||||||
|
if (fp) |
||||||
|
*opened_name = uname; |
||||||
|
-- |
||||||
|
1.8.1.4 |
||||||
|
|
@ -0,0 +1,122 @@ |
|||||||
|
diff --git a/doc/wget.texi b/doc/wget.texi |
||||||
|
index 118fce9..3bd8dd7 100644 |
||||||
|
--- a/doc/wget.texi |
||||||
|
+++ b/doc/wget.texi |
||||||
|
@@ -1555,16 +1555,17 @@ without SSL support, none of these options are available. |
||||||
|
@cindex SSL protocol, choose |
||||||
|
@item --secure-protocol=@var{protocol} |
||||||
|
Choose the secure protocol to be used. Legal values are @samp{auto}, |
||||||
|
-@samp{SSLv2}, @samp{SSLv3}, and @samp{TLSv1}. If @samp{auto} is used, |
||||||
|
-the SSL library is given the liberty of choosing the appropriate |
||||||
|
-protocol automatically, which is achieved by sending an SSLv2 greeting |
||||||
|
-and announcing support for SSLv3 and TLSv1. This is the default. |
||||||
|
- |
||||||
|
-Specifying @samp{SSLv2}, @samp{SSLv3}, or @samp{TLSv1} forces the use |
||||||
|
-of the corresponding protocol. This is useful when talking to old and |
||||||
|
-buggy SSL server implementations that make it hard for OpenSSL to |
||||||
|
-choose the correct protocol version. Fortunately, such servers are |
||||||
|
-quite rare. |
||||||
|
+@samp{SSLv2}, @samp{SSLv3}, @samp{TLSv1}, @samp{TLSv1_1} and |
||||||
|
+@samp{TLSv1_2}. If @samp{auto} is used, the SSL library is given the |
||||||
|
+liberty of choosing the appropriate protocol automatically, which is |
||||||
|
+achieved by sending a SSLv2 greeting and announcing support for SSLv3 |
||||||
|
+and TLSv1. This is the default. |
||||||
|
+ |
||||||
|
+Specifying @samp{SSLv2}, @samp{SSLv3}, @samp{TLSv1}, @samp{TLSv1_1} or |
||||||
|
+@samp{TLSv1_2} forces the use of the corresponding protocol. This is |
||||||
|
+useful when talking to old and buggy SSL server implementations that |
||||||
|
+make it hard for the underlying SSL library to choose the correct |
||||||
|
+protocol version. Fortunately, such servers are quite rare. |
||||||
|
|
||||||
|
@cindex SSL certificate, check |
||||||
|
@item --no-check-certificate |
||||||
|
diff --git a/src/init.c b/src/init.c |
||||||
|
index 4cee677..f160bec 100644 |
||||||
|
--- a/src/init.c |
||||||
|
+++ b/src/init.c |
||||||
|
@@ -1488,6 +1488,8 @@ cmd_spec_secure_protocol (const char *com, const char *val, void *place) |
||||||
|
{ "sslv2", secure_protocol_sslv2 }, |
||||||
|
{ "sslv3", secure_protocol_sslv3 }, |
||||||
|
{ "tlsv1", secure_protocol_tlsv1 }, |
||||||
|
+ { "tlsv1_1", secure_protocol_tlsv1_1 }, |
||||||
|
+ { "tlsv1_2", secure_protocol_tlsv1_2 }, |
||||||
|
}; |
||||||
|
int ok = decode_string (val, choices, countof (choices), place); |
||||||
|
if (!ok) |
||||||
|
diff --git a/src/main.c b/src/main.c |
||||||
|
index 9cbad9f..3d50dad 100644 |
||||||
|
--- a/src/main.c |
||||||
|
+++ b/src/main.c |
||||||
|
@@ -625,7 +625,7 @@ HTTP options:\n"), |
||||||
|
HTTPS (SSL/TLS) options:\n"), |
||||||
|
N_("\ |
||||||
|
--secure-protocol=PR choose secure protocol, one of auto, SSLv2,\n\ |
||||||
|
- SSLv3, and TLSv1.\n"), |
||||||
|
+ SSLv3, TLSv1, TLSv1_1 and TLSv1_2.\n"), |
||||||
|
N_("\ |
||||||
|
--no-check-certificate don't validate the server's certificate.\n"), |
||||||
|
N_("\ |
||||||
|
diff --git a/src/openssl.c b/src/openssl.c |
||||||
|
index b3c31ce..141a8a3 100644 |
||||||
|
--- a/src/openssl.c |
||||||
|
+++ b/src/openssl.c |
||||||
|
@@ -40,6 +40,9 @@ as that of the covered work. */ |
||||||
|
#include <openssl/x509v3.h> |
||||||
|
#include <openssl/err.h> |
||||||
|
#include <openssl/rand.h> |
||||||
|
+#if OPENSSL_VERSION_NUMBER >= 0x00907000 |
||||||
|
+#include <openssl/conf.h> |
||||||
|
+#endif |
||||||
|
|
||||||
|
#include "utils.h" |
||||||
|
#include "connect.h" |
||||||
|
@@ -176,6 +179,12 @@ ssl_init (void) |
||||||
|
goto error; |
||||||
|
} |
||||||
|
|
||||||
|
+#if OPENSSL_VERSION_NUMBER >= 0x00907000 |
||||||
|
+ OPENSSL_load_builtin_modules(); |
||||||
|
+ ENGINE_load_builtin_engines(); |
||||||
|
+ CONF_modules_load_file(NULL, NULL, |
||||||
|
+ CONF_MFLAGS_DEFAULT_SECTION|CONF_MFLAGS_IGNORE_MISSING_FILE); |
||||||
|
+#endif |
||||||
|
SSL_library_init (); |
||||||
|
SSL_load_error_strings (); |
||||||
|
SSLeay_add_all_algorithms (); |
||||||
|
@@ -197,6 +206,21 @@ ssl_init (void) |
||||||
|
case secure_protocol_tlsv1: |
||||||
|
meth = TLSv1_client_method (); |
||||||
|
break; |
||||||
|
+#if OPENSSL_VERSION_NUMBER >= 0x10001000 |
||||||
|
+ case secure_protocol_tlsv1_1: |
||||||
|
+ meth = TLSv1_1_client_method (); |
||||||
|
+ break; |
||||||
|
+ case secure_protocol_tlsv1_2: |
||||||
|
+ meth = TLSv1_2_client_method (); |
||||||
|
+ break; |
||||||
|
+#else |
||||||
|
+ case secure_protocol_tlsv1_1: |
||||||
|
+ logprintf (LOG_NOTQUIET, _("Your OpenSSL version is too old to support TLSv1.1\n")); |
||||||
|
+ goto error; |
||||||
|
+ case secure_protocol_tlsv1_2: |
||||||
|
+ logprintf (LOG_NOTQUIET, _("Your OpenSSL version is too old to support TLSv1.2\n")); |
||||||
|
+ goto error; |
||||||
|
+#endif |
||||||
|
default: |
||||||
|
abort (); |
||||||
|
} |
||||||
|
diff --git a/src/options.h b/src/options.h |
||||||
|
index 326123a..575e647 100644 |
||||||
|
--- a/src/options.h |
||||||
|
+++ b/src/options.h |
||||||
|
@@ -200,7 +200,9 @@ struct options |
||||||
|
secure_protocol_auto, |
||||||
|
secure_protocol_sslv2, |
||||||
|
secure_protocol_sslv3, |
||||||
|
- secure_protocol_tlsv1 |
||||||
|
+ secure_protocol_tlsv1, |
||||||
|
+ secure_protocol_tlsv1_1, |
||||||
|
+ secure_protocol_tlsv1_2 |
||||||
|
} secure_protocol; /* type of secure protocol to use. */ |
||||||
|
bool check_cert; /* whether to validate the server's cert */ |
||||||
|
char *cert_file; /* external client certificate to use. */ |
@ -0,0 +1,27 @@ |
|||||||
|
From 8dc52c6eaa1993d140a52bc0627e436efd9870d0 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Giuseppe Scrivano <gscrivano@gnu.org> |
||||||
|
Date: Sun, 28 Apr 2013 22:41:24 +0200 |
||||||
|
Subject: [PATCH] doc: add documentation for --accept-regex and --reject-regex |
||||||
|
|
||||||
|
--- |
||||||
|
doc/wget.texi | 4 ++++ |
||||||
|
1 files changed, 4 insertions(+) |
||||||
|
|
||||||
|
diff --git a/doc/wget.texi b/doc/wget.texi |
||||||
|
index fed188a..039f700 100644 |
||||||
|
--- a/doc/wget.texi |
||||||
|
+++ b/doc/wget.texi |
||||||
|
@@ -2049,6 +2049,10 @@ any of the wildcard characters, @samp{*}, @samp{?}, @samp{[} or |
||||||
|
@samp{]}, appear in an element of @var{acclist} or @var{rejlist}, |
||||||
|
it will be treated as a pattern, rather than a suffix. |
||||||
|
|
||||||
|
+@item --accept-regex @var{urlregex} |
||||||
|
+@itemx --reject-regex @var{urlregex} |
||||||
|
+Specify a regular expression to accept or reject the complete URL. |
||||||
|
+ |
||||||
|
@item -D @var{domain-list} |
||||||
|
@itemx --domains=@var{domain-list} |
||||||
|
Set domains to be followed. @var{domain-list} is a comma-separated list |
||||||
|
-- |
||||||
|
1.8.1.4 |
||||||
|
|
@ -0,0 +1,22 @@ |
|||||||
|
diff --git a/src/http.c b/src/http.c |
||||||
|
index 5ee1c93..b45c404 100644 |
||||||
|
--- a/src/http.c |
||||||
|
+++ b/src/http.c |
||||||
|
@@ -3728,7 +3728,7 @@ digest_authentication_encode (const char *au, const char *user, |
||||||
|
md5_finish_ctx (&ctx, hash); |
||||||
|
dump_hash (a2buf, hash); |
||||||
|
|
||||||
|
- if (!strcmp(qop,"auth")) |
||||||
|
+ if (qop && !strcmp(qop,"auth")) |
||||||
|
{ |
||||||
|
/* RFC 2617 Digest Access Authentication */ |
||||||
|
/* generate random hex string */ |
||||||
|
@@ -3776,7 +3776,7 @@ digest_authentication_encode (const char *au, const char *user, |
||||||
|
|
||||||
|
res = xmalloc (res_size); |
||||||
|
|
||||||
|
- if (!strcmp(qop,"auth")) |
||||||
|
+ if (qop && !strcmp (qop, "auth")) |
||||||
|
{ |
||||||
|
snprintf (res, res_size, "Digest "\ |
||||||
|
"username=\"%s\", realm=\"%s\", nonce=\"%s\", uri=\"%s\", response=\"%s\""\ |
@ -0,0 +1,61 @@ |
|||||||
|
From c78caecbb4209ce2e36a587497cf1d6b350e513a Mon Sep 17 00:00:00 2001 |
||||||
|
From: Tomas Hozza <thozza@redhat.com> |
||||||
|
Date: Thu, 11 Jul 2013 15:52:28 +0000 |
||||||
|
Subject: Document missing options and fix --preserve-permissions |
||||||
|
|
||||||
|
Added documentation for --regex-type and --preserve-permissions |
||||||
|
options. |
||||||
|
|
||||||
|
Fixed --preserve-permissions to work properly also if downloading a |
||||||
|
single file from FTP. |
||||||
|
|
||||||
|
Signed-off-by: Tomas Hozza <thozza@redhat.com> |
||||||
|
--- |
||||||
|
diff --git a/doc/wget.texi b/doc/wget.texi |
||||||
|
index 710f0ac..5054382 100644 |
||||||
|
--- a/doc/wget.texi |
||||||
|
+++ b/doc/wget.texi |
||||||
|
@@ -1816,6 +1816,10 @@ in some rare firewall configurations, active FTP actually works when |
||||||
|
passive FTP doesn't. If you suspect this to be the case, use this |
||||||
|
option, or set @code{passive_ftp=off} in your init file. |
||||||
|
|
||||||
|
+@cindex file permissions |
||||||
|
+@item --preserve-permissions |
||||||
|
+Preserve remote file permissions instead of permissions set by umask. |
||||||
|
+ |
||||||
|
@cindex symbolic links, retrieving |
||||||
|
@item --retr-symlinks |
||||||
|
Usually, when retrieving @sc{ftp} directories recursively and a symbolic |
||||||
|
@@ -2057,6 +2061,11 @@ it will be treated as a pattern, rather than a suffix. |
||||||
|
@itemx --reject-regex @var{urlregex} |
||||||
|
Specify a regular expression to accept or reject the complete URL. |
||||||
|
|
||||||
|
+@item --regex-type @var{regextype} |
||||||
|
+Specify the regular expression type. Possible types are @samp{posix} or |
||||||
|
+@samp{pcre}. Note that to be able to use @samp{pcre} type, wget has to be |
||||||
|
+compiled with libpcre support. |
||||||
|
+ |
||||||
|
@item -D @var{domain-list} |
||||||
|
@itemx --domains=@var{domain-list} |
||||||
|
Set domains to be followed. @var{domain-list} is a comma-separated list |
||||||
|
diff --git a/src/ftp.c b/src/ftp.c |
||||||
|
index 9b3d81c..1fe2bac 100644 |
||||||
|
--- a/src/ftp.c |
||||||
|
+++ b/src/ftp.c |
||||||
|
@@ -2285,11 +2285,11 @@ ftp_loop (struct url *u, char **local_file, int *dt, struct url *proxy, |
||||||
|
file_part = u->path; |
||||||
|
ispattern = has_wildcards_p (file_part); |
||||||
|
} |
||||||
|
- if (ispattern || recursive || opt.timestamping) |
||||||
|
+ if (ispattern || recursive || opt.timestamping || opt.preserve_perm) |
||||||
|
{ |
||||||
|
/* ftp_retrieve_glob is a catch-all function that gets called |
||||||
|
- if we need globbing, time-stamping or recursion. Its |
||||||
|
- third argument is just what we really need. */ |
||||||
|
+ if we need globbing, time-stamping, recursion or preserve |
||||||
|
+ permissions. Its third argument is just what we really need. */ |
||||||
|
res = ftp_retrieve_glob (u, &con, |
||||||
|
ispattern ? GLOB_GLOBALL : GLOB_GETONE); |
||||||
|
} |
||||||
|
-- |
||||||
|
cgit v0.9.0.2 |
@ -0,0 +1,60 @@ |
|||||||
|
From 44ba49b31f4ea515f8a6ef2642a34c0fd2024b90 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Giuseppe Scrivano <gscrivano@gnu.org> |
||||||
|
Date: Tue, 9 Jul 2013 00:50:30 +0200 |
||||||
|
Subject: [PATCH] doc: document --backups |
||||||
|
|
||||||
|
--- |
||||||
|
doc/wget.texi | 15 ++++++++++++--- |
||||||
|
src/main.c | 3 +++ |
||||||
|
2 files changed, 15 insertions(+), 3 deletions(-) |
||||||
|
|
||||||
|
diff --git a/doc/wget.texi b/doc/wget.texi |
||||||
|
index 5054382..7a1670e 100644 |
||||||
|
--- a/doc/wget.texi |
||||||
|
+++ b/doc/wget.texi |
||||||
|
@@ -630,6 +630,13 @@ Note that when @samp{-nc} is specified, files with the suffixes |
||||||
|
@samp{.html} or @samp{.htm} will be loaded from the local disk and |
||||||
|
parsed as if they had been retrieved from the Web. |
||||||
|
|
||||||
|
+@cindex backing up files |
||||||
|
+@item --backups=@var{backups} |
||||||
|
+Before (over)writing a file, back up an existing file by adding a |
||||||
|
+@samp{.1} suffix (@samp{_1} on VMS) to the file name. Such backup |
||||||
|
+files are rotated to @samp{.2}, @samp{.3}, and so on, up to |
||||||
|
+@var{backups} (and lost beyond that). |
||||||
|
+ |
||||||
|
@cindex continue retrieval |
||||||
|
@cindex incomplete downloads |
||||||
|
@cindex resume download |
||||||
|
@@ -2882,9 +2889,11 @@ enables it). |
||||||
|
Enable/disable saving pre-converted files with the suffix |
||||||
|
@samp{.orig}---the same as @samp{-K} (which enables it). |
||||||
|
|
||||||
|
-@c @item backups = @var{number} |
||||||
|
-@c #### Document me! |
||||||
|
-@c |
||||||
|
+@item backups = @var{number} |
||||||
|
+Use up to @var{number} backups for a file. Backups are rotated by |
||||||
|
+adding an incremental counter that starts at @samp{1}. The default is |
||||||
|
+@samp{0}. |
||||||
|
+ |
||||||
|
@item base = @var{string} |
||||||
|
Consider relative @sc{url}s in input files (specified via the |
||||||
|
@samp{input} command or the @samp{--input-file}/@samp{-i} option, |
||||||
|
diff --git a/src/main.c b/src/main.c |
||||||
|
index c895c4e..8ce0eb3 100644 |
||||||
|
--- a/src/main.c |
||||||
|
+++ b/src/main.c |
||||||
|
@@ -714,6 +714,9 @@ Recursive download:\n"), |
||||||
|
N_("\ |
||||||
|
-k, --convert-links make links in downloaded HTML or CSS point to\n\ |
||||||
|
local files.\n"), |
||||||
|
+ N_("\ |
||||||
|
+ --backups=N before writing file X, rotate up to N backup files.\n"), |
||||||
|
+ |
||||||
|
#ifdef __VMS |
||||||
|
N_("\ |
||||||
|
-K, --backup-converted before converting file X, back up as X_orig.\n"), |
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
@ -0,0 +1,80 @@ |
|||||||
|
From c52bbad9e4bad1393a9d6ba37e600d388f5ab419 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Giuseppe Scrivano <gscrivano@gnu.org> |
||||||
|
Date: Wed, 10 Jul 2013 20:59:34 +0200 |
||||||
|
Subject: [PATCH] Make --backups work as documented |
||||||
|
|
||||||
|
--- |
||||||
|
src/http.c | 6 ------ |
||||||
|
src/options.h | 2 +- |
||||||
|
src/url.c | 3 ++- |
||||||
|
src/url.h | 6 ++++++ |
||||||
|
4 files changed, 9 insertions(+), 8 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/http.c b/src/http.c |
||||||
|
index 9f274dc..b0c782b 100644 |
||||||
|
--- a/src/http.c |
||||||
|
+++ b/src/http.c |
||||||
|
@@ -1641,12 +1641,6 @@ read_response_body (struct http_stat *hs, int sock, FILE *fp, wgint contlen, |
||||||
|
} while (0) |
||||||
|
#endif /* def __VMS [else] */ |
||||||
|
|
||||||
|
-/* The flags that allow clobbering the file (opening with "wb"). |
||||||
|
- Defined here to avoid repetition later. #### This will require |
||||||
|
- rework. */ |
||||||
|
-#define ALLOW_CLOBBER (opt.noclobber || opt.always_rest || opt.timestamping \ |
||||||
|
- || opt.dirstruct || opt.output_document) |
||||||
|
- |
||||||
|
/* Retrieve a document through HTTP protocol. It recognizes status |
||||||
|
code, and correctly handles redirections. It closes the network |
||||||
|
socket. If it receives an error from the functions below it, it |
||||||
|
diff --git a/src/options.h b/src/options.h |
||||||
|
index ed38617..0a10c9b 100644 |
||||||
|
--- a/src/options.h |
||||||
|
+++ b/src/options.h |
||||||
|
@@ -166,7 +166,7 @@ struct options |
||||||
|
bool timestamping; /* Whether to use time-stamping. */ |
||||||
|
|
||||||
|
bool backup_converted; /* Do we save pre-converted files as *.orig? */ |
||||||
|
- bool backups; /* Are numeric backups made? */ |
||||||
|
+ int backups; /* Are numeric backups made? */ |
||||||
|
|
||||||
|
char *useragent; /* User-Agent string, which can be set |
||||||
|
to something other than Wget. */ |
||||||
|
diff --git a/src/url.c b/src/url.c |
||||||
|
index 5e2b9a3..bf9d697 100644 |
||||||
|
--- a/src/url.c |
||||||
|
+++ b/src/url.c |
||||||
|
@@ -1669,11 +1669,12 @@ url_file_name (const struct url *u, char *replaced_filename) |
||||||
|
2) Retrieval with regetting. |
||||||
|
3) Timestamping is used. |
||||||
|
4) Hierarchy is built. |
||||||
|
+ 5) Backups are specified. |
||||||
|
|
||||||
|
The exception is the case when file does exist and is a |
||||||
|
directory (see `mkalldirs' for explanation). */ |
||||||
|
|
||||||
|
- if ((opt.noclobber || opt.always_rest || opt.timestamping || opt.dirstruct) |
||||||
|
+ if (ALLOW_CLOBBER |
||||||
|
&& !(file_exists_p (fname) && !file_non_directory_p (fname))) |
||||||
|
{ |
||||||
|
unique = fname; |
||||||
|
diff --git a/src/url.h b/src/url.h |
||||||
|
index b7f4366..cd3782b 100644 |
||||||
|
--- a/src/url.h |
||||||
|
+++ b/src/url.h |
||||||
|
@@ -47,6 +47,12 @@ as that of the covered work. */ |
||||||
|
#define DEFAULT_FTP_PORT 21 |
||||||
|
#define DEFAULT_HTTPS_PORT 443 |
||||||
|
|
||||||
|
+/* The flags that allow clobbering the file (opening with "wb"). |
||||||
|
+ Defined here to avoid repetition later. #### This will require |
||||||
|
+ rework. */ |
||||||
|
+#define ALLOW_CLOBBER (opt.noclobber || opt.always_rest || opt.timestamping \ |
||||||
|
+ || opt.dirstruct || opt.output_document || opt.backups > 0) |
||||||
|
+ |
||||||
|
/* Specifies how, or whether, user auth information should be included |
||||||
|
* in URLs regenerated from URL parse structures. */ |
||||||
|
enum url_auth_mode { |
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
@ -0,0 +1,29 @@ |
|||||||
|
From bdf2764457bef7c33be289b889ddf6df91773296 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Tomas Hozza <thozza@redhat.com> |
||||||
|
Date: Wed, 10 Jul 2013 13:23:37 +0200 |
||||||
|
Subject: [PATCH] Set iri->orig_url to NULL after free. |
||||||
|
|
||||||
|
Set iri->orig_url to NULL after free to prevent double |
||||||
|
free in retrieve_url() and iri_free() when using IRI |
||||||
|
and downloading site that redirects itself. |
||||||
|
|
||||||
|
Signed-off-by: Tomas Hozza <thozza@redhat.com> |
||||||
|
--- |
||||||
|
src/retr.c | 1 + |
||||||
|
1 file changed, 1 insertion(+) |
||||||
|
|
||||||
|
diff --git a/src/retr.c b/src/retr.c |
||||||
|
index 6204839..66624dc 100644 |
||||||
|
--- a/src/retr.c |
||||||
|
+++ b/src/retr.c |
||||||
|
@@ -838,6 +838,7 @@ retrieve_url (struct url * orig_parsed, const char *origurl, char **file, |
||||||
|
iri->utf8_encode = opt.enable_iri; |
||||||
|
set_content_encoding (iri, NULL); |
||||||
|
xfree_null (iri->orig_url); |
||||||
|
+ iri->orig_url = NULL; |
||||||
|
|
||||||
|
/* Now, see if this new location makes sense. */ |
||||||
|
newloc_parsed = url_parse (mynewloc, &up_error_code, iri, true); |
||||||
|
-- |
||||||
|
1.8.3.1 |
||||||
|
|
@ -0,0 +1,164 @@ |
|||||||
|
From 082e7194605e99f0e50f8909fcaf10adee747cc8 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Tomas Hozza <thozza@redhat.com> |
||||||
|
Date: Fri, 5 May 2017 13:46:11 +0200 |
||||||
|
Subject: [PATCH] Fix client/server synchronization in |
||||||
|
Test-proxied-https-auth.px test |
||||||
|
|
||||||
|
Combination of upstream commits vithout adding support for Valgrind: |
||||||
|
3eff3ad69a46364475e1f4abdf9412cfa87e3d6c |
||||||
|
2303793a626158627bdb2ac255e0f58697682b24 |
||||||
|
|
||||||
|
Signed-off-by: Tomas Hozza <thozza@redhat.com> |
||||||
|
--- |
||||||
|
tests/Test-proxied-https-auth.px | 82 +++++++++++++++++++++++----------------- |
||||||
|
1 file changed, 48 insertions(+), 34 deletions(-) |
||||||
|
|
||||||
|
diff --git a/tests/Test-proxied-https-auth.px b/tests/Test-proxied-https-auth.px |
||||||
|
index 1de5357..e1a6c44 100755 |
||||||
|
--- a/tests/Test-proxied-https-auth.px |
||||||
|
+++ b/tests/Test-proxied-https-auth.px |
||||||
|
@@ -1,4 +1,6 @@ |
||||||
|
#!/usr/bin/env perl |
||||||
|
+# Simulate a tunneling proxy to a HTTPS URL that needs authentication. |
||||||
|
+# Use two connections (Connection: close) |
||||||
|
|
||||||
|
use strict; |
||||||
|
use warnings; |
||||||
|
@@ -39,31 +41,33 @@ sub get_request { |
||||||
|
} |
||||||
|
|
||||||
|
sub do_server { |
||||||
|
- my $alrm = alarm 10; |
||||||
|
- |
||||||
|
+ my ($synch_callback) = @_; |
||||||
|
my $s = $SOCKET; |
||||||
|
my $conn; |
||||||
|
my $rqst; |
||||||
|
my $rspn; |
||||||
|
+ |
||||||
|
+ my %options = ( |
||||||
|
+ SSL_server => 1, |
||||||
|
+ SSL_passwd_cb => sub { return "Hello"; }); |
||||||
|
+ $options{SSL_cert_file} = $cert_path if ($cert_path); |
||||||
|
+ $options{SSL_key_file} = $key_path if ($key_path); |
||||||
|
+ my @options = %options; |
||||||
|
+ |
||||||
|
+ # sync with the parent |
||||||
|
+ $synch_callback->(); |
||||||
|
+ |
||||||
|
+ # Simulate a HTTPS proxy server with tunneling. |
||||||
|
+ |
||||||
|
for my $expect_inner_auth (0, 1) { |
||||||
|
$conn = $s->accept; |
||||||
|
$rqst = $conn->get_request; |
||||||
|
- |
||||||
|
- # TODO: expect no auth the first time, request it, expect it the second |
||||||
|
- # time. |
||||||
|
- |
||||||
|
die "Method not CONNECT\n" if ($rqst->method ne 'CONNECT'); |
||||||
|
$rspn = HTTP::Response->new(200, 'OK'); |
||||||
|
$conn->send_response($rspn); |
||||||
|
|
||||||
|
- my %options = ( |
||||||
|
- SSL_server => 1, |
||||||
|
- SSL_passwd_cb => sub { return "Hello"; }); |
||||||
|
- |
||||||
|
- $options{SSL_cert_file} = $cert_path if ($cert_path); |
||||||
|
- $options{SSL_key_file} = $key_path if ($key_path); |
||||||
|
- |
||||||
|
- my @options = %options; |
||||||
|
+ # Now switch from plain to SSL (for simulating a transparent tunnel |
||||||
|
+ # to an HTTPS server). |
||||||
|
|
||||||
|
$conn = IO::Socket::SSL->new_from_fd($conn->fileno, @options) |
||||||
|
or die "Couldn't initiate SSL"; |
||||||
|
@@ -74,14 +78,10 @@ sub do_server { |
||||||
|
unless ($expect_inner_auth) { |
||||||
|
die "Early proxied auth\n" if $rqst->header('Authorization'); |
||||||
|
|
||||||
|
- # TODO: handle non-persistent connection here. |
||||||
|
$rspn = HTTP::Response->new(401, 'Unauthorized', [ |
||||||
|
'WWW-Authenticate' => 'Basic realm="gondor"', |
||||||
|
Connection => 'close' |
||||||
|
]); |
||||||
|
- $rspn->protocol('HTTP/1.0'); |
||||||
|
- print $rspn->as_string; |
||||||
|
- print $conn $rspn->as_string; |
||||||
|
} else { |
||||||
|
die "No proxied auth\n" unless $rqst->header('Authorization'); |
||||||
|
|
||||||
|
@@ -89,41 +89,55 @@ sub do_server { |
||||||
|
'Content-Type' => 'text/plain', |
||||||
|
'Connection' => 'close', |
||||||
|
], "foobarbaz\n"); |
||||||
|
- $rspn->protocol('HTTP/1.0'); |
||||||
|
- print "=====\n"; |
||||||
|
- print $rspn->as_string; |
||||||
|
- print "\n=====\n"; |
||||||
|
- print $conn $rspn->as_string; |
||||||
|
} |
||||||
|
+ |
||||||
|
+ $rspn->protocol('HTTP/1.0'); |
||||||
|
+ print STDERR "=====\n"; |
||||||
|
+ print STDERR $rspn->as_string; |
||||||
|
+ print STDERR "\n=====\n"; |
||||||
|
+ print $conn $rspn->as_string; |
||||||
|
+ |
||||||
|
$conn->close; |
||||||
|
} |
||||||
|
+ |
||||||
|
undef $conn; |
||||||
|
undef $s; |
||||||
|
- alarm $alrm; |
||||||
|
} |
||||||
|
|
||||||
|
sub fork_server { |
||||||
|
- my $pid = fork; |
||||||
|
- die "Couldn't fork" if ($pid < 0); |
||||||
|
- return $pid if $pid; |
||||||
|
+ pipe(FROM_CHILD, TO_PARENT) or die "Cannot create pipe!"; |
||||||
|
+ select((select(TO_PARENT), $| = 1)[0]); |
||||||
|
+ |
||||||
|
+ my $pid = fork(); |
||||||
|
+ if ($pid < 0) { |
||||||
|
+ die "Cannot fork"; |
||||||
|
+ } elsif ($pid == 0) { |
||||||
|
+ # child |
||||||
|
+ close FROM_CHILD; |
||||||
|
+ do_server(sub { print TO_PARENT "SYNC\n"; close TO_PARENT }); |
||||||
|
+ exit 0; |
||||||
|
+ } else { |
||||||
|
+ # parent |
||||||
|
+ close TO_PARENT; |
||||||
|
+ chomp(my $line = <FROM_CHILD>); |
||||||
|
+ close FROM_CHILD; |
||||||
|
+ } |
||||||
|
|
||||||
|
- &do_server; |
||||||
|
- exit; |
||||||
|
+ return $pid; |
||||||
|
} |
||||||
|
|
||||||
|
-system ('rm -f needs-auth.txt'); |
||||||
|
+unlink "needs-auth.txt"; |
||||||
|
my $pid = &fork_server; |
||||||
|
|
||||||
|
-sleep 1; |
||||||
|
my $cmdline = $WgetTest::WGETPATH . " --user=fiddle-dee-dee" |
||||||
|
. " --password=Dodgson -e https_proxy=localhost:{{port}}" |
||||||
|
. " --no-check-certificate" |
||||||
|
. " https://no.such.domain/needs-auth.txt"; |
||||||
|
$cmdline =~ s/{{port}}/$SOCKET->sockport()/e; |
||||||
|
|
||||||
|
-my $code = system($cmdline); |
||||||
|
-system ('rm -f needs-auth.txt'); |
||||||
|
+my $code = system($cmdline . " 2>&1") >> 8; |
||||||
|
+unlink "needs-auth.txt"; |
||||||
|
|
||||||
|
warn "Got code: $code\n" if $code; |
||||||
|
kill ('TERM', $pid); |
||||||
|
-exit ($code >> 8); |
||||||
|
+exit ($code != 0); |
||||||
|
-- |
||||||
|
2.7.4 |
||||||
|
|
@ -0,0 +1,55 @@ |
|||||||
|
From a2a34ad8e09117041761fa96830f289aa6e67042 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Tomas Hozza <thozza@redhat.com> |
||||||
|
Date: Fri, 22 Feb 2013 12:29:37 +0100 |
||||||
|
Subject: [PATCH] Fix @itemx issue when building doc |
||||||
|
|
||||||
|
@itemx should be used ONLY for second and subsequent item(s). |
||||||
|
|
||||||
|
Signed-off-by: Tomas Hozza <thozza@redhat.com> |
||||||
|
--- |
||||||
|
doc/wget.texi | 8 ++++---- |
||||||
|
1 file changed, 4 insertions(+), 4 deletions(-) |
||||||
|
|
||||||
|
diff --git a/doc/wget.texi b/doc/wget.texi |
||||||
|
index c1fc82f..3768156 100644 |
||||||
|
--- a/doc/wget.texi |
||||||
|
+++ b/doc/wget.texi |
||||||
|
@@ -876,7 +876,7 @@ recommendation to block many unrelated users from a web site due to the |
||||||
|
actions of one. |
||||||
|
|
||||||
|
@cindex proxy |
||||||
|
-@itemx --no-proxy |
||||||
|
+@item --no-proxy |
||||||
|
Don't use proxies, even if the appropriate @code{*_proxy} environment |
||||||
|
variable is defined. |
||||||
|
|
||||||
|
@@ -977,7 +977,7 @@ are outside the range of @sc{ascii} characters (that is, greater than |
||||||
|
whose encoding does not match the one used locally. |
||||||
|
|
||||||
|
@cindex IPv6 |
||||||
|
-@itemx -4 |
||||||
|
+@item -4 |
||||||
|
@itemx --inet4-only |
||||||
|
@itemx -6 |
||||||
|
@itemx --inet6-only |
||||||
|
@@ -3094,7 +3094,7 @@ display properly---the same as @samp{-p}. |
||||||
|
Change setting of passive @sc{ftp}, equivalent to the |
||||||
|
@samp{--passive-ftp} option. |
||||||
|
|
||||||
|
-@itemx password = @var{string} |
||||||
|
+@item password = @var{string} |
||||||
|
Specify password @var{string} for both @sc{ftp} and @sc{http} file retrieval. |
||||||
|
This command can be overridden using the @samp{ftp_password} and |
||||||
|
@samp{http_password} command for @sc{ftp} and @sc{http} respectively. |
||||||
|
@@ -3605,7 +3605,7 @@ In addition to the environment variables, proxy location and settings |
||||||
|
may be specified from within Wget itself. |
||||||
|
|
||||||
|
@table @samp |
||||||
|
-@itemx --no-proxy |
||||||
|
+@item --no-proxy |
||||||
|
@itemx proxy = on/off |
||||||
|
This option and the corresponding command may be used to suppress the |
||||||
|
use of proxy, even if the appropriate environment variables are set. |
||||||
|
-- |
||||||
|
1.8.1.2 |
||||||
|
|
@ -0,0 +1,26 @@ |
|||||||
|
From 798f554773baf1adca376500ca120a992e6d7492 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Tim Ruehsen <tim.ruehsen@gmx.de> |
||||||
|
Date: Tue, 28 Aug 2012 16:38:21 +0200 |
||||||
|
Subject: [PATCH] remove -nv from --report-speed in doc/wget.texi |
||||||
|
|
||||||
|
--- |
||||||
|
doc/wget.texi | 3 +-- |
||||||
|
2 files changed, 5 insertions(+), 2 deletions(-) |
||||||
|
|
||||||
|
diff --git a/doc/wget.texi b/doc/wget.texi |
||||||
|
index 7efdc72..400debe 100644 |
||||||
|
--- a/doc/wget.texi |
||||||
|
+++ b/doc/wget.texi |
||||||
|
@@ -479,8 +479,7 @@ Turn off verbose without being completely quiet (use @samp{-q} for |
||||||
|
that), which means that error messages and basic information still get |
||||||
|
printed. |
||||||
|
|
||||||
|
-@item -nv |
||||||
|
-@itemx --report-speed=@var{type} |
||||||
|
+@item --report-speed=@var{type} |
||||||
|
Output bandwidth as @var{type}. The only accepted value is @samp{bits}. |
||||||
|
|
||||||
|
@cindex input-file |
||||||
|
-- |
||||||
|
1.9.3 |
||||||
|
|
@ -0,0 +1,30 @@ |
|||||||
|
From aed7d4163a9e2083d294a9471e1347ab13d6f2ab Mon Sep 17 00:00:00 2001 |
||||||
|
From: Pavel Mateja <pavel@netsafe.cz> |
||||||
|
Date: Sat, 2 Nov 2013 11:27:58 +0100 |
||||||
|
Subject: [PATCH] http: specify Host when CONNECT is used. |
||||||
|
|
||||||
|
--- |
||||||
|
src/http.c | 7 +++---- |
||||||
|
2 files changed, 7 insertions(+), 4 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/http.c b/src/http.c |
||||||
|
index dbfcdfb..8917fa5 100644 |
||||||
|
--- a/src/http.c |
||||||
|
+++ b/src/http.c |
||||||
|
@@ -2013,10 +2013,9 @@ gethttp (struct url *u, struct http_stat *hs, int *dt, struct url *proxy, |
||||||
|
the regular request below. */ |
||||||
|
proxyauth = NULL; |
||||||
|
} |
||||||
|
- /* Examples in rfc2817 use the Host header in CONNECT |
||||||
|
- requests. I don't see how that gains anything, given |
||||||
|
- that the contents of Host would be exactly the same as |
||||||
|
- the contents of CONNECT. */ |
||||||
|
+ request_set_header (connreq, "Host", |
||||||
|
+ aprintf ("%s:%d", u->host, u->port), |
||||||
|
+ rel_value); |
||||||
|
|
||||||
|
write_error = request_send (connreq, sock, 0); |
||||||
|
request_free (connreq); |
||||||
|
-- |
||||||
|
2.1.0 |
||||||
|
|
@ -0,0 +1,32 @@ |
|||||||
|
From 8760123cee87e07a276b8b13ef48ada3a490ad47 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Tomas Hozza <thozza@redhat.com> |
||||||
|
Date: Thu, 11 Jul 2013 11:22:43 +0000 |
||||||
|
Subject: Set sock variable to -1 if no persistent conn exists |
||||||
|
|
||||||
|
Wget should set sock variable to -1 if no persistent |
||||||
|
connection exists. Function persistent_available_p() |
||||||
|
tests persistent connection but if test_socket_open() |
||||||
|
fails it closes the socket but will not set sock variable |
||||||
|
to -1. After returning from persistent_available_p() |
||||||
|
it is possible that sock has still value of already |
||||||
|
closed connection. |
||||||
|
|
||||||
|
Signed-off-by: Tomas Hozza <thozza@redhat.com> |
||||||
|
--- |
||||||
|
diff --git a/src/http.c b/src/http.c |
||||||
|
index 669f0fe..a693355 100644 |
||||||
|
--- a/src/http.c |
||||||
|
+++ b/src/http.c |
||||||
|
@@ -1983,6 +1983,10 @@ gethttp (struct url *u, struct http_stat *hs, int *dt, struct url *proxy, |
||||||
|
exec_name, quote (relevant->host)); |
||||||
|
return HOSTERR; |
||||||
|
} |
||||||
|
+ else if (sock != -1) |
||||||
|
+ { |
||||||
|
+ sock = -1; |
||||||
|
+ } |
||||||
|
} |
||||||
|
|
||||||
|
if (sock < 0) |
||||||
|
-- |
||||||
|
cgit v0.9.0.2 |
@ -0,0 +1,105 @@ |
|||||||
|
diff -up wget-1.14/src/openssl.c.ssltimeout wget-1.14/src/openssl.c |
||||||
|
--- wget-1.14/src/openssl.c.ssltimeout 2012-08-09 14:30:14.987964706 +0200 |
||||||
|
+++ wget-1.14/src/openssl.c 2012-08-09 14:44:05.467660741 +0200 |
||||||
|
@@ -256,19 +256,42 @@ struct openssl_transport_context { |
||||||
|
char *last_error; /* last error printed with openssl_errstr */ |
||||||
|
}; |
||||||
|
|
||||||
|
-static int |
||||||
|
-openssl_read (int fd, char *buf, int bufsize, void *arg) |
||||||
|
-{ |
||||||
|
- int ret; |
||||||
|
- struct openssl_transport_context *ctx = arg; |
||||||
|
+struct openssl_read_args { |
||||||
|
+ int fd; |
||||||
|
+ struct openssl_transport_context *ctx; |
||||||
|
+ char *buf; |
||||||
|
+ int bufsize; |
||||||
|
+ int retval; |
||||||
|
+}; |
||||||
|
+ |
||||||
|
+static void openssl_read_callback(void *arg) { |
||||||
|
+ struct openssl_read_args *args = (struct openssl_read_args *) arg; |
||||||
|
+ struct openssl_transport_context *ctx = args->ctx; |
||||||
|
SSL *conn = ctx->conn; |
||||||
|
+ char *buf = args->buf; |
||||||
|
+ int bufsize = args->bufsize; |
||||||
|
+ int ret; |
||||||
|
+ |
||||||
|
do |
||||||
|
ret = SSL_read (conn, buf, bufsize); |
||||||
|
- while (ret == -1 |
||||||
|
- && SSL_get_error (conn, ret) == SSL_ERROR_SYSCALL |
||||||
|
+ while (ret == -1 && SSL_get_error (conn, ret) == SSL_ERROR_SYSCALL |
||||||
|
&& errno == EINTR); |
||||||
|
+ args->retval = ret; |
||||||
|
+} |
||||||
|
|
||||||
|
- return ret; |
||||||
|
+static int |
||||||
|
+openssl_read (int fd, char *buf, int bufsize, void *arg) |
||||||
|
+{ |
||||||
|
+ struct openssl_read_args args; |
||||||
|
+ args.fd = fd; |
||||||
|
+ args.buf = buf; |
||||||
|
+ args.bufsize = bufsize; |
||||||
|
+ args.ctx = (struct openssl_transport_context*) arg; |
||||||
|
+ |
||||||
|
+ if (run_with_timeout(opt.read_timeout, openssl_read_callback, &args)) { |
||||||
|
+ return -1; |
||||||
|
+ } |
||||||
|
+ return args.retval; |
||||||
|
} |
||||||
|
|
||||||
|
static int |
||||||
|
@@ -386,6 +409,18 @@ static struct transport_implementation o |
||||||
|
openssl_peek, openssl_errstr, openssl_close |
||||||
|
}; |
||||||
|
|
||||||
|
+struct scwt_context { |
||||||
|
+ SSL *ssl; |
||||||
|
+ int result; |
||||||
|
+}; |
||||||
|
+ |
||||||
|
+static void |
||||||
|
+ssl_connect_with_timeout_callback(void *arg) |
||||||
|
+{ |
||||||
|
+ struct scwt_context *ctx = (struct scwt_context *)arg; |
||||||
|
+ ctx->result = SSL_connect(ctx->ssl); |
||||||
|
+} |
||||||
|
+ |
||||||
|
/* Perform the SSL handshake on file descriptor FD, which is assumed |
||||||
|
to be connected to an SSL server. The SSL handle provided by |
||||||
|
OpenSSL is registered with the file descriptor FD using |
||||||
|
@@ -398,6 +433,7 @@ bool |
||||||
|
ssl_connect_wget (int fd, const char *hostname) |
||||||
|
{ |
||||||
|
SSL *conn; |
||||||
|
+ struct scwt_context scwt_ctx; |
||||||
|
struct openssl_transport_context *ctx; |
||||||
|
|
||||||
|
DEBUGP (("Initiating SSL handshake.\n")); |
||||||
|
@@ -425,7 +461,14 @@ ssl_connect_wget (int fd, const char *ho |
||||||
|
if (!SSL_set_fd (conn, FD_TO_SOCKET (fd))) |
||||||
|
goto error; |
||||||
|
SSL_set_connect_state (conn); |
||||||
|
- if (SSL_connect (conn) <= 0 || conn->state != SSL_ST_OK) |
||||||
|
+ |
||||||
|
+ scwt_ctx.ssl = conn; |
||||||
|
+ if (run_with_timeout(opt.read_timeout, ssl_connect_with_timeout_callback, |
||||||
|
+ &scwt_ctx)) { |
||||||
|
+ DEBUGP (("SSL handshake timed out.\n")); |
||||||
|
+ goto timeout; |
||||||
|
+ } |
||||||
|
+ if (scwt_ctx.result <= 0 || conn->state != SSL_ST_OK) |
||||||
|
goto error; |
||||||
|
|
||||||
|
ctx = xnew0 (struct openssl_transport_context); |
||||||
|
@@ -441,6 +484,7 @@ ssl_connect_wget (int fd, const char *ho |
||||||
|
error: |
||||||
|
DEBUGP (("SSL handshake failed.\n")); |
||||||
|
print_errors (); |
||||||
|
+ timeout: |
||||||
|
if (conn) |
||||||
|
SSL_free (conn); |
||||||
|
return false; |
@ -0,0 +1,154 @@ |
|||||||
|
From 0a33fa22c597234ab133f63127b4a5e00cf048b9 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Tomas Hozza <thozza@redhat.com> |
||||||
|
Date: Mon, 20 Jun 2016 12:10:38 +0200 |
||||||
|
Subject: [PATCH] Support non-ASCII characters |
||||||
|
|
||||||
|
Upstream commit 59b920874daa565a1323ffa1e756e80493190686 |
||||||
|
|
||||||
|
Signed-off-by: Tomas Hozza <thozza@redhat.com> |
||||||
|
--- |
||||||
|
src/url.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++-- |
||||||
|
tests/Test-ftp-iri.px | 4 +-- |
||||||
|
2 files changed, 87 insertions(+), 4 deletions(-) |
||||||
|
|
||||||
|
diff --git a/src/url.c b/src/url.c |
||||||
|
index 6bca719..d0d9e27 100644 |
||||||
|
--- a/src/url.c |
||||||
|
+++ b/src/url.c |
||||||
|
@@ -42,6 +42,11 @@ as that of the covered work. */ |
||||||
|
#include "url.h" |
||||||
|
#include "host.h" /* for is_valid_ipv6_address */ |
||||||
|
|
||||||
|
+#if HAVE_ICONV |
||||||
|
+#include <iconv.h> |
||||||
|
+#include <langinfo.h> |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
#ifdef __VMS |
||||||
|
#include "vms.h" |
||||||
|
#endif /* def __VMS */ |
||||||
|
@@ -1335,8 +1340,8 @@ UWC, C, C, C, C, C, C, C, /* NUL SOH STX ETX EOT ENQ ACK BEL */ |
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, /* p q r s t u v w */ |
||||||
|
0, 0, 0, 0, W, 0, 0, C, /* x y z { | } ~ DEL */ |
||||||
|
|
||||||
|
- C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, /* 128-143 */ |
||||||
|
- C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, C, /* 144-159 */ |
||||||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 128-143 */ |
||||||
|
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 144-159 */ |
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
||||||
|
|
||||||
|
@@ -1456,6 +1461,82 @@ append_uri_pathel (const char *b, const char *e, bool escaped, |
||||||
|
TAIL_INCR (dest, outlen); |
||||||
|
} |
||||||
|
|
||||||
|
+static char * |
||||||
|
+convert_fname (const char *fname) |
||||||
|
+{ |
||||||
|
+ char *converted_fname = (char *)fname; |
||||||
|
+#if HAVE_ICONV |
||||||
|
+ const char *from_encoding = opt.encoding_remote; |
||||||
|
+ const char *to_encoding = opt.locale; |
||||||
|
+ iconv_t cd; |
||||||
|
+ size_t len, done, inlen, outlen; |
||||||
|
+ char *s; |
||||||
|
+ const char *orig_fname = fname;; |
||||||
|
+ |
||||||
|
+ /* Defaults for remote and local encodings. */ |
||||||
|
+ if (!from_encoding) |
||||||
|
+ from_encoding = "UTF-8"; |
||||||
|
+ if (!to_encoding) |
||||||
|
+ to_encoding = nl_langinfo (CODESET); |
||||||
|
+ |
||||||
|
+ cd = iconv_open (to_encoding, from_encoding); |
||||||
|
+ if (cd == (iconv_t)(-1)) |
||||||
|
+ logprintf (LOG_VERBOSE, _("Conversion from %s to %s isn't supported\n"), |
||||||
|
+ quote (from_encoding), quote (to_encoding)); |
||||||
|
+ else |
||||||
|
+ { |
||||||
|
+ inlen = strlen (fname); |
||||||
|
+ len = outlen = inlen * 2; |
||||||
|
+ converted_fname = s = xmalloc (outlen + 1); |
||||||
|
+ done = 0; |
||||||
|
+ |
||||||
|
+ for (;;) |
||||||
|
+ { |
||||||
|
+ if (iconv (cd, &fname, &inlen, &s, &outlen) != (size_t)(-1) |
||||||
|
+ && iconv (cd, NULL, NULL, &s, &outlen) != (size_t)(-1)) |
||||||
|
+ { |
||||||
|
+ *(converted_fname + len - outlen - done) = '\0'; |
||||||
|
+ iconv_close(cd); |
||||||
|
+ DEBUGP (("Converted file name '%s' (%s) -> '%s' (%s)\n", |
||||||
|
+ orig_fname, from_encoding, converted_fname, to_encoding)); |
||||||
|
+ xfree (orig_fname); |
||||||
|
+ return converted_fname; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ /* Incomplete or invalid multibyte sequence */ |
||||||
|
+ if (errno == EINVAL || errno == EILSEQ) |
||||||
|
+ { |
||||||
|
+ logprintf (LOG_VERBOSE, |
||||||
|
+ _("Incomplete or invalid multibyte sequence encountered\n")); |
||||||
|
+ xfree (converted_fname); |
||||||
|
+ converted_fname = (char *)orig_fname; |
||||||
|
+ break; |
||||||
|
+ } |
||||||
|
+ else if (errno == E2BIG) /* Output buffer full */ |
||||||
|
+ { |
||||||
|
+ done = len; |
||||||
|
+ len = outlen = done + inlen * 2; |
||||||
|
+ converted_fname = xrealloc (converted_fname, outlen + 1); |
||||||
|
+ s = converted_fname + done; |
||||||
|
+ } |
||||||
|
+ else /* Weird, we got an unspecified error */ |
||||||
|
+ { |
||||||
|
+ logprintf (LOG_VERBOSE, _("Unhandled errno %d\n"), errno); |
||||||
|
+ xfree (converted_fname); |
||||||
|
+ converted_fname = (char *)orig_fname; |
||||||
|
+ break; |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ DEBUGP (("Failed to convert file name '%s' (%s) -> '?' (%s)\n", |
||||||
|
+ orig_fname, from_encoding, to_encoding)); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ iconv_close(cd); |
||||||
|
+#endif |
||||||
|
+ |
||||||
|
+ return converted_fname; |
||||||
|
+} |
||||||
|
+ |
||||||
|
/* Append to DEST the directory structure that corresponds the |
||||||
|
directory part of URL's path. For example, if the URL is |
||||||
|
http://server/dir1/dir2/file, this appends "/dir1/dir2". |
||||||
|
@@ -1582,6 +1663,8 @@ url_file_name (const struct url *u, char *replaced_filename) |
||||||
|
|
||||||
|
fname = fnres.base; |
||||||
|
|
||||||
|
+ fname = convert_fname (fname); |
||||||
|
+ |
||||||
|
/* Check the cases in which the unique extensions are not used: |
||||||
|
1) Clobbering is turned off (-nc). |
||||||
|
2) Retrieval with regetting. |
||||||
|
diff --git a/tests/Test-ftp-iri.px b/tests/Test-ftp-iri.px |
||||||
|
index a4b7fe1..24ac467 100755 |
||||||
|
--- a/tests/Test-ftp-iri.px |
||||||
|
+++ b/tests/Test-ftp-iri.px |
||||||
|
@@ -26,12 +26,12 @@ my %urls = ( |
||||||
|
}, |
||||||
|
); |
||||||
|
|
||||||
|
-my $cmdline = $WgetTest::WGETPATH . " --local-encoding=iso-8859-1 -S ftp://localhost:{{port}}/fran${ccedilla_l1}ais.txt"; |
||||||
|
+my $cmdline = $WgetTest::WGETPATH . " --local-encoding=iso-8859-1 --remote-encoding=utf-8 -S ftp://localhost:{{port}}/fran${ccedilla_l1}ais.txt"; |
||||||
|
|
||||||
|
my $expected_error_code = 0; |
||||||
|
|
||||||
|
my %expected_downloaded_files = ( |
||||||
|
- "fran${ccedilla_u8}ais.txt" => { |
||||||
|
+ "fran${ccedilla_l1}ais.txt" => { |
||||||
|
content => $francais, |
||||||
|
}, |
||||||
|
); |
||||||
|
-- |
||||||
|
2.5.5 |
||||||
|
|
@ -0,0 +1,25 @@ |
|||||||
|
From 7f43748544f26008d0dd337704f02a6ed3200aaf Mon Sep 17 00:00:00 2001 |
||||||
|
From: Dave Reisner <dreisner@archlinux.org> |
||||||
|
Date: Mon, 17 Jun 2013 23:31:46 +0530 |
||||||
|
Subject: [PATCH] Fix error in texi2pod intriduced with Perl 5.18 |
||||||
|
|
||||||
|
--- |
||||||
|
doc/texi2pod.pl | 2 +- |
||||||
|
1 files changed, 1 insertions(+), 1 deletion(-) |
||||||
|
|
||||||
|
diff --git a/doc/texi2pod.pl b/doc/texi2pod.pl |
||||||
|
index 86c4b18..9db6de1 100755 |
||||||
|
--- a/doc/texi2pod.pl |
||||||
|
+++ b/doc/texi2pod.pl |
||||||
|
@@ -291,7 +291,7 @@ while(<$inf>) { |
||||||
|
if (defined $1) { |
||||||
|
my $thing = $1; |
||||||
|
if ($ic =~ /\@asis/) { |
||||||
|
- $_ = "\n=item $thing\n"; |
||||||
|
+ $_ = "\n=item C<$thing>\n"; |
||||||
|
} else { |
||||||
|
# Entity escapes prevent munging by the <> processing below. |
||||||
|
$_ = "\n=item $ic\<$thing\>\n"; |
||||||
|
-- |
||||||
|
1.8.1.4 |
||||||
|
|
@ -0,0 +1,11 @@ |
|||||||
|
--- configure~ 2011-09-13 03:15:38.000000000 -0500 |
||||||
|
+++ configure 2011-12-16 09:19:34.574773958 -0600 |
||||||
|
@@ -561,7 +561,7 @@ |
||||||
|
PACKAGE_NAME='wget' |
||||||
|
PACKAGE_TARNAME='wget' |
||||||
|
PACKAGE_VERSION='1.14' |
||||||
|
-PACKAGE_STRING='wget 1.14' |
||||||
|
+PACKAGE_STRING='wget 1.14 (Red Hat modified)' |
||||||
|
PACKAGE_BUGREPORT='bug-wget@gnu.org' |
||||||
|
PACKAGE_URL='' |
||||||
|
|
@ -0,0 +1,590 @@ |
|||||||
|
Summary: A utility for retrieving files using the HTTP or FTP protocols |
||||||
|
Name: wget |
||||||
|
Version: 1.14 |
||||||
|
Release: 18%{?dist} |
||||||
|
License: GPLv3+ |
||||||
|
Group: Applications/Internet |
||||||
|
Url: http://www.gnu.org/software/wget/ |
||||||
|
Source: ftp://ftp.gnu.org/gnu/wget/wget-%{version}.tar.xz |
||||||
|
|
||||||
|
Patch1: wget-rh-modified.patch |
||||||
|
Patch2: wget-1.12-path.patch |
||||||
|
Patch3: wget-1.14-sslreadtimeout.patch |
||||||
|
Patch4: wget-1.14-manpage-tex5.patch |
||||||
|
Patch5: wget-1.14-add_missing_options_doc.patch |
||||||
|
Patch6: wget-1.14-texi2pod_error_perl518.patch |
||||||
|
Patch7: wget-1.14-fix-double-free-of-iri-orig_url.patch |
||||||
|
Patch8: wget-1.14-Fix-deadcode-and-possible-NULL-use.patch |
||||||
|
Patch9: wget-1.14-doc-missing-opts-and-fix-preserve-permissions.patch |
||||||
|
Patch10: wget-1.14-set_sock_to_-1_if_no_persistent_conn.patch |
||||||
|
Patch11: wget-1.14-document-backups.patch |
||||||
|
Patch12: wget-1.14-fix-backups-to-work-as-documented.patch |
||||||
|
Patch13: wget-1.14-CVE-2014-4877.patch |
||||||
|
Patch14: wget-1.14-rh1203384.patch |
||||||
|
Patch15: wget-1.14-rh1147572.patch |
||||||
|
Patch16: wget-1.14-CVE-2016-4971.patch |
||||||
|
# needed because fix for CVE-2016-4971 changes default behavior |
||||||
|
# and the file is not saved in correct encoding. This caused the |
||||||
|
# Test-ftp-iri-fallback test to fail. This additional change makes |
||||||
|
# Test-ftp-iri-fallback test pass again. |
||||||
|
Patch17: wget-1.14-support-non-ASCII-characters.patch |
||||||
|
Patch18: wget-1.14-add-openssl-tlsv11-tlsv12-support.patch |
||||||
|
# Fix for randomly failing unit test |
||||||
|
# combination of upstream commits without the support for Valgrind |
||||||
|
# commit 3eff3ad69a46364475e1f4abdf9412cfa87e3d6c |
||||||
|
# commit 2303793a626158627bdb2ac255e0f58697682b24 |
||||||
|
Patch19: wget-1.14-fix-synchronization-in-Test-proxied-https-auth.patch |
||||||
|
Patch20: wget-1.14-CVE-2017-13089.patch |
||||||
|
Patch21: wget-1.14-CVE-2017-13090.patch |
||||||
|
# Partial backport without setting the default algorithm |
||||||
|
# http://git.savannah.gnu.org/cgit/wget.git/commit/?id=e9cc8b2f7c4678b832ad56f7119bba86a8db08ef |
||||||
|
Patch22: wget-1.14-digest-auth-qop-segfault-fix.patch |
||||||
|
# https://git.savannah.gnu.org/cgit/wget.git/commit/?id=1fc9c95ec144499e69dc8ec76dbe07799d7d82cd |
||||||
|
Patch23: wget-1.14-CVE-2018-0494.patch |
||||||
|
|
||||||
|
Provides: webclient |
||||||
|
Provides: bundled(gnulib) |
||||||
|
Requires(post): /sbin/install-info |
||||||
|
Requires(preun): /sbin/install-info |
||||||
|
BuildRequires: openssl-devel, pkgconfig, texinfo, gettext, autoconf, libidn-devel, libuuid-devel, perl-podlators |
||||||
|
# dependencies for the test suite |
||||||
|
BuildRequires: perl-libwww-perl |
||||||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) |
||||||
|
|
||||||
|
%description |
||||||
|
GNU Wget is a file retrieval utility which can use either the HTTP or |
||||||
|
FTP protocols. Wget features include the ability to work in the |
||||||
|
background while you are logged out, recursive retrieval of |
||||||
|
directories, file name wildcard matching, remote file timestamp |
||||||
|
storage and comparison, use of Rest with FTP servers and Range with |
||||||
|
HTTP servers to retrieve files over slow or unstable connections, |
||||||
|
support for Proxy servers, and configurability. |
||||||
|
|
||||||
|
%prep |
||||||
|
%setup -q |
||||||
|
%patch1 -p0 |
||||||
|
%patch2 -p1 |
||||||
|
%patch3 -p1 -b .sslreadtimeout |
||||||
|
%patch4 -p1 |
||||||
|
%patch5 -p1 |
||||||
|
%patch6 -p1 |
||||||
|
%patch7 -p1 |
||||||
|
%patch8 -p1 |
||||||
|
%patch9 -p1 |
||||||
|
%patch10 -p1 |
||||||
|
%patch11 -p1 |
||||||
|
%patch12 -p1 |
||||||
|
%patch13 -p1 |
||||||
|
%patch14 -p1 |
||||||
|
%patch15 -p1 |
||||||
|
%patch16 -p1 |
||||||
|
%patch17 -p1 |
||||||
|
%patch18 -p1 -b .tls11_tls12 |
||||||
|
%patch19 -p1 -b .test_synch_fix |
||||||
|
%patch20 -p1 -b .CVE-2017-13089 |
||||||
|
%patch21 -p1 -b .CVE-2017-13090 |
||||||
|
%patch22 -p1 -b .digest-auth-segfault |
||||||
|
%patch23 -p1 -b .CVE-2018-0494 |
||||||
|
|
||||||
|
%build |
||||||
|
if pkg-config openssl ; then |
||||||
|
CPPFLAGS=`pkg-config --cflags openssl`; export CPPFLAGS |
||||||
|
LDFLAGS=`pkg-config --libs openssl`; export LDFLAGS |
||||||
|
fi |
||||||
|
%configure --with-ssl=openssl --enable-largefile --enable-opie --enable-digest --enable-ntlm --enable-nls --enable-ipv6 --disable-rpath |
||||||
|
make %{?_smp_mflags} |
||||||
|
|
||||||
|
%install |
||||||
|
rm -rf $RPM_BUILD_ROOT |
||||||
|
make install DESTDIR=$RPM_BUILD_ROOT CFLAGS="$RPM_OPT_FLAGS" |
||||||
|
rm -f $RPM_BUILD_ROOT/%{_infodir}/dir |
||||||
|
|
||||||
|
%find_lang %{name} |
||||||
|
|
||||||
|
%post |
||||||
|
/sbin/install-info %{_infodir}/wget.info.gz %{_infodir}/dir || : |
||||||
|
|
||||||
|
%preun |
||||||
|
if [ "$1" = 0 ]; then |
||||||
|
/sbin/install-info --delete %{_infodir}/wget.info.gz %{_infodir}/dir || : |
||||||
|
fi |
||||||
|
|
||||||
|
%clean |
||||||
|
rm -rf $RPM_BUILD_ROOT |
||||||
|
|
||||||
|
%check |
||||||
|
make check |
||||||
|
|
||||||
|
%files -f %{name}.lang |
||||||
|
%defattr(-,root,root) |
||||||
|
%doc AUTHORS MAILING-LIST NEWS README COPYING doc/sample.wgetrc |
||||||
|
%config(noreplace) %{_sysconfdir}/wgetrc |
||||||
|
%{_mandir}/man1/wget.* |
||||||
|
%{_bindir}/wget |
||||||
|
%{_infodir}/* |
||||||
|
|
||||||
|
%changelog |
||||||
|
* Wed May 09 2018 Tomas Hozza <thozza@redhat.com> - 1.14-18 |
||||||
|
- Fix CVE-2018-0494 (#1576106) |
||||||
|
|
||||||
|
* Mon Apr 23 2018 Tomas Hozza <thozza@redhat.com> - 1.14-17 |
||||||
|
- Fix segfault when Digest Authentication header is missing 'qop' part (#1545310) |
||||||
|
|
||||||
|
* Tue Oct 24 2017 Tomas Hozza <thozza@redhat.com> - 1.14-16 |
||||||
|
- Fixed various security flaws (CVE-2017-13089, CVE-2017-13090) |
||||||
|
|
||||||
|
* Fri May 05 2017 Tomas Hozza <thozza@redhat.com> - 1.14-15 |
||||||
|
- Added TLSv1_1 and TLSv1_2 as secure-protocol values to help (#1439811) |
||||||
|
- Fixed synchronization in randomly failing unit test Test-proxied-https-auth (#1448440) |
||||||
|
|
||||||
|
* Wed Apr 12 2017 Tomas Hozza <thozza@redhat.com> - 1.14-14 |
||||||
|
- TLS v1.1 and v1.2 can now be specified with --secure-protocol option (#1439811) |
||||||
|
|
||||||
|
* Mon Jun 20 2016 Tomas Hozza <thozza@redhat.com> - 1.14-13 |
||||||
|
- Fix CVE-2016-4971 (#1345778) |
||||||
|
- Added support for non-ASCII URLs (Related: CVE-2016-4971) |
||||||
|
|
||||||
|
* Mon Mar 21 2016 Tomas Hozza <thozza@redhat.com> - 1.14-12 |
||||||
|
- Fix wget to include Host header on CONNECT as required by HTTP 1.1 (#1203384) |
||||||
|
- Run internal test suite during build (#1295846) |
||||||
|
- Fix -nv being documented as synonym for two options (#1147572) |
||||||
|
|
||||||
|
* Fri Oct 24 2014 Tomas Hozza <thozza@redhat.com> - 1.14-11 |
||||||
|
- Fix CVE-2014-4877 wget: FTP symlink arbitrary filesystem access (#1156136) |
||||||
|
|
||||||
|
* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 1.14-10 |
||||||
|
- Mass rebuild 2014-01-24 |
||||||
|
|
||||||
|
* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 1.14-9 |
||||||
|
- Mass rebuild 2013-12-27 |
||||||
|
|
||||||
|
* Mon Jul 15 2013 Tomas Hozza <thozza@redhat.com> - 1.14-8 |
||||||
|
- Fix deadcode and possible use of NULL in vprintf (#913153) |
||||||
|
- Add documentation for --regex-type and --preserve-permissions |
||||||
|
- Fix --preserve-permissions to work as documented (and expected) |
||||||
|
- Fix bug when authenticating using user:password@url syntax (#912358) |
||||||
|
- Document and fix --backups option |
||||||
|
|
||||||
|
* Wed Jul 10 2013 Tomas Hozza <thozza@redhat.com> - 1.14-7 |
||||||
|
- Fix double free of iri->orig_url (#981778) |
||||||
|
|
||||||
|
* Mon Jun 24 2013 Tomas Hozza <thozza@redhat.com> - 1.14-6 |
||||||
|
- add missing options accept-regex and reject-regex to man page |
||||||
|
- fix errors in texi2pod introduced in Perl-5.18 |
||||||
|
|
||||||
|
* Fri Feb 22 2013 Tomas Hozza <thozza@redhat.com> - 1.14-5 |
||||||
|
- Added BuildRequires: perl-podlators for pod2man |
||||||
|
- Patched manpage to silent new Tex errors |
||||||
|
- Resolves: (#914571) |
||||||
|
|
||||||
|
* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.14-4 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild |
||||||
|
|
||||||
|
* Thu Oct 11 2012 Tomas Hozza <thozza@redhat.com> 1.14-3 |
||||||
|
- Added libuuid-devel to BuildRequires to use libuuid functions |
||||||
|
in "src/warc.c" functions (#865421) |
||||||
|
|
||||||
|
* Wed Oct 10 2012 Tomas Hozza <thozza@redhat.com> 1.14-2 |
||||||
|
- Added libidn-devel to BuildRequires to support IDN domains (#680394) |
||||||
|
|
||||||
|
* Thu Aug 09 2012 Karsten Hopp <karsten@redhat.com> 1.14-1 |
||||||
|
- Update to wget-1.14 |
||||||
|
|
||||||
|
* Sun Jul 22 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.13.4-5 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild |
||||||
|
|
||||||
|
* Tue May 29 2012 Karsten Hopp <karsten@redhat.com> 1.13.4-4 |
||||||
|
- fix timeout if http server doesn't answer to SSL handshake (#860727) |
||||||
|
|
||||||
|
* Tue May 15 2012 Karsten Hopp <karsten@redhat.com> 1.13.4-3 |
||||||
|
- add virtual provides per https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries |
||||||
|
|
||||||
|
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.13.4-2 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild |
||||||
|
|
||||||
|
* Fri Dec 16 2011 Jon Ciesla <limburgher@gmail.com> - 1.13.4-1 |
||||||
|
- New upstream, BZ 730286. |
||||||
|
- Modified path patch. |
||||||
|
- subjectAltNames patch upstreamed. |
||||||
|
- Specified openssl at config time. |
||||||
|
|
||||||
|
* Thu Jun 23 2011 Volker Fröhlich <volker27@gmx.at> - 1.12-4 |
||||||
|
- Applied patch to accept subjectAltNames in X509 certificates (#674186) |
||||||
|
- New URL (#658969) |
||||||
|
|
||||||
|
* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.12-3 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild |
||||||
|
|
||||||
|
* Wed Nov 18 2009 Karsten Hopp <karsten@redhat.com> 1.12-2 |
||||||
|
- don't provide /usr/share/info/dir |
||||||
|
|
||||||
|
* Tue Nov 17 2009 Karsten Hopp <karsten@redhat.com> 1.12-1 |
||||||
|
- update to wget-1.12 |
||||||
|
- fixes CVE-2009-3490 wget: incorrect verification of SSL certificate |
||||||
|
with NUL in name |
||||||
|
|
||||||
|
* Fri Aug 21 2009 Tomas Mraz <tmraz@redhat.com> - 1.11.4-5 |
||||||
|
- rebuilt with new openssl |
||||||
|
|
||||||
|
* Mon Jul 27 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.11.4-4 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild |
||||||
|
|
||||||
|
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.11.4-3 |
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild |
||||||
|
|
||||||
|
* Sun Jan 18 2009 Tomas Mraz <tmraz@redhat.com> 1.11.4-2 |
||||||
|
- rebuild with new openssl |
||||||
|
|
||||||
|
* Wed Aug 13 2008 Karsten Hopp <karsten@redhat.com> 1.11.4-1 |
||||||
|
- update |
||||||
|
|
||||||
|
* Wed Jun 04 2008 Karsten Hopp <karsten@redhat.com> 1.11.3-1 |
||||||
|
- wget-1.11.3, downgrades the combination of the -N and -O options |
||||||
|
to a warning instead of an error |
||||||
|
|
||||||
|
* Fri May 09 2008 Karsten Hopp <karsten@redhat.com> 1.11.2-1 |
||||||
|
- wget-1.11.2, fixes #179962 |
||||||
|
|
||||||
|
* Mon Mar 31 2008 Karsten Hopp <karsten@redhat.com> 1.11.1-1 |
||||||
|
- update to bugfix release 1.11.1, fixes p.e. #433606 |
||||||
|
|
||||||
|
* Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 1.11-2 |
||||||
|
- Autorebuild for GCC 4.3 |
||||||
|
|
||||||
|
* Tue Dec 04 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-17 |
||||||
|
- rebuild to pick up new openssl SONAME |
||||||
|
|
||||||
|
* Mon Aug 27 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-16 |
||||||
|
- fix license tag |
||||||
|
- rebuild |
||||||
|
|
||||||
|
* Mon Feb 12 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-15 |
||||||
|
- fix discarding of expired cookies |
||||||
|
- escape non-printable characters |
||||||
|
- drop to11 patch for now (#223754, #227853, #227498) |
||||||
|
|
||||||
|
* Mon Feb 05 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-14 |
||||||
|
- shut up rpmlint, even though xx isn't a macro |
||||||
|
|
||||||
|
* Mon Feb 05 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-13 |
||||||
|
- merge review changes (#226538) |
||||||
|
- use version/release/... in buildroot tag |
||||||
|
- remove BR perl |
||||||
|
- use SMP flags |
||||||
|
- use make install instead of %%makeinstall |
||||||
|
- include copy of license |
||||||
|
- use Requires(post)/Requires(preun) |
||||||
|
- use optflags |
||||||
|
- remove trailing dot from summary |
||||||
|
- change tabs to spaces |
||||||
|
|
||||||
|
* Thu Jan 18 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-12 |
||||||
|
- don't abort (un)install scriptlets when _excludedocs is set (Ville Skyttä) |
||||||
|
|
||||||
|
* Wed Jan 10 2007 Karsten Hopp <karsten@redhat.com> 1.10.2-11 |
||||||
|
- add fix for CVE-2006-6719 |
||||||
|
|
||||||
|
* Fri Dec 08 2006 Karsten Hopp <karsten@redhat.com> 1.10.2-10 |
||||||
|
- fix repeated downloads (Tomas Heinrich, #186195) |
||||||
|
|
||||||
|
* Thu Dec 07 2006 Karsten Hopp <karsten@redhat.com> 1.10.2-9 |
||||||
|
- add distflag, rebuild |
||||||
|
|
||||||
|
* Thu Dec 07 2006 Karsten Hopp <karsten@redhat.com> 1.10.2-8 |
||||||
|
- Resolves: #218211 |
||||||
|
fix double free corruption |
||||||
|
|
||||||
|
* Sun Oct 01 2006 Jesse Keating <jkeating@redhat.com> - 1.10.2-7 |
||||||
|
- rebuilt for unwind info generation, broken in gcc-4.1.1-21 |
||||||
|
|
||||||
|
* Mon Sep 25 2006 Karsten Hopp <karsten@redhat.de> 1.10.2-6 |
||||||
|
- fix resumed downloads (#205723) |
||||||
|
|
||||||
|
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 1.10.2-5.1 |
||||||
|
- rebuild |
||||||
|
|
||||||
|
* Thu Jun 29 2006 Karsten Hopp <karsten@redhat.de> 1.10.2-5 |
||||||
|
- updated german translations from Robert Scheck |
||||||
|
|
||||||
|
* Tue Jun 27 2006 Karsten Hopp <karsten@redhat.de> 1.10.2-4 |
||||||
|
- upstream patches |
||||||
|
|
||||||
|
* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 1.10.2-3.2.1 |
||||||
|
- bump again for double-long bug on ppc(64) |
||||||
|
|
||||||
|
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 1.10.2-3.2 |
||||||
|
- rebuilt for new gcc4.1 snapshot and glibc changes |
||||||
|
|
||||||
|
* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com> |
||||||
|
- rebuilt |
||||||
|
|
||||||
|
* Thu Nov 10 2005 Tomas Mraz <tmraz@redhat.com> 1.10.2-3 |
||||||
|
- rebuilt against new openssl |
||||||
|
|
||||||
|
* Tue Oct 25 2005 Karsten Hopp <karsten@redhat.de> 1.10.2-2 |
||||||
|
- use %%{_sysconfdir} (#171555) |
||||||
|
|
||||||
|
* Sat Oct 15 2005 Florian La Roche <laroche@redhat.com> |
||||||
|
- 1.10.2 |
||||||
|
|
||||||
|
* Thu Sep 08 2005 Karsten Hopp <karsten@redhat.de> 1.10.1-7 |
||||||
|
- fix builtin help of --load-cookies / --save-cookies (#165408) |
||||||
|
|
||||||
|
* Wed Sep 07 2005 Karsten Hopp <karsten@redhat.de> 1.10.1-6 |
||||||
|
- convert changelog to UTF-8 (#159585) |
||||||
|
|
||||||
|
* Mon Sep 05 2005 Karsten Hopp <karsten@redhat.de> 1.10.1-5 |
||||||
|
- update |
||||||
|
- drop patches which are already in the upstream sources |
||||||
|
|
||||||
|
* Wed Jul 13 2005 Karsten Hopp <karsten@redhat.de> 1.10-5 |
||||||
|
- update german translation |
||||||
|
|
||||||
|
* Mon Jul 11 2005 Karsten Hopp <karsten@redhat.de> 1.10-4 |
||||||
|
- update german translation (Robert Scheck) |
||||||
|
|
||||||
|
* Tue Jul 05 2005 Karsten Hopp <karsten@redhat.de> 1.10-3 |
||||||
|
- fix minor documentation bug |
||||||
|
- fix --no-cookies crash |
||||||
|
|
||||||
|
* Mon Jul 04 2005 Karsten Hopp <karsten@redhat.de> 1.10-2 |
||||||
|
- update to wget-1.10 |
||||||
|
- drop passive-ftp patch, already in 1.10 |
||||||
|
- drop CVS patch |
||||||
|
- drop LFS patch, similar fix in 1.10 |
||||||
|
- drop protdir patch, similar fix in 1.10 |
||||||
|
- drop actime patch, already in 1.10 |
||||||
|
|
||||||
|
* Wed Mar 02 2005 Karsten Hopp <karsten@redhat.de> 1.9.1-22 |
||||||
|
- build with gcc-4 |
||||||
|
|
||||||
|
* Wed Feb 02 2005 Karsten Hopp <karsten@redhat.de> 1.9.1-21 |
||||||
|
- remove old copy of the manpage (#146875, #135597) |
||||||
|
- fix garbage in manpage (#117519) |
||||||
|
|
||||||
|
* Tue Feb 01 2005 Karsten Hopp <karsten@redhat.de> 1.9.1-20 |
||||||
|
- texi2pod doesn't handle texinfo xref's. rewrite some lines so that |
||||||
|
the man page doesn't have incomplete sentences anymore (#140470) |
||||||
|
|
||||||
|
* Mon Jan 31 2005 Karsten Hopp <karsten@redhat.de> 1.9.1-19 |
||||||
|
- Don't set actime to access time of the remote file or tmpwatch might |
||||||
|
remove the file again (#146440). Set it to the current time instead. |
||||||
|
timestamping checks only modtime, so this should be ok. |
||||||
|
|
||||||
|
* Thu Jan 20 2005 Karsten Hopp <karsten@redhat.de> 1.9.1-18 |
||||||
|
- add support for --protocol-directories option as documented |
||||||
|
in the man page (Ville Skyttä, #145571) |
||||||
|
|
||||||
|
* Wed Sep 29 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-17 |
||||||
|
- additional LFS patch from Leonid Petrov to fix file lengths in |
||||||
|
http downloads |
||||||
|
|
||||||
|
* Thu Sep 16 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-16 |
||||||
|
- more fixes |
||||||
|
|
||||||
|
* Tue Sep 14 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-15 |
||||||
|
- added strtol fix from Leonid Petrov, reenable LFS |
||||||
|
|
||||||
|
* Tue Sep 14 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-14 |
||||||
|
- buildrequires gettext (#132519) |
||||||
|
|
||||||
|
* Wed Sep 01 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-13 |
||||||
|
- disable LFS patch for now, it breaks normal downloads (123524#c15) |
||||||
|
|
||||||
|
* Tue Aug 31 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-12 |
||||||
|
- move largefile stuff inside the configure script, it didn't |
||||||
|
get appended to CFLAGS |
||||||
|
|
||||||
|
* Tue Aug 31 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-11 |
||||||
|
- rebuild |
||||||
|
|
||||||
|
* Tue Aug 31 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-10 |
||||||
|
- fix patch |
||||||
|
|
||||||
|
* Sun Aug 29 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-9 |
||||||
|
- more cleanups of the manpage (#117519) |
||||||
|
|
||||||
|
* Fri Aug 27 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-8 |
||||||
|
- rebuild |
||||||
|
|
||||||
|
* Fri Aug 27 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-7 |
||||||
|
- clean up manpage (#117519) |
||||||
|
- buildrequire texinfo (#123780) |
||||||
|
- LFS patch, based on wget-LFS-20040630.patch from Leonid Petrov |
||||||
|
(#123524, #124628, #115348) |
||||||
|
|
||||||
|
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com> |
||||||
|
- rebuilt |
||||||
|
|
||||||
|
* Thu Mar 11 2004 Karsten Hopp <karsten@redhat.de> 1.9.1-3 |
||||||
|
- fix documentation (#117517) |
||||||
|
|
||||||
|
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com> |
||||||
|
- rebuilt |
||||||
|
|
||||||
|
* Fri Nov 28 2003 Karsten Hopp <karsten@redhat.de> 1.9.1-3 |
||||||
|
- update to -stable CVS |
||||||
|
- document the passive ftp default |
||||||
|
|
||||||
|
* Fri Nov 28 2003 Karsten Hopp <karsten@redhat.de> 1.9.1-2 |
||||||
|
- add patch from -stable CVS |
||||||
|
|
||||||
|
* Fri Nov 28 2003 Karsten Hopp <karsten@redhat.de> 1.9.1-1 |
||||||
|
- update to 1.9.1 |
||||||
|
- remove obsolete patches |
||||||
|
|
||||||
|
* Mon Aug 04 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-15.3 |
||||||
|
- fix variable usage |
||||||
|
|
||||||
|
* Tue Jul 22 2003 Nalin Dahyabhai <nalin@redhat.com> 1.8.2-15.2 |
||||||
|
- rebuild |
||||||
|
|
||||||
|
* Wed Jun 25 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-15.1 |
||||||
|
- rebuilt |
||||||
|
|
||||||
|
* Wed Jun 25 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-15 |
||||||
|
- default to passive-ftp (#97996) |
||||||
|
|
||||||
|
* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com> |
||||||
|
- rebuilt |
||||||
|
|
||||||
|
* Wed Jun 04 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-13 |
||||||
|
- rebuild |
||||||
|
|
||||||
|
* Wed Jun 04 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-12 |
||||||
|
- merge debian patch for long URLs |
||||||
|
- cleanup filename patch |
||||||
|
|
||||||
|
* Sun May 11 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-11 |
||||||
|
- rebuild |
||||||
|
|
||||||
|
* Sun May 11 2003 Karsten Hopp <karsten@redhat.de> 1.8.2-10 |
||||||
|
- upstream fix off-by-one error |
||||||
|
|
||||||
|
* Wed Jan 22 2003 Tim Powers <timp@redhat.com> |
||||||
|
- rebuilt |
||||||
|
|
||||||
|
* Tue Jan 7 2003 Nalin Dahyabhai <nalin@redhat.com> 1.8.2-8 |
||||||
|
- rebuild |
||||||
|
|
||||||
|
* Fri Dec 13 2002 Nalin Dahyabhai <nalin@redhat.com> |
||||||
|
- use openssl pkg-config data, if present |
||||||
|
- don't bomb out when building with newer openssl |
||||||
|
|
||||||
|
* Thu Dec 12 2002 Tim Powers <timp@redhat.com> 1.8.2-7 |
||||||
|
- rebuild on all arches |
||||||
|
|
||||||
|
* Tue Nov 19 2002 Tim Powers <timp@redhat.com> |
||||||
|
- rebuild on all arches |
||||||
|
|
||||||
|
* Fri Oct 4 2002 Karsten Hopp <karsten@redhat.de> 1.8.2-5 |
||||||
|
- fix directory traversal bug |
||||||
|
|
||||||
|
* Wed Jul 24 2002 Trond Eivind Glomsrød <teg@redhat.com> 1.8.2-3 |
||||||
|
- Don't segfault when downloading URLs A-B-A (A-A-B worked) #49859 |
||||||
|
|
||||||
|
* Fri Jun 21 2002 Tim Powers <timp@redhat.com> |
||||||
|
- automated rebuild |
||||||
|
|
||||||
|
* Wed May 29 2002 Florian La Roche <Florian.LaRoche@redhat.de> |
||||||
|
- update to 1.8.2 (bug-fix release) |
||||||
|
|
||||||
|
* Thu May 23 2002 Tim Powers <timp@redhat.com> |
||||||
|
- automated rebuild |
||||||
|
|
||||||
|
* Mon Apr 29 2002 Florian La Roche <Florian.LaRoche@redhat.de> |
||||||
|
- remove s390 patch, not needed anymore |
||||||
|
|
||||||
|
* Wed Feb 27 2002 Trond Eivind Glomsrød <teg@redhat.com> 1.8.1-4 |
||||||
|
- Rebuild |
||||||
|
|
||||||
|
* Wed Jan 09 2002 Tim Powers <timp@redhat.com> |
||||||
|
- automated rebuild |
||||||
|
|
||||||
|
* Fri Dec 28 2001 Florian La Roche <Florian.LaRoche@redhat.de> |
||||||
|
- add hack to not link against libmd5, even if available |
||||||
|
|
||||||
|
* Fri Dec 28 2001 Florian La Roche <Florian.LaRoche@redhat.de> |
||||||
|
- update to 1.8.1 |
||||||
|
|
||||||
|
* Thu Dec 13 2001 Florian La Roche <Florian.LaRoche@redhat.de> |
||||||
|
- update to 1.8 |
||||||
|
- also include md5global to get it compile |
||||||
|
|
||||||
|
* Sun Nov 18 2001 Florian La Roche <Florian.LaRoche@redhat.de> |
||||||
|
- update to 1.7.1 |
||||||
|
|
||||||
|
* Wed Sep 5 2001 Phil Knirsch <phil@redhat.de> 1.7-3 |
||||||
|
- Added va_args patch required for S390. |
||||||
|
|
||||||
|
* Mon Sep 3 2001 Trond Eivind Glomsrød <teg@redhat.com> 1.7-2 |
||||||
|
- Configure with ssl support (duh - #53116) |
||||||
|
- s/Copyright/License/ |
||||||
|
|
||||||
|
* Wed Jun 6 2001 Trond Eivind Glomsrød <teg@redhat.com> |
||||||
|
- 1.7 |
||||||
|
- Require perl for building (to get man pages) |
||||||
|
- Don't include the Japanese po file, it's now included |
||||||
|
- Use %%{_tmppath} |
||||||
|
- no patches necessary |
||||||
|
- Make /etc/wgetrc noreplace |
||||||
|
- More docs |
||||||
|
|
||||||
|
* Tue Jan 30 2001 Trond Eivind Glomsrød <teg@redhat.com> |
||||||
|
- Norwegian isn't a iso-8859-2 locale, neither is Danish. |
||||||
|
This fixes #15025. |
||||||
|
- langify |
||||||
|
|
||||||
|
* Sat Jan 6 2001 Bill Nottingham <notting@redhat.com> |
||||||
|
- escape %%xx characters before fnmatch (#23475, patch from alane@geeksrus.net) |
||||||
|
|
||||||
|
* Fri Jan 5 2001 Bill Nottingham <notting@redhat.com> |
||||||
|
- update to 1.6, fix patches accordingly (#23412) |
||||||
|
- fix symlink patch (#23411) |
||||||
|
|
||||||
|
* Mon Dec 18 2000 Yukihiro Nakai <ynakai@redhat.com> |
||||||
|
- Add Japanese and Korean Resources |
||||||
|
|
||||||
|
* Tue Aug 1 2000 Bill Nottingham <notting@redhat.com> |
||||||
|
- setlocale for LC_CTYPE too, or else all the translations think their |
||||||
|
characters are unprintable. |
||||||
|
|
||||||
|
* Thu Jul 13 2000 Prospector <bugzilla@redhat.com> |
||||||
|
- automatic rebuild |
||||||
|
|
||||||
|
* Sun Jun 11 2000 Bill Nottingham <notting@redhat.com> |
||||||
|
- build in new environment |
||||||
|
|
||||||
|
* Mon Jun 5 2000 Bernhard Rosenkraenzer <bero@redhat.com> |
||||||
|
- FHS compliance |
||||||
|
|
||||||
|
* Thu Feb 3 2000 Bill Nottingham <notting@redhat.com> |
||||||
|
- handle compressed man pages |
||||||
|
|
||||||
|
* Thu Aug 26 1999 Jeff Johnson <jbj@redhat.com> |
||||||
|
- don't permit chmod 777 on symlinks (#4725). |
||||||
|
|
||||||
|
* Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com> |
||||||
|
- auto rebuild in the new build environment (release 4) |
||||||
|
|
||||||
|
* Fri Dec 18 1998 Bill Nottingham <notting@redhat.com> |
||||||
|
- build for 6.0 tree |
||||||
|
- add Provides |
||||||
|
|
||||||
|
* Sat Oct 10 1998 Cristian Gafton <gafton@redhat.com> |
||||||
|
- strip binaries |
||||||
|
- version 1.5.3 |
||||||
|
|
||||||
|
* Sat Jun 27 1998 Jeff Johnson <jbj@redhat.com> |
||||||
|
- updated to 1.5.2 |
||||||
|
|
||||||
|
* Thu Apr 30 1998 Cristian Gafton <gafton@redhat.com> |
||||||
|
- modified group to Applications/Networking |
||||||
|
|
||||||
|
* Wed Apr 22 1998 Cristian Gafton <gafton@redhat.com> |
||||||
|
- upgraded to 1.5.0 |
||||||
|
- they removed the man page from the distribution (Duh!) and I added it back |
||||||
|
from 1.4.5. Hey, removing the man page is DUMB! |
||||||
|
|
||||||
|
* Fri Nov 14 1997 Cristian Gafton <gafton@redhat.com> |
||||||
|
- first build against glibc |
Loading…
Reference in new issue