From fdce55b4f3782c98e58af18bf3ef60912e77b6fc Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 4 Aug 2020 14:24:40 +0100 Subject: [PATCH] 1.20.0 --- ...fix-double-free-in-dvb_fe_open_fname.patch | 63 ----------- ...-leaks-double-free-dvb_fe_open_fname.patch | 104 ------------------ sources | 2 +- v4l-utils-1.18.0-gcc10.patch | 46 -------- v4l-utils.spec | 9 +- 5 files changed, 5 insertions(+), 219 deletions(-) delete mode 100644 libdvbv5-fix-double-free-in-dvb_fe_open_fname.patch delete mode 100644 libdvbv5-revert-leaks-double-free-dvb_fe_open_fname.patch delete mode 100644 v4l-utils-1.18.0-gcc10.patch diff --git a/libdvbv5-fix-double-free-in-dvb_fe_open_fname.patch b/libdvbv5-fix-double-free-in-dvb_fe_open_fname.patch deleted file mode 100644 index 60a8ffc..0000000 --- a/libdvbv5-fix-double-free-in-dvb_fe_open_fname.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 78057aaa784a922b4ac6af9f323b828f7a834581 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andr=C3=A9=20Roth?= -Date: Sat, 7 Jul 2018 07:20:55 -0400 -Subject: libdvbv5: fix double free in dvb_fe_open_fname -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Since parms and fname is allocated outside of the function, do not free it. -Use dvb_v5_free for freeing parms, it will free fname if required. - -Signed-off-by: André Roth -Signed-off-by: Mauro Carvalho Chehab - -diff --git a/lib/libdvbv5/dvb-fe.c b/lib/libdvbv5/dvb-fe.c -index 514a187..7f63476 100644 ---- a/lib/libdvbv5/dvb-fe.c -+++ b/lib/libdvbv5/dvb-fe.c -@@ -179,7 +179,7 @@ struct dvb_v5_fe_parms *dvb_fe_open_flags(int adapter, int frontend, - - ret = dvb_fe_open_fname(parms, dvb_dev->path, flags); - if (ret < 0) { -- free(parms); -+ dvb_v5_free(parms); - return NULL; - } - -@@ -202,9 +202,7 @@ int dvb_fe_open_fname(struct dvb_v5_fe_parms_priv *parms, char *fname, - - if (xioctl(fd, FE_GET_INFO, &parms->p.info) == -1) { - dvb_perror("FE_GET_INFO"); -- dvb_v5_free(parms); - close(fd); -- free(fname); - return -errno; - } - -@@ -291,7 +289,6 @@ int dvb_fe_open_fname(struct dvb_v5_fe_parms_priv *parms, char *fname, - } - if (!parms->p.num_systems) { - dvb_logerr(_("delivery system not detected")); -- dvb_v5_free(parms); - close(fd); - return -EINVAL; - } -@@ -302,7 +299,6 @@ int dvb_fe_open_fname(struct dvb_v5_fe_parms_priv *parms, char *fname, - dtv_prop.props = parms->dvb_prop; - if (xioctl(fd, FE_GET_PROPERTY, &dtv_prop) == -1) { - dvb_perror("FE_GET_PROPERTY"); -- dvb_v5_free(parms); - close(fd); - return -errno; - } -@@ -312,7 +308,6 @@ int dvb_fe_open_fname(struct dvb_v5_fe_parms_priv *parms, char *fname, - - if (parms->p.num_systems == 0) { - dvb_logerr(_("driver returned 0 supported delivery systems!")); -- dvb_v5_free(parms); - close(fd); - return -EINVAL; - } --- -cgit v0.10.2 diff --git a/libdvbv5-revert-leaks-double-free-dvb_fe_open_fname.patch b/libdvbv5-revert-leaks-double-free-dvb_fe_open_fname.patch deleted file mode 100644 index 865776a..0000000 --- a/libdvbv5-revert-leaks-double-free-dvb_fe_open_fname.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 41f19db34e17ed13f5cc06d9147ba83803224ce6 Mon Sep 17 00:00:00 2001 -From: Mauro Carvalho Chehab -Date: Fri, 26 Apr 2019 12:05:57 -0300 -Subject: Revert "libdvbv5: leaks and double free in dvb_fe_open_fname()" - -This reverts commit c82608ca1595427c2bdbd4abb9aca9163e1df60a. - -This patch is buggy, as reported at: - - https://bugs.kde.org/show_bug.cgi?id=406145 - https://bugzilla.redhat.com/show_bug.cgi?id=1695023 - -So, revert it, in order to make Kaffeine work again. - -Thanks to Wolfgang Ulbrich with detected the bad patch and -checked that reverting it fixes the issue. - -Fix tested with a PCTV 461 and a DVB-S2 stream from my TV -provider. - -Signed-off-by: Mauro Carvalho Chehab - -diff --git a/lib/libdvbv5/dvb-dev-local.c b/lib/libdvbv5/dvb-dev-local.c -index 2de9a61..e98b967 100644 ---- a/lib/libdvbv5/dvb-dev-local.c -+++ b/lib/libdvbv5/dvb-dev-local.c -@@ -467,7 +467,7 @@ static struct dvb_open_descriptor - flags &= ~O_NONBLOCK; - } - -- ret = dvb_fe_open_fname(parms, dev->path, flags); -+ ret = dvb_fe_open_fname(parms, strdup(dev->path), flags); - if (ret) { - free(open_dev); - return NULL; -diff --git a/lib/libdvbv5/dvb-fe.c b/lib/libdvbv5/dvb-fe.c -index 7f63476..5dcf492 100644 ---- a/lib/libdvbv5/dvb-fe.c -+++ b/lib/libdvbv5/dvb-fe.c -@@ -133,6 +133,7 @@ struct dvb_v5_fe_parms *dvb_fe_open_flags(int adapter, int frontend, - int flags) - { - int ret; -+ char *fname; - struct dvb_device *dvb; - struct dvb_dev_list *dvb_dev; - struct dvb_v5_fe_parms_priv *parms = NULL; -@@ -152,6 +153,7 @@ struct dvb_v5_fe_parms *dvb_fe_open_flags(int adapter, int frontend, - dvb_dev_free(dvb); - return NULL; - } -+ fname = strdup(dvb_dev->path); - - if (!strcmp(dvb_dev->bus_addr, "platform:dvbloopback")) { - logfunc(LOG_WARNING, _("Detected dvbloopback")); -@@ -159,10 +161,14 @@ struct dvb_v5_fe_parms *dvb_fe_open_flags(int adapter, int frontend, - } - - dvb_dev_free(dvb); -- -+ if (!fname) { -+ logfunc(LOG_ERR, _("fname calloc: %s"), strerror(errno)); -+ return NULL; -+ } - parms = calloc(sizeof(*parms), 1); - if (!parms) { - logfunc(LOG_ERR, _("parms calloc: %s"), strerror(errno)); -+ free(fname); - return NULL; - } - parms->p.verbose = verbose; -@@ -177,7 +183,7 @@ struct dvb_v5_fe_parms *dvb_fe_open_flags(int adapter, int frontend, - if (use_legacy_call) - parms->p.legacy_fe = 1; - -- ret = dvb_fe_open_fname(parms, dvb_dev->path, flags); -+ ret = dvb_fe_open_fname(parms, fname, flags); - if (ret < 0) { - dvb_v5_free(parms); - return NULL; -@@ -197,6 +203,7 @@ int dvb_fe_open_fname(struct dvb_v5_fe_parms_priv *parms, char *fname, - fd = open(fname, flags, 0); - if (fd == -1) { - dvb_logerr(_("%s while opening %s"), strerror(errno), fname); -+ free(fname); - return -errno; - } - -@@ -217,12 +224,7 @@ int dvb_fe_open_fname(struct dvb_v5_fe_parms_priv *parms, char *fname, - } - } - -- parms->fname = strdup(fname); -- if (!parms->fname) { -- dvb_logerr(_("fname calloc: %s"), strerror(errno)); -- return -errno; -- } -- -+ parms->fname = fname; - parms->fd = fd; - parms->fe_flags = flags; - parms->dvb_prop[0].cmd = DTV_API_VERSION; --- -cgit v0.10.2 diff --git a/sources b/sources index 194eb10..4e243eb 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (v4l-utils-1.18.0.tar.bz2) = 749c804671f039d907bf782cba5d1c23fff48066f3b6d4a0249fb9b65c493ee3945b544ee2a306dda79973da04f0301278ee88775f798aba590e5d0f15226d49 +SHA512 (v4l-utils-1.20.0.tar.bz2) = 179ca8dbbf7af5fa4870b70f17645d7834fe6ba52670ae6b58473efa257db0cd812ce14f16574cc4491c0bcb218835e4c29f1354882a151687eecec97852fc63 diff --git a/v4l-utils-1.18.0-gcc10.patch b/v4l-utils-1.18.0-gcc10.patch deleted file mode 100644 index 1ff3913..0000000 --- a/v4l-utils-1.18.0-gcc10.patch +++ /dev/null @@ -1,46 +0,0 @@ -diff -up v4l-utils-1.18.0/lib/include/libdvbv5/desc_t2_delivery.h.me v4l-utils-1.18.0/lib/include/libdvbv5/desc_t2_delivery.h ---- v4l-utils-1.18.0/lib/include/libdvbv5/desc_t2_delivery.h.me 2020-02-25 16:30:27.384727764 +0100 -+++ v4l-utils-1.18.0/lib/include/libdvbv5/desc_t2_delivery.h 2020-02-25 16:30:38.872831694 +0100 -@@ -215,7 +215,7 @@ extern const unsigned dvbt2_transmission - * @brief converts from internal representation to string the SISO_MISO - * field of dvb_desc_t2_delivery:SISO_MISO field. - */ --const char *siso_miso[4]; -+extern const char *siso_miso[4]; - - #ifdef __cplusplus - } -diff -up v4l-utils-1.18.0/lib/libdvbv5/dvb-v5.h.me v4l-utils-1.18.0/lib/libdvbv5/dvb-v5.h ---- v4l-utils-1.18.0/lib/libdvbv5/dvb-v5.h.me 2020-02-25 16:28:38.513742866 +0100 -+++ v4l-utils-1.18.0/lib/libdvbv5/dvb-v5.h 2020-02-25 16:29:31.495222165 +0100 -@@ -14,17 +14,17 @@ struct fe_status_name { - char *name; - }; - extern struct fe_status_name fe_status_name[8]; --const char *fe_code_rate_name[14]; --const char *fe_modulation_name[15]; --const char *fe_transmission_mode_name[10]; --const unsigned fe_bandwidth_name[8]; --const char *fe_guard_interval_name[12]; --const char *fe_hierarchy_name[6]; --const char *fe_voltage_name[4]; --const char *fe_tone_name[3]; --const char *fe_inversion_name[4]; --const char *fe_pilot_name[4]; --const char *fe_rolloff_name[5]; --const char *dvb_v5_name[72]; --const char *delivery_system_name[20]; -+extern const char *fe_code_rate_name[14]; -+extern const char *fe_modulation_name[15]; -+extern const char *fe_transmission_mode_name[10]; -+extern const unsigned fe_bandwidth_name[8]; -+extern const char *fe_guard_interval_name[12]; -+extern const char *fe_hierarchy_name[6]; -+extern const char *fe_voltage_name[4]; -+extern const char *fe_tone_name[3]; -+extern const char *fe_inversion_name[4]; -+extern const char *fe_pilot_name[4]; -+extern const char *fe_rolloff_name[5]; -+extern const char *dvb_v5_name[72]; -+extern const char *delivery_system_name[20]; - #endif diff --git a/v4l-utils.spec b/v4l-utils.spec index c4020a0..bd464c1 100644 --- a/v4l-utils.spec +++ b/v4l-utils.spec @@ -2,15 +2,14 @@ %global __brp_strip_lto %{nil} Name: v4l-utils -Version: 1.18.0 -Release: 5%{?dist} +Version: 1.20.0 +Release: 0%{?dist} Summary: Utilities for video4linux and DVB devices # libdvbv5, dvbv5 utils, ir-keytable and v4l2-sysfs-path are GPLv2 only License: GPLv2+ and GPLv2 URL: http://www.linuxtv.org/downloads/v4l-utils/ Source0: http://linuxtv.org/downloads/v4l-utils/v4l-utils-%{version}.tar.bz2 -Patch0: v4l-utils-1.18.0-gcc10.patch BuildRequires: alsa-lib-devel BuildRequires: desktop-file-utils @@ -119,14 +118,14 @@ files for developing applications that use libdvbv5. # Don't use rpath! sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool -make %{?_smp_mflags} +%make_build make doxygen-run %install %{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d} %make_install -find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';' +find $RPM_BUILD_ROOT -name '*.la' -delete rm -f $RPM_BUILD_ROOT%{_libdir}/{v4l1compat.so,v4l2convert.so} mkdir -p $RPM_BUILD_ROOT%{_mandir}/man3/ cp -arv %{_builddir}/%{name}-%{version}/doxygen-doc/man/man3 $RPM_BUILD_ROOT%{_mandir}/