64 lines
1.9 KiB
Diff
64 lines
1.9 KiB
Diff
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
|