]> git.pld-linux.org Git - packages/wget.git/commitdiff
- up to 1.13 auto/th/wget-1_13-1
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Sun, 14 Aug 2011 06:06:40 +0000 (06:06 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    wget-subjectAltNames.patch -> 1.2
    wget-wgetrc_path.patch -> 1.4
    wget.spec -> 1.151

wget-subjectAltNames.patch [deleted file]
wget-wgetrc_path.patch
wget.spec

diff --git a/wget-subjectAltNames.patch b/wget-subjectAltNames.patch
deleted file mode 100644 (file)
index f8fb55d..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-http://savannah.gnu.org/bugs/?23934
-
-http://savannah.gnu.org/file/wget-1.12-subjectAltNames.diff?file_id=18828
-
-diff --git a/src/openssl.c b/src/openssl.c
-index b55ca8b..b036a3b 100644
---- a/src/openssl.c
-+++ b/src/openssl.c
-@@ -39,7 +39,7 @@ as that of the covered work.  */
- #include <string.h>
- #include <openssl/ssl.h>
--#include <openssl/x509.h>
-+#include <openssl/x509v3.h>
- #include <openssl/err.h>
- #include <openssl/rand.h>
-@@ -486,9 +486,11 @@ bool
- ssl_check_certificate (int fd, const char *host)
- {
-   X509 *cert;
-+  GENERAL_NAMES *subjectAltNames;
-   char common_name[256];
-   long vresult;
-   bool success = true;
-+  bool alt_name_checked = false;
-   /* If the user has specified --no-check-cert, we still want to warn
-      him about problems with the server's certificate.  */
-@@ -558,10 +560,6 @@ ssl_check_certificate (int fd, const char *host)
-   /* Check that HOST matches the common name in the certificate.
-      #### The following remains to be done:
--     - It should use dNSName/ipAddress subjectAltName extensions if
--       available; according to rfc2818: "If a subjectAltName extension
--       of type dNSName is present, that MUST be used as the identity."
--
-      - When matching against common names, it should loop over all
-        common names and choose the most specific one, i.e. the last
-        one, not the first one, which the current code picks.
-@@ -569,51 +567,123 @@ ssl_check_certificate (int fd, const char *host)
-      - Ensure that ASN1 strings from the certificate are encoded as
-        UTF-8 which can be meaningfully compared to HOST.  */
--  X509_NAME *xname = X509_get_subject_name(cert);
--  common_name[0] = '\0';
--  X509_NAME_get_text_by_NID (xname, NID_commonName, common_name,
--                             sizeof (common_name));
-+  subjectAltNames = X509_get_ext_d2i (cert, NID_subject_alt_name, NULL, NULL);
--  if (!pattern_match (common_name, host))
-+  if (subjectAltNames)
-     {
--      logprintf (LOG_NOTQUIET, _("\
--%s: certificate common name %s doesn't match requested host name %s.\n"),
--                 severity, quote_n (0, common_name), quote_n (1, host));
--      success = false;
-+      /* Test subject alternative names */
-+
-+      /* Do we want to check for dNSNAmes or ipAddresses (see RFC 2818)?
-+       * Signal it by host_in_octet_string. */
-+      ASN1_OCTET_STRING *host_in_octet_string = NULL;
-+      host_in_octet_string = a2i_IPADDRESS (host);
-+
-+      int numaltnames = sk_GENERAL_NAME_num (subjectAltNames);
-+      int i;
-+      for (i=0; i < numaltnames; i++)
-+        {
-+          const GENERAL_NAME *name =
-+            sk_GENERAL_NAME_value (subjectAltNames, i);
-+          if (name)
-+            {
-+              if (host_in_octet_string)
-+                {
-+                  if (name->type == GEN_IPADD)
-+                    {
-+                      /* Check for ipAddress */
-+                      /* TODO: Should we convert between IPv4-mapped IPv6
-+                       * addresses and IPv4 addresses? */
-+                      alt_name_checked = true;
-+                      if (!ASN1_STRING_cmp (host_in_octet_string,
-+                            name->d.iPAddress))
-+                        break;
-+                    }
-+                }
-+              else if (name->type == GEN_DNS)
-+                {
-+                  /* Check for dNSName */
-+                  alt_name_checked = true;
-+                  /* dNSName should be IA5String (i.e. ASCII), however who
-+                   * does trust CA? Convert it into UTF-8 for sure. */
-+                  unsigned char *name_in_utf8 = NULL;
-+                  if (0 <= ASN1_STRING_to_UTF8 (&name_in_utf8, name->d.dNSName))
-+                    {
-+                      /* Compare and check for NULL attack in ASN1_STRING */
-+                      if (pattern_match ((char *)name_in_utf8, host) &&
-+                            (strlen ((char *)name_in_utf8) ==
-+                                ASN1_STRING_length (name->d.dNSName)))
-+                        {
-+                          OPENSSL_free (name_in_utf8);
-+                          break;
-+                        }
-+                      OPENSSL_free (name_in_utf8);
-+                    }
-+                }
-+            }
-+        }
-+      sk_GENERAL_NAME_free (subjectAltNames);
-+      if (host_in_octet_string)
-+        ASN1_OCTET_STRING_free(host_in_octet_string);
-+
-+      if (alt_name_checked == true && i >= numaltnames)
-+        {
-+          logprintf (LOG_NOTQUIET,
-+              _("%s: no certificate subject alternative name matches\n"
-+                "\trequested host name %s.\n"),
-+                     severity, quote_n (1, host));
-+          success = false;
-+        }
-     }
--  else
-+  
-+  if (alt_name_checked == false)
-     {
--      /* We now determine the length of the ASN1 string. If it differs from
--       * common_name's length, then there is a \0 before the string terminates.
--       * This can be an instance of a null-prefix attack.
--       *
--       * https://www.blackhat.com/html/bh-usa-09/bh-usa-09-archives.html#Marlinspike
--       * */
--
--      int i = -1, j;
--      X509_NAME_ENTRY *xentry;
--      ASN1_STRING *sdata;
--
--      if (xname) {
--        for (;;)
--          {
--            j = X509_NAME_get_index_by_NID (xname, NID_commonName, i);
--            if (j == -1) break;
--            i = j;
--          }
--      }
-+      /* Test commomName */
-+      X509_NAME *xname = X509_get_subject_name(cert);
-+      common_name[0] = '\0';
-+      X509_NAME_get_text_by_NID (xname, NID_commonName, common_name,
-+                                 sizeof (common_name));
--      xentry = X509_NAME_get_entry(xname,i);
--      sdata = X509_NAME_ENTRY_get_data(xentry);
--      if (strlen (common_name) != ASN1_STRING_length (sdata))
-+      if (!pattern_match (common_name, host))
-         {
-           logprintf (LOG_NOTQUIET, _("\
--%s: certificate common name is invalid (contains a NUL character).\n\
--This may be an indication that the host is not who it claims to be\n\
--(that is, it is not the real %s).\n"),
--                     severity, quote (host));
-+    %s: certificate common name %s doesn't match requested host name %s.\n"),
-+                     severity, quote_n (0, common_name), quote_n (1, host));
-           success = false;
-         }
-+      else
-+        {
-+          /* We now determine the length of the ASN1 string. If it differs from
-+           * common_name's length, then there is a \0 before the string terminates.
-+           * This can be an instance of a null-prefix attack.
-+           *
-+           * https://www.blackhat.com/html/bh-usa-09/bh-usa-09-archives.html#Marlinspike
-+           * */
-+
-+          int i = -1, j;
-+          X509_NAME_ENTRY *xentry;
-+          ASN1_STRING *sdata;
-+
-+          if (xname) {
-+            for (;;)
-+              {
-+                j = X509_NAME_get_index_by_NID (xname, NID_commonName, i);
-+                if (j == -1) break;
-+                i = j;
-+              }
-+          }
-+
-+          xentry = X509_NAME_get_entry(xname,i);
-+          sdata = X509_NAME_ENTRY_get_data(xentry);
-+          if (strlen (common_name) != ASN1_STRING_length (sdata))
-+            {
-+              logprintf (LOG_NOTQUIET, _("\
-+    %s: certificate common name is invalid (contains a NUL character).\n\
-+    This may be an indication that the host is not who it claims to be\n\
-+    (that is, it is not the real %s).\n"),
-+                         severity, quote (host));
-+              success = false;
-+            }
-+        }
-     }
-@@ -631,3 +701,7 @@ To connect to %s insecurely, use `--no-check-certificate'.\n"),
-   /* Allow --no-check-cert to disable certificate checking. */
-   return opt.check_cert ? success : true;
- }
-+
-+/*
-+ * vim: tabstop=2 shiftwidth=2 softtabstop=2
-+ */
index a325cb1f9417e98a61a7c589a2179f3400642e1b..d4a36997b572deb87c2895105f5c4c1c4b6644ab 100644 (file)
@@ -46,12 +46,14 @@ diff -Nur wget-1.10/doc.orig/sample.wgetrc wget-1.10/doc/sample.wgetrc
 diff -Nur wget-1.10/doc.orig/wget.texi wget-1.10/doc/wget.texi
 --- wget-1.10/doc.orig/wget.texi       2005-06-22 09:42:36.000000000 +0200
 +++ wget-1.10/doc/wget.texi    2005-06-22 09:44:02.000000000 +0200
-@@ -204,12 +204,12 @@
+@@ -190,14 +190,14 @@
  Most of the features are fully configurable, either through command line
  options, or via the initialization file @file{.wgetrc} (@pxref{Startup
  File}).  Wget allows you to define @dfn{global} startup files
--(@file{/usr/local/etc/wgetrc} by default) for site settings.
-+(@file{/etc/wgetrc} by default) for site settings.
+-(@file{/usr/local/etc/wgetrc} by default) for site settings. You can also
++(@file{/etc/wgetrc} by default) for site settings. You can also
+ specify the location of a startup file with the --config option.
+  
  
  @ignore
  @c man begin FILES
index 8945c67361f38e90b596b18fe42f5321498b25f6..68c43654fb7361abed1a7125087a4a83ea9d2773 100644 (file)
--- a/wget.spec
+++ b/wget.spec
@@ -12,20 +12,18 @@ Summary(ru.UTF-8):  Утилита для получения файлов по п
 Summary(uk.UTF-8):     Утиліта для отримання файлів по протоколам HTTP та FTP
 Summary(zh_CN.UTF-8):  [通讯]功能强大的下载程序,支持断点续传
 Name:          wget
-Version:       1.12
-Release:       3
+Version:       1.13
+Release:       1
 License:       GPL v3+ with OpenSSL exception
 Group:         Networking/Utilities
-Source0:       http://ftp.gnu.org/gnu/wget/%{name}-%{version}.tar.bz2
-# Source0-md5: 308a5476fc096a8a525d07279a6f6aa3
+Source0:       http://ftp.gnu.org/gnu/wget/%{name}-%{version}.tar.xz
+# Source0-md5: 48c5384123156e7b7501d2f5b5c7189a
 Source1:       http://www.mif.pg.gda.pl/homepages/ankry/man-PLD/%{name}-non-english-man-pages.tar.bz2
 # Source1-md5: d8b2b56ec7461606c22edbafaf8a418f
 Patch0:                %{name}-info.patch
-# http://savannah.gnu.org/bugs/?23934
-Patch1:                %{name}-subjectAltNames.patch
-Patch2:                %{name}-wgetrc_path.patch
-Patch3:                %{name}-home_etc.patch
-Patch5:                %{name}-ssl-certs.patch
+Patch1:                %{name}-wgetrc_path.patch
+Patch2:                %{name}-home_etc.patch
+Patch3:                %{name}-ssl-certs.patch
 URL:           http://www.gnu.org/software/wget/
 BuildRequires: autoconf >= 2.61
 BuildRequires: automake >= 1:1.9
@@ -115,7 +113,6 @@ Proxy серверів, настроюваність.
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
-%patch5 -p1
 %{__rm} doc/wget.info doc/sample.wgetrc.munged_for_texi_inclusion
 
 %build
This page took 0.138482 seconds and 4 git commands to generate.