summaryrefslogtreecommitdiff
path: root/app-crypt/p11-kit/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-12-02 11:00:10 +0000
committerV3n3RiX <venerix@koprulu.sector>2023-12-02 11:00:10 +0000
commit4c506c69909bdb43fda5e36c79b165e404d3b86b (patch)
treeb0f9d49fd462021c82f6ebbbbafb92e1a0eae3da /app-crypt/p11-kit/files
parent81f73a84efe20818880d8c52c55a3bd067115b06 (diff)
gentoo auto-resync : 02:12:2023 - 11:00:10
Diffstat (limited to 'app-crypt/p11-kit/files')
-rw-r--r--app-crypt/p11-kit/files/p11-kit-0.25.3-pointer.patch111
1 files changed, 111 insertions, 0 deletions
diff --git a/app-crypt/p11-kit/files/p11-kit-0.25.3-pointer.patch b/app-crypt/p11-kit/files/p11-kit-0.25.3-pointer.patch
new file mode 100644
index 000000000000..feac3e132fce
--- /dev/null
+++ b/app-crypt/p11-kit/files/p11-kit-0.25.3-pointer.patch
@@ -0,0 +1,111 @@
+https://bugs.gentoo.org/918982
+https://github.com/p11-glue/p11-kit/pull/609
+
+From 6f05ca107d588fcedaa4ef06542760cbbda8c878 Mon Sep 17 00:00:00 2001
+From: Daiki Ueno <ueno@gnu.org>
+Date: Sat, 2 Dec 2023 09:24:01 +0900
+Subject: [PATCH] import-object: Avoid integer truncation on 32-bit platforms
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The build fails when compiling for 32-bit platforms with
+-Werror=incompatible-pointer-types:
+
+ CFLAGS="-m32 -march=i686 -Werror=incompatible-pointer-types -Werror=implicit -Werror=int-conversion" setarch i686 -- meson setup _build
+ setarch i686 -- meson compile -C _build -v
+ ...
+
+ ../p11-kit/import-object.c: In function ‘add_attrs_pubkey_rsa’:
+ ../p11-kit/import-object.c:223:62: error: passing argument 3 of ‘p11_asn1_read’ from incompatible pointer type [-Werror=incompatible-pointer-types]
+ 223 | attr_modulus.pValue = p11_asn1_read (asn, "modulus", &attr_modulus.ulValueLen);
+ | ^~~~~~~~~~~~~~~~~~~~~~~~
+ | |
+ | long unsigned int *
+
+Reported by Sam James in:
+https://github.com/p11-glue/p11-kit/issues/608
+
+Signed-off-by: Daiki Ueno <ueno@gnu.org>
+---
+ p11-kit/import-object.c | 32 ++++++++++++++++++++++++++++----
+ 1 file changed, 28 insertions(+), 4 deletions(-)
+
+diff --git a/p11-kit/import-object.c b/p11-kit/import-object.c
+index feee0765..278ad932 100644
+--- a/p11-kit/import-object.c
++++ b/p11-kit/import-object.c
+@@ -55,6 +55,7 @@
+ #endif
+
+ #include <assert.h>
++#include <limits.h>
+ #include <stdbool.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -201,6 +202,7 @@ add_attrs_pubkey_rsa (CK_ATTRIBUTE *attrs,
+ CK_ATTRIBUTE attr_encrypt = { CKA_ENCRYPT, &tval, sizeof (tval) };
+ CK_ATTRIBUTE attr_modulus = { CKA_MODULUS, };
+ CK_ATTRIBUTE attr_exponent = { CKA_PUBLIC_EXPONENT, };
++ size_t len;
+
+ pubkey = p11_asn1_read (info, "subjectPublicKey", &pubkey_len);
+ if (pubkey == NULL) {
+@@ -220,17 +222,31 @@ add_attrs_pubkey_rsa (CK_ATTRIBUTE *attrs,
+ goto cleanup;
+ }
+
+- attr_modulus.pValue = p11_asn1_read (asn, "modulus", &attr_modulus.ulValueLen);
++ attr_modulus.pValue = p11_asn1_read (asn, "modulus", &len);
+ if (attr_modulus.pValue == NULL) {
+ p11_message (_("failed to obtain modulus"));
+ goto cleanup;
+ }
++#if ULONG_MAX < SIZE_MAX
++ if (len > ULONG_MAX) {
++ p11_message (_("failed to obtain modulus"));
++ goto cleanup;
++ }
++#endif
++ attr_modulus.ulValueLen = len;
+
+- attr_exponent.pValue = p11_asn1_read (asn, "publicExponent", &attr_exponent.ulValueLen);
+- if (attr_exponent.pValue == NULL) {
++ attr_exponent.pValue = p11_asn1_read (asn, "publicExponent", &len);
++ if (attr_exponent.pValue == NULL || len > ULONG_MAX) {
++ p11_message (_("failed to obtain exponent"));
++ goto cleanup;
++ }
++#if ULONG_MAX < SIZE_MAX
++ if (len > ULONG_MAX) {
+ p11_message (_("failed to obtain exponent"));
+ goto cleanup;
+ }
++#endif
++ attr_exponent.ulValueLen = len;
+
+ result = p11_attrs_build (attrs, &attr_key_type, &attr_encrypt, &attr_modulus, &attr_exponent, NULL);
+ if (result == NULL) {
+@@ -260,12 +276,20 @@ add_attrs_pubkey_ec (CK_ATTRIBUTE *attrs,
+ CK_ATTRIBUTE attr_key_type = { CKA_KEY_TYPE, &key_type, sizeof (key_type) };
+ CK_ATTRIBUTE attr_ec_params = { CKA_EC_PARAMS, };
+ CK_ATTRIBUTE attr_ec_point = { CKA_EC_POINT, };
++ size_t len;
+
+- attr_ec_params.pValue = p11_asn1_read (info, "algorithm.parameters", &attr_ec_params.ulValueLen);
++ attr_ec_params.pValue = p11_asn1_read (info, "algorithm.parameters", &len);
+ if (attr_ec_params.pValue == NULL) {
+ p11_message (_("failed to obtain EC parameters"));
+ goto cleanup;
+ }
++#if ULONG_MAX < SIZE_MAX
++ if (len > ULONG_MAX) {
++ p11_message (_("failed to obtain EC parameters"));
++ goto cleanup;
++ }
++#endif
++ attr_ec_params.ulValueLen = len;
+
+ /* subjectPublicKey is read as BIT STRING value which contains
+ * EC point data. We need to DER encode this data as OCTET STRING.
+