summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Weinelt <mweinelt@users.noreply.github.com>2021-11-28 15:33:14 +0100
committerGitHub <noreply@github.com>2021-11-28 15:33:14 +0100
commita284564b7f75ac4db73607db02076e8da9d42c9d (patch)
treee000da54221ba4b480732b953955113dfa4805da
parentMerge pull request #139965 from risicle/ris-wolfssl-CVE-2021-38597-r21.05 (diff)
parentlibressl_3_2: add patch for CVE-2021-41581 (diff)
downloadnixpkgs-a284564b7f75ac4db73607db02076e8da9d42c9d.tar.gz
Merge pull request #142029 from risicle/ris-libressl-CVE-2021-41581-r21.05
-rw-r--r--pkgs/development/libraries/libressl/CVE-2021-41581.patch53
-rw-r--r--pkgs/development/libraries/libressl/default.nix3
2 files changed, 56 insertions, 0 deletions
diff --git a/pkgs/development/libraries/libressl/CVE-2021-41581.patch b/pkgs/development/libraries/libressl/CVE-2021-41581.patch
new file mode 100644
index 000000000000..244792567192
--- /dev/null
+++ b/pkgs/development/libraries/libressl/CVE-2021-41581.patch
@@ -0,0 +1,53 @@
+Based on upstream https://github.com/openbsd/src/commit/62ceddea5b1d64a1a362bbb7071d9e15adcde6b1
+with paths switched to apply to libressl-portable and CVS header
+hunk removed.
+
+--- a/crypto/x509/x509_constraints.c
++++ b/crypto/x509/x509_constraints.c
+@@ -339,16 +339,16 @@
+ if (c == '.')
+ goto bad;
+ }
+- if (wi > DOMAIN_PART_MAX_LEN)
+- goto bad;
+ if (accept) {
++ if (wi >= DOMAIN_PART_MAX_LEN)
++ goto bad;
+ working[wi++] = c;
+ accept = 0;
+ continue;
+ }
+ if (candidate_local != NULL) {
+ /* We are looking for the domain part */
+- if (wi > DOMAIN_PART_MAX_LEN)
++ if (wi >= DOMAIN_PART_MAX_LEN)
+ goto bad;
+ working[wi++] = c;
+ if (i == len - 1) {
+@@ -363,7 +363,7 @@
+ continue;
+ }
+ /* We are looking for the local part */
+- if (wi > LOCAL_PART_MAX_LEN)
++ if (wi >= LOCAL_PART_MAX_LEN)
+ break;
+
+ if (quoted) {
+@@ -383,6 +383,8 @@
+ */
+ if (c == 9)
+ goto bad;
++ if (wi >= LOCAL_PART_MAX_LEN)
++ goto bad;
+ working[wi++] = c;
+ continue; /* all's good inside our quoted string */
+ }
+@@ -412,6 +414,8 @@
+ }
+ if (!local_part_ok(c))
+ goto bad;
++ if (wi >= LOCAL_PART_MAX_LEN)
++ goto bad;
+ working[wi++] = c;
+ }
+ if (candidate_local == NULL || candidate_domain == NULL)
diff --git a/pkgs/development/libraries/libressl/default.nix b/pkgs/development/libraries/libressl/default.nix
index 3dffccf5f41d..e94128bbf423 100644
--- a/pkgs/development/libraries/libressl/default.nix
+++ b/pkgs/development/libraries/libressl/default.nix
@@ -71,5 +71,8 @@ in {
libressl_3_2 = generic {
version = "3.2.5";
sha256 = "1zkwrs3b19s1ybz4q9hrb7pqsbsi8vxcs44qanfy11fkc7ynb2kr";
+ patches = [
+ ./CVE-2021-41581.patch
+ ];
};
}