diff --git a/0020-backport-avoid-calling-functions-without-prototype.patch b/0020-backport-avoid-calling-functions-without-prototype.patch new file mode 100644 index 0000000000000000000000000000000000000000..96e0af1e5f41efd3c997557e6fb7a07118281484 --- /dev/null +++ b/0020-backport-avoid-calling-functions-without-prototype.patch @@ -0,0 +1,60 @@ +From 17c6c80de8edd5d08db5bc2f914af6473a6f0f46 Mon Sep 17 00:00:00 2001 +From: yuncang123 <1050706328@qq.com> +Date: Sun, 1 Sep 2024 16:08:07 +0800 +Subject: [PATCH] backport-pgp-avoid calling functions without prototype + +--- + src/libopensc/card-openpgp.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/libopensc/card-openpgp.c b/src/libopensc/card-openpgp.c +index fad32f0..e4e6cc4 100644 +--- a/src/libopensc/card-openpgp.c ++++ b/src/libopensc/card-openpgp.c +@@ -129,7 +129,7 @@ static pgp_ec_curves_t ec_curves_gnuk[] = { + + static int pgp_get_card_features(sc_card_t *card); + static int pgp_finish(sc_card_t *card); +-static void pgp_iterate_blobs(pgp_blob_t *, void (*func)()); ++static void pgp_free_blobs(pgp_blob_t *); + + static int pgp_get_blob(sc_card_t *card, pgp_blob_t *blob, + unsigned int id, pgp_blob_t **ret); +@@ -947,7 +947,7 @@ pgp_finish(sc_card_t *card) + + if (priv != NULL) { + /* delete fake file hierarchy */ +- pgp_iterate_blobs(priv->mf, pgp_free_blob); ++ pgp_free_blobs(priv->mf); + + /* delete private data */ + free(priv); +@@ -1147,10 +1147,10 @@ pgp_free_blob(pgp_blob_t *blob) + + + /** +- * Internal: iterate through the blob tree, calling a function for each blob. ++ * Internal: iterate through the blob tree, calling pgp_free_blob for each blob. + */ + static void +-pgp_iterate_blobs(pgp_blob_t *blob, void (*func)()) ++pgp_free_blobs(pgp_blob_t *blob) + { + if (blob) { + pgp_blob_t *child = blob->files; +@@ -1158,10 +1158,10 @@ pgp_iterate_blobs(pgp_blob_t *blob, void (*func)()) + while (child != NULL) { + pgp_blob_t *next = child->next; + +- pgp_iterate_blobs(child, func); ++ pgp_free_blobs(child); + child = next; + } +- func(blob); ++ pgp_free_blob(blob); + } + } + +-- +2.43.0 + diff --git a/opensc.spec b/opensc.spec index 61d4e4ee42d0c80e0e54717da685fc14262ec682..87ef2d04693c3290b69c040446b77cd6ba934f32 100644 --- a/opensc.spec +++ b/opensc.spec @@ -3,7 +3,7 @@ Name: opensc Version: 0.23.0 -Release: 5 +Release: 6 License: LGPL-2.1-or-later Summary: Smart card library and applications URL: https://github.com/OpenSC/OpenSC/wiki @@ -33,6 +33,7 @@ Patch17: 0018-opensc-CVE-2023-40661-12of12.patch # https://github.com/OpenSC/OpenSC/pull/2948 # https://github.com/OpenSC/OpenSC/pull/3016 Patch18: 0019-opensc-CVE-2023-5992.patch +Patch19: 0020-backport-avoid-calling-functions-without-prototype.patch BuildRequires: openssl-devel pcsc-lite-devel bash-completion docbook-style-xsl readline-devel BuildRequires: desktop-file-utils /usr/bin/xsltproc autoconf automake libtool gcc @@ -64,6 +65,9 @@ cp -p src/pkcs15init/README ./README.pkcs15init cp -p src/scconf/README.scconf . %build +%if "%toolchain" == "clang" + CFLAGS="$CFLAGS -Wno-error=unused-command-line-argument -Wno-error=unused-but-set-variable" +%endif autoreconf -fvi sed -i -e 's/opensc.conf/opensc-%{_arch}.conf/g' src/libopensc/Makefile.in sed -i -e 's|"/lib /usr/lib\b|"/%{_lib} %{_libdir}|' configure # lib64 rpaths @@ -163,6 +167,9 @@ make check %{_datadir}/opensc/ %changelog +* Sun Sep 1 2024 yuanchao <1050706328@qq.com> - 0.23.0-6 +- backport:avoid calling functions without prototype,and add compiler flags to support clang build + * Fri Jun 28 2024 dillon chen - 0.23.0-5 - fix CVE-2023-5992