libdvbv5: fix a memory leak at descriptors
authorMauro Carvalho Chehab <m.chehab@samsung.com>
Sun, 31 Aug 2014 22:55:12 +0000 (19:55 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Sun, 31 Aug 2014 22:55:12 +0000 (19:55 -0300)
If we call dvb_fe_dummy(), we need to free it latter.

*** CID 1233565:  Resource leak  (RESOURCE_LEAK)
/lib/libdvbv5/descriptors.c: 79 in dvb_desc_default_print()
73
74     static void dvb_desc_default_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)
75     {
76      if (!parms)
77      parms = dvb_fe_dummy();
78      dvb_hexdump(parms, "|           ", desc->data, desc->length);
>>>     CID 1233565:  Resource leak  (RESOURCE_LEAK)
>>>     Returning without freeing "parms" leaks the storage that it points to.
79     }
80

Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
lib/libdvbv5/descriptors.c

index d379cbe..dd232f4 100644 (file)
@@ -73,8 +73,11 @@ static int dvb_desc_default_init(struct dvb_v5_fe_parms *parms, const uint8_t *b
 
 static void dvb_desc_default_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)
 {
-       if (!parms)
+       if (!parms) {
                parms = dvb_fe_dummy();
+               dvb_hexdump(parms, "|           ", desc->data, desc->length);
+               free(parms);
+       }
        dvb_hexdump(parms, "|           ", desc->data, desc->length);
 }