summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--11.patch35
-rw-r--r--13.patch22
-rw-r--r--php-pecl-rnp.spec52
3 files changed, 77 insertions, 32 deletions
diff --git a/11.patch b/11.patch
new file mode 100644
index 0000000..d5a4e79
--- /dev/null
+++ b/11.patch
@@ -0,0 +1,35 @@
+From f32b3b4c0a77096d256b4635b7183fb6dc53461b Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Thu, 31 Jul 2025 10:09:23 +0200
+Subject: [PATCH] check input length for librnp 0.18
+
+---
+ rnp.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/rnp.c b/rnp.c
+index 0a41e03..632925b 100644
+--- a/rnp.c
++++ b/rnp.c
+@@ -330,6 +330,10 @@ PHP_FUNCTION(rnp_dump_packets)
+ Z_PARAM_LONG(flags)
+ ZEND_PARSE_PARAMETERS_END();
+
++ if (!ZSTR_LEN(input)) {
++ RETURN_FALSE;
++ }
++
+ ret = rnp_input_from_memory(&mem_input, (uint8_t *)ZSTR_VAL(input), ZSTR_LEN(input), false);
+
+ if (ret != RNP_SUCCESS) {
+@@ -1938,6 +1942,10 @@ PHP_FUNCTION(rnp_import_keys)
+ Z_PARAM_LONG(flags)
+ ZEND_PARSE_PARAMETERS_END();
+
++ if (!ZSTR_LEN(input)) {
++ RETURN_FALSE;
++ }
++
+ pffi = Z_FFI_P(zffi);
+
+ ret = rnp_input_from_memory(&mem_input, (uint8_t *)ZSTR_VAL(input), ZSTR_LEN(input), false);
diff --git a/13.patch b/13.patch
new file mode 100644
index 0000000..6f94de7
--- /dev/null
+++ b/13.patch
@@ -0,0 +1,22 @@
+From 570e2f865370a74cbffa95d2bbe1a440b60413fe Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Thu, 31 Jul 2025 10:24:18 +0200
+Subject: [PATCH] Fix #12 segfault in php_rnp_password_callback
+
+---
+ rnp.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/rnp.c b/rnp.c
+index 0a41e03..28c4ccc 100644
+--- a/rnp.c
++++ b/rnp.c
+@@ -592,7 +592,7 @@ static bool php_rnp_password_callback(rnp_ffi_t ffi,
+ }
+
+ ZVAL_NULL(&retval);
+- ZVAL_STRINGL(&passwordval, buf, buf_len);
++ ZVAL_EMPTY_STRING(&passwordval);
+
+ if (key) {
+ ret = rnp_key_get_fprint(key, &key_fp);
diff --git a/php-pecl-rnp.spec b/php-pecl-rnp.spec
index fce6fee..b85bf72 100644
--- a/php-pecl-rnp.spec
+++ b/php-pecl-rnp.spec
@@ -1,18 +1,13 @@
# remirepo spec file for php-pecl-rnp
#
-# Copyright (c) 2022-2023 Remi Collet
-# License: CC-BY-SA-4.0
-# http://creativecommons.org/licenses/by-sa/4.0/
+# SPDX-FileCopyrightText: Copyright 2022-2025 Remi Collet
+# SPDX-License-Identifier: CECILL-2.1
+# http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
#
# Please, preserve the changelog entries
#
-# we don't want -z defs linker flag
-%undefine _strict_symbol_defs_build
-
-%if 0%{?scl:1}
-%scl_package php-pecl-rnp
-%endif
+%{?scl:%scl_package php-pecl-rnp}
%bcond_without tests
%global with_zts 0%{!?_without_zts:%{?__ztsphp:1}}
@@ -27,12 +22,15 @@
Summary: wrapper around the RNP library
Name: %{?scl_prefix}php-pecl-%{pecl_name}
Version: %{upstream_version}%{?upstream_prever:~%{upstream_prever}}
-Release: 3%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
+Release: 4%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
License: BSD-2-Clause
URL: https://pecl.php.net/package/%{pecl_name}
Source0: https://pecl.php.net/get/%{pecl_name}-%{upstream_version}%{?upstream_prever}.tgz
+Patch0: 11.patch
+Patch1: 13.patch
+
BuildRequires: make
BuildRequires: %{?dtsprefix}gcc
BuildRequires: %{?scl_prefix}php-devel >= 8.0
@@ -58,10 +56,13 @@ Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSIO
%setup -qc
# Don't install/register tests
sed -e 's/role="test"/role="src"/' \
- %{?_licensedir:-e '/LICENSE/s/role="doc"/role="src"/' } \
+ -e '/LICENSE/s/role="doc"/role="src"/' \
-i package.xml
pushd %{sources}
+%patch -P0 -p1
+%patch -P1 -p1
+
# Check version as upstream often forget to update this
extver=$(sed -n '/define PHP_RNP_VERSION/{s/.* "//;s/".*$//;p}' php_rnp.h)
if test "x${extver}" != "x%{upstream_version}%{?upstream_prever}%{?gh_date:-dev}"; then
@@ -149,28 +150,8 @@ TEST_PHP_ARGS="-n -d extension=%{buildroot}%{php_extdir}/%{pecl_name}.so" \
%endif
-%if 0%{?fedora} < 24 && 0%{?rhel} < 8
-# when pear installed alone, after us
-%triggerin -- %{?scl_prefix}php-pear
-if [ -x %{__pecl} ] ; then
- %{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || :
-fi
-
-# posttrans as pear can be installed after us
-%posttrans
-if [ -x %{__pecl} ] ; then
- %{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || :
-fi
-
-%postun
-if [ $1 -eq 0 -a -x %{__pecl} ] ; then
- %{pecl_uninstall} %{pecl_name} >/dev/null || :
-fi
-%endif
-
-
%files
-%{?_licensedir:%license %{sources}/LICENSE}
+%license %{sources}/LICENSE
%doc %{pecl_docdir}/%{pecl_name}
%{pecl_xmldir}/%{name}.xml
@@ -184,6 +165,13 @@ fi
%changelog
+* Thu Jul 31 2025 Remi Collet <remi@remirepo.net> - 0.2.0-4
+- fix behavior change with librnp 0.18 using patch from
+ https://github.com/rnpgp/php-rnp/pull/11
+- fix segfault in php_rnp_password_callback using patch from
+ https://github.com/rnpgp/php-rnp/pull/13
+- re-license spec file to CECILL-2.1
+
* Wed Aug 30 2023 Remi Collet <remi@remirepo.net> - 0.2.0-3
- rebuild for PHP 8.3.0RC1