Message ID | 20240515162627.1087686-1-fontaine.fabrice@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | [1/1] package/p11-kit: fix build with gcc 14 | expand |
On 15/05/2024 18:26, Fabrice Fontaine wrote: > Fix the following build failure with gcc 14: > > 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 [-Wincompatible-pointer-types] > 223 | attr_modulus.pValue = p11_asn1_read (asn, "modulus", &attr_modulus.ulValueLen); > | ^~~~~~~~~~~~~~~~~~~~~~~~ > | | > | long unsigned int * > > Fixes: > - http://autobuild.buildroot.org/results/41508a057568ad715e9e00a67adfc3867445d6c1 > > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> Applied to master, thanks. Regards, Arnout > --- > ...teger-truncation-on-32-bit-platforms.patch | 109 ++++++++++++++++++ > 1 file changed, 109 insertions(+) > create mode 100644 package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch > > diff --git a/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch b/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch > new file mode 100644 > index 0000000000..03f54b4408 > --- /dev/null > +++ b/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch > @@ -0,0 +1,109 @@ > +From d49c92c8420db6ee4c88515bdb014f68f4d471d9 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> > + > +Upstream: https://github.com/p11-glue/p11-kit/commit/d49c92c8420db6ee4c88515bdb014f68f4d471d9 > +Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> > +--- > + p11-kit/import-object.c | 30 +++++++++++++++++++++++++++--- > + 1 file changed, 27 insertions(+), 3 deletions(-) > + > +diff --git a/p11-kit/import-object.c b/p11-kit/import-object.c > +index feee0765..fb47b964 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 = 0; > + > + 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); > ++ attr_exponent.pValue = p11_asn1_read (asn, "publicExponent", &len); > + if (attr_exponent.pValue == NULL) { > + 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 = 0; > + > +- 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.
diff --git a/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch b/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch new file mode 100644 index 0000000000..03f54b4408 --- /dev/null +++ b/package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch @@ -0,0 +1,109 @@ +From d49c92c8420db6ee4c88515bdb014f68f4d471d9 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> + +Upstream: https://github.com/p11-glue/p11-kit/commit/d49c92c8420db6ee4c88515bdb014f68f4d471d9 +Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> +--- + p11-kit/import-object.c | 30 +++++++++++++++++++++++++++--- + 1 file changed, 27 insertions(+), 3 deletions(-) + +diff --git a/p11-kit/import-object.c b/p11-kit/import-object.c +index feee0765..fb47b964 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 = 0; + + 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); ++ attr_exponent.pValue = p11_asn1_read (asn, "publicExponent", &len); + if (attr_exponent.pValue == NULL) { + 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 = 0; + +- 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.
Fix the following build failure with gcc 14: 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 [-Wincompatible-pointer-types] 223 | attr_modulus.pValue = p11_asn1_read (asn, "modulus", &attr_modulus.ulValueLen); | ^~~~~~~~~~~~~~~~~~~~~~~~ | | | long unsigned int * Fixes: - http://autobuild.buildroot.org/results/41508a057568ad715e9e00a67adfc3867445d6c1 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> --- ...teger-truncation-on-32-bit-platforms.patch | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 package/p11-kit/0001-import-object-Avoid-integer-truncation-on-32-bit-platforms.patch