File drop-support-for-shorthand-URLs.patch of Package wget.39000

Index: wget-1.14/doc/wget.texi
===================================================================
--- wget-1.14.orig/doc/wget.texi
+++ wget-1.14/doc/wget.texi
@@ -307,8 +307,8 @@ for text files.  Here is an example:
 ftp://host/directory/file;type=a
 @end example
 
-Two alternative variants of @sc{url} specification are also supported,
-because of historical (hysterical?) reasons and their widespreaded use.
+The two alternative variants of @sc{url} specifications are no longer
+supported because of security considerations:
 
 @sc{ftp}-only syntax (supported by @code{NcFTP}):
 @example
@@ -320,12 +320,8 @@ host:/dir/file
 host[:port]/dir/file
 @end example
 
-These two alternative forms are deprecated, and may cease being
-supported in the future.
-
-If you do not understand the difference between these notations, or do
-not know which one to use, just use the plain ordinary format you use
-with your favorite browser, like @code{Lynx} or @code{Netscape}.
+These two alternative forms have been deprecated long time ago,
+and support is removed with version 1.22.0.
 
 @c man begin OPTIONS
 
Index: wget-1.14/src/main.c
===================================================================
--- wget-1.14.orig/src/main.c
+++ wget-1.14/src/main.c
@@ -1412,7 +1412,7 @@ for details.\n\n"));
     }
   for (i = 0; i < nurl; i++, optind++)
     {
-      char *rewritten = rewrite_shorthand_url (argv[optind]);
+      char *rewritten = maybe_prepend_scheme (argv[optind]);
       if (rewritten)
         url[i] = rewritten;
       else
Index: wget-1.14/src/retr.c
===================================================================
--- wget-1.14.orig/src/retr.c
+++ wget-1.14/src/retr.c
@@ -1273,7 +1273,7 @@ getproxy (struct url *u)
 
   /* Handle shorthands.  `rewritten_storage' is a kludge to allow
      getproxy() to return static storage. */
-  rewritten_url = rewrite_shorthand_url (proxy);
+  rewritten_url = maybe_prepend_scheme (proxy);
   if (rewritten_url)
     {
       strncpy (rewritten_storage, rewritten_url, sizeof (rewritten_storage));
Index: wget-1.14/src/url.c
===================================================================
--- wget-1.14.orig/src/url.c
+++ wget-1.14/src/url.c
@@ -558,60 +558,38 @@ parse_credentials (const char *beg, cons
   return true;
 }
 
-/* Used by main.c: detect URLs written using the "shorthand" URL forms
-   originally popularized by Netscape and NcFTP.  HTTP shorthands look
-   like this:
-
-   www.foo.com[:port]/dir/file   -> http://www.foo.com[:port]/dir/file
-   www.foo.com[:port]            -> http://www.foo.com[:port]
-
-   FTP shorthands look like this:
-
-   foo.bar.com:dir/file          -> ftp://foo.bar.com/dir/file
-   foo.bar.com:/absdir/file      -> ftp://foo.bar.com//absdir/file
+static bool is_valid_port(const char *p)
+{
+  unsigned port = (unsigned) atoi (p);
+  if (port == 0 || port > 65535)
+    return false;
 
-   If the URL needs not or cannot be rewritten, return NULL.  */
+  int digits = strspn (p, "0123456789");
+  return digits && (p[digits] == '/' || p[digits] == '\0');
+}
 
+/* Prepend "http://" to url if scheme is missing, otherwise return NULL. */
 char *
-rewrite_shorthand_url (const char *url)
+maybe_prepend_scheme (const char *url)
 {
-  const char *p;
-  char *ret;
-
   if (url_scheme (url) != SCHEME_INVALID)
     return NULL;
 
-  /* Look for a ':' or '/'.  The former signifies NcFTP syntax, the
-     latter Netscape.  */
-  p = strpbrk (url, ":/");
+  const char *p = strchr (url, ':');
   if (p == url)
     return NULL;
 
   /* If we're looking at "://", it means the URL uses a scheme we
      don't support, which may include "https" when compiled without
-     SSL support.  Don't bogusly rewrite such URLs.  */
+     SSL support.  Don't bogusly prepend "http://" to such URLs.  */
   if (p && p[0] == ':' && p[1] == '/' && p[2] == '/')
     return NULL;
 
-  if (p && *p == ':')
-    {
-      /* Colon indicates ftp, as in foo.bar.com:path.  Check for
-         special case of http port number ("localhost:10000").  */
-      int digits = strspn (p + 1, "0123456789");
-      if (digits && (p[1 + digits] == '/' || p[1 + digits] == '\0'))
-        goto http;
-
-      /* Turn "foo.bar.com:path" to "ftp://foo.bar.com/path". */
-      ret = aprintf ("ftp://%s", url);
-      ret[6 + (p - url)] = '/';
-    }
-  else
-    {
-    http:
-      /* Just prepend "http://" to URL. */
-      ret = aprintf ("http://%s", url);
-    }
-  return ret;
+  if (p && p[0] == ':' && !is_valid_port (p + 1))
+    return NULL;
+
+  fprintf(stderr, "Prepended http:// to '%s'\n", url);
+  return aprintf ("http://%s", url);
 }
 
 static void split_path (const char *, char **, char **);
Index: wget-1.14/src/url.h
===================================================================
--- wget-1.14.orig/src/url.h
+++ wget-1.14/src/url.h
@@ -106,7 +106,7 @@ char *uri_merge (const char *, const cha
 
 int mkalldirs (const char *);
 
-char *rewrite_shorthand_url (const char *);
+char *maybe_prepend_scheme (const char *);
 bool schemes_are_similar_p (enum url_scheme a, enum url_scheme b);
 
 bool are_urls_equal (const char *u1, const char *u2);
openSUSE Build Service is sponsored by