summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--php-pecl-uploadprogress.spec48
-rw-r--r--uploadprogress-arginfo.patch40
-rw-r--r--uploadprogress-segfault.patch66
3 files changed, 130 insertions, 24 deletions
diff --git a/php-pecl-uploadprogress.spec b/php-pecl-uploadprogress.spec
index 4d8d14b..acf2e8e 100644
--- a/php-pecl-uploadprogress.spec
+++ b/php-pecl-uploadprogress.spec
@@ -1,6 +1,6 @@
# remirepo spec file for php-pecl-uploadprogress
#
-# Copyright (c) 2013-2020 Remi Collet
+# Copyright (c) 2013-2021 Remi Collet
# License: CC-BY-SA
# http://creativecommons.org/licenses/by-sa/4.0/
#
@@ -22,13 +22,21 @@
Summary: An extension to track progress of a file upload
Name: %{?sub_prefix}php-pecl-%{pecl_name}
Version: 1.1.3
-Release: 1%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
+Release: 2%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
License: PHP
Group: Development/Languages
URL: https://pecl.php.net/package/%{pecl_name}
Source0: https://pecl.php.net/get/%{pecl_name}-%{version}.tgz
+# Fix segmentation fault in uploadprogress
+# https://github.com/php/pecl-php-uploadprogress/pull/8
+Patch0: %{pecl_name}-arginfo.patch
+# Add arginfo to functions
+# https://github.com/php/pecl-php-uploadprogress/pull/9
+Patch1: %{pecl_name}-segfault.patch
+
BuildRequires: %{?dtsprefix}gcc
+BuildRequires: make
BuildRequires: %{?scl_prefix}php-devel
BuildRequires: %{?scl_prefix}php-pear
@@ -43,42 +51,26 @@ Provides: %{?scl_prefix}php-pecl(%{pecl_name})%{?_isa} = %{version}
Provides: %{?scl_prefix}php-pecl-%{pecl_name} = %{version}-%{release}
Provides: %{?scl_prefix}php-pecl-%{pecl_name}%{?_isa} = %{version}-%{release}
-%if "%{?vendor}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel}
+%if "%{?packager}" == "Remi Collet" && 0%{!?scl:1} && 0%{?rhel}
# Other third party repo stuff
%if "%{php_version}" > "5.5"
Obsoletes: php55u-pecl-%{pecl_name} <= %{version}
-Obsoletes: php55w-pecl-%{pecl_name} <= %{version}
%endif
%if "%{php_version}" > "5.6"
Obsoletes: php56u-pecl-%{pecl_name} <= %{version}
-Obsoletes: php56w-pecl-%{pecl_name} <= %{version}
-%endif
-%if "%{php_version}" > "7.0"
-Obsoletes: php70u-pecl-%{pecl_name} <= %{version}
-Obsoletes: php70w-pecl-%{pecl_name} <= %{version}
-%endif
-%if "%{php_version}" > "7.1"
-Obsoletes: php71u-pecl-%{pecl_name} <= %{version}
-Obsoletes: php71w-pecl-%{pecl_name} <= %{version}
-%endif
-%if "%{php_version}" > "7.2"
-Obsoletes: php72u-pecl-%{pecl_name} <= %{version}
-Obsoletes: php72w-pecl-%{pecl_name} <= %{version}
%endif
%if "%{php_version}" > "7.3"
Obsoletes: php73-pecl-%{pecl_name} <= %{version}
-Obsoletes: php73w-pecl-%{pecl_name} <= %{version}
%endif
%if "%{php_version}" > "7.4"
Obsoletes: php74-pecl-%{pecl_name} <= %{version}
-Obsoletes: php74w-pecl-%{pecl_name} <= %{version}
%endif
+%if "%{php_version}" > "8.0"
+Obsoletes: php80-pecl-%{pecl_name} <= %{version}
+%endif
+%if "%{php_version}" > "8.1"
+Obsoletes: php81-pecl-%{pecl_name} <= %{version}
%endif
-
-%if 0%{?fedora} < 20 && 0%{?rhel} < 7
-# Filter shared private
-%{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$}
-%{?filter_setup}
%endif
@@ -100,6 +92,8 @@ mv %{pecl_name}-%{version} NTS
%{?_licensedir:sed -e '/LICENSE/s/role="doc"/role="src"/' -i package.xml}
cd NTS
+%patch0 -p1 -b .pr8
+%patch1 -p1 -b .pr9
# Sanity check, really often broken
extver=$(sed -n '/#define PHP_UPLOADPROGRESS_VERSION/{s/.* "//;s/".*$//;p}' php_uploadprogress.h)
@@ -221,6 +215,12 @@ cd ../ZTS
%changelog
+* Thu Jul 22 2021 Remi Collet <remi@remirepo.net> - 1.1.3-2
+- Fix segmentation fault in uploadprogress, patch from
+ https://github.com/php/pecl-php-uploadprogress/pull/8
+- Add arginfo to functions, patch from
+ https://github.com/php/pecl-php-uploadprogress/pull/9
+
* Wed Jan 29 2020 Remi Collet <remi@remirepo.net> - 1.1.3-1
- update to 1.1.3
diff --git a/uploadprogress-arginfo.patch b/uploadprogress-arginfo.patch
new file mode 100644
index 0000000..81cf86c
--- /dev/null
+++ b/uploadprogress-arginfo.patch
@@ -0,0 +1,40 @@
+From f14654d30953e4b699bf25a244923bbadc55f4f9 Mon Sep 17 00:00:00 2001
+From: Andy Postnikov <apostnikov@gmail.com>
+Date: Fri, 21 Aug 2020 07:06:27 +0300
+Subject: [PATCH 1/3] Add arginfo to functions
+
+---
+ uploadprogress.c | 16 ++++++++++++++--
+ 1 file changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/uploadprogress.c b/uploadprogress.c
+index 6f72a92..52b313d 100644
+--- a/uploadprogress.c
++++ b/uploadprogress.c
+@@ -29,10 +29,22 @@
+ #define TMPDIR "/tmp"
+ #endif
+
++/* {{{ argument information */
++ZEND_BEGIN_ARG_INFO_EX(arginfo_uploadprogress_get_info, 0, 0, 1)
++ ZEND_ARG_TYPE_INFO(0, identifier, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_uploadprogress_get_contents, 0, 0, 2)
++ ZEND_ARG_TYPE_INFO(0, identifier, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, fieldname, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, maxlen, IS_LONG, 1)
++ZEND_END_ARG_INFO()
++/* }}} */
++
+ /* {{{ uploadprogress_functions[] */
+ zend_function_entry uploadprogress_functions[] = {
+- PHP_FE(uploadprogress_get_info, NULL)
+- PHP_FE(uploadprogress_get_contents, NULL)
++ PHP_FE(uploadprogress_get_info, arginfo_uploadprogress_get_info)
++ PHP_FE(uploadprogress_get_contents, arginfo_uploadprogress_get_contents)
+ { NULL, NULL, NULL }
+ };
+ /* }}} */
+
+
diff --git a/uploadprogress-segfault.patch b/uploadprogress-segfault.patch
new file mode 100644
index 0000000..6e15157
--- /dev/null
+++ b/uploadprogress-segfault.patch
@@ -0,0 +1,66 @@
+From b0e5f122b45ddbf7d7475b927e148d6dd5bf3c86 Mon Sep 17 00:00:00 2001
+From: "Christoph M. Becker" <cmbecker69@gmx.de>
+Date: Fri, 30 Apr 2021 17:46:07 +0200
+Subject: [PATCH] Fix #79584: Segmentation fault in uploadprogress 1.1.0 and up
+
+---
+ uploadprogress.c | 18 ++++++++----------
+ 1 file changed, 8 insertions(+), 10 deletions(-)
+
+diff --git a/uploadprogress.c b/uploadprogress.c
+index 6f72a92..ca3f17b 100644
+--- a/uploadprogress.c
++++ b/uploadprogress.c
+@@ -105,30 +105,23 @@ static int uploadprogress_php_rfc1867_file(unsigned int event, void *event_data
+ }
+
+ if (strcmp(e_data->name, "UPLOAD_IDENTIFIER") == 0) {
+- char **upload_id;
+ char *template = INI_STR("uploadprogress.file.filename_template");
+
+ if (strcmp(template, "") == 0) {
+ return FAILURE;
+ }
+
+- upload_id = emalloc(strlen(*e_data->value) + 1);
+- strcpy(*upload_id, *e_data->value);
+-
+- progress->upload_id = *upload_id;
++ progress->upload_id = emalloc(strlen(*e_data->value) + 1);
++ strcpy(progress->upload_id, *e_data->value);
+ progress->time_last = time(NULL);
+ progress->speed_average = 0;
+ progress->speed_last = 0;
+ progress->bytes_uploaded = read_bytes;
+ progress->files_uploaded = 0;
+ progress->est_sec = 0;
+- progress->identifier = uploadprogress_mk_filename(*upload_id, template);
++ progress->identifier = uploadprogress_mk_filename(progress->upload_id, template);
+ progress->identifier_tmp = emalloc(strlen( progress->identifier) + 4);
+ sprintf(progress->identifier_tmp, "%s.wr", progress->identifier);
+-
+- if (upload_id) {
+- efree(upload_id);
+- }
+ }
+ }
+
+@@ -198,6 +191,7 @@ static int uploadprogress_php_rfc1867_file(unsigned int event, void *event_data
+ }
+ } else if (event == MULTIPART_EVENT_END) {
+ VCWD_UNLINK(progress->identifier);
++ efree(progress->upload_id);
+ efree(progress->identifier);
+ efree(progress->identifier_tmp);
+ efree(progress);
+@@ -264,6 +258,10 @@ static int uploadprogress_php_rfc1867_file(unsigned int event, void *event_data
+ efree(progress->identifier);
+ }
+
++ if (progress->upload_id) {
++ efree(progress->upload_id);
++ }
++
+ if (progress->identifier_tmp) {
+ efree(progress->identifier_tmp);
+ }