1.20.0
This commit is contained in:
parent
89567ec2e7
commit
fdce55b4f3
@ -1,63 +0,0 @@
|
||||
From 78057aaa784a922b4ac6af9f323b828f7a834581 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Andr=C3=A9=20Roth?= <neolynx@gmail.com>
|
||||
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 <neolynx@gmail.com>
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
|
||||
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
|
||||
@ -1,104 +0,0 @@
|
||||
From 41f19db34e17ed13f5cc06d9147ba83803224ce6 Mon Sep 17 00:00:00 2001
|
||||
From: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
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 <mchehab+samsung@kernel.org>
|
||||
|
||||
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
|
||||
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (v4l-utils-1.18.0.tar.bz2) = 749c804671f039d907bf782cba5d1c23fff48066f3b6d4a0249fb9b65c493ee3945b544ee2a306dda79973da04f0301278ee88775f798aba590e5d0f15226d49
|
||||
SHA512 (v4l-utils-1.20.0.tar.bz2) = 179ca8dbbf7af5fa4870b70f17645d7834fe6ba52670ae6b58473efa257db0cd812ce14f16574cc4491c0bcb218835e4c29f1354882a151687eecec97852fc63
|
||||
|
||||
@ -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
|
||||
@ -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}/
|
||||
|
||||
Loading…
Reference in New Issue
Block a user