From: E.Smith <31170571+azlm8t@users.noreply.github.com> Date: Wed, 6 Dec 2017 21:51:39 +0000 (+0000) Subject: xmltv/core: Fix several memory leaks/make more const correct. (#4773) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ddf6aa51dff25a6f5082a716b92e325a97ed26c;p=thirdparty%2Ftvheadend.git xmltv/core: Fix several memory leaks/make more const correct. (#4773) Issue: #4773. --- diff --git a/src/epg.c b/src/epg.c index 5bc2801b2..01a5589bf 100644 --- a/src/epg.c +++ b/src/epg.c @@ -2228,7 +2228,7 @@ int epg_broadcast_set_description } int epg_broadcast_set_credits -( epg_broadcast_t *b, htsmsg_t *credits, uint32_t *changed ) +( epg_broadcast_t *b, const htsmsg_t *credits, uint32_t *changed ) { if (!b) return 0; const int mod = _epg_object_set_htsmsg(b, &b->credits, credits, changed, EPG_CHANGED_CREDITS); @@ -2265,14 +2265,14 @@ int epg_broadcast_set_credits } int epg_broadcast_set_category -( epg_broadcast_t *b, string_list_t *msg, uint32_t *changed ) +( epg_broadcast_t *b, const string_list_t *msg, uint32_t *changed ) { if (!b) return 0; return _epg_object_set_string_list(b, &b->category, msg, changed, EPG_CHANGED_CATEGORY); } int epg_broadcast_set_keyword -( epg_broadcast_t *b, string_list_t *msg, uint32_t *changed ) +( epg_broadcast_t *b, const string_list_t *msg, uint32_t *changed ) { if (!b) return 0; const int mod = _epg_object_set_string_list(b, &b->keyword, msg, changed, EPG_CHANGED_KEYWORD); @@ -2463,10 +2463,12 @@ epg_broadcast_t *epg_broadcast_deserialize if ((sl = string_list_deserialize(m, "keyword"))) { *save |= epg_broadcast_set_keyword(ebc, sl, &changes); + string_list_destroy(sl); } if ((sl = string_list_deserialize(m, "category"))) { *save |= epg_broadcast_set_category(ebc, sl, &changes); + string_list_destroy(sl); } /* Series link */ diff --git a/src/epg.h b/src/epg.h index 42ee1a146..c1d5aa862 100644 --- a/src/epg.h +++ b/src/epg.h @@ -598,13 +598,13 @@ int epg_broadcast_set_description ( epg_broadcast_t *b, const lang_str_t *str, uint32_t *changed ) __attribute__((warn_unused_result)); int epg_broadcast_set_credits -( epg_broadcast_t *b, htsmsg_t* msg, uint32_t *changed ) +( epg_broadcast_t *b, const htsmsg_t* msg, uint32_t *changed ) __attribute__((warn_unused_result)); int epg_broadcast_set_category -( epg_broadcast_t *b, struct string_list* msg, uint32_t *changed ) +( epg_broadcast_t *b, const struct string_list* msg, uint32_t *changed ) __attribute__((warn_unused_result)); int epg_broadcast_set_keyword -( epg_broadcast_t *b, struct string_list* msg, uint32_t *changed ) +( epg_broadcast_t *b, const struct string_list* msg, uint32_t *changed ) __attribute__((warn_unused_result)); int epg_broadcast_set_serieslink ( epg_broadcast_t *b, epg_serieslink_t *sl, uint32_t *changed ) diff --git a/src/epggrab/module/xmltv.c b/src/epggrab/module/xmltv.c index d62f81007..3186ddc3e 100644 --- a/src/epggrab/module/xmltv.c +++ b/src/epggrab/module/xmltv.c @@ -734,6 +734,8 @@ static int _xmltv_parse_programme_tags */ if (uri) { ee = epg_episode_find_by_uri(uri, mod, 1, &save3, &changes3); + free(uri); + uri = NULL; } else { ee = epg_episode_find_by_broadcast(ebc, mod, 1, &save3, &changes3); } diff --git a/src/string_list.c b/src/string_list.c index e87ad0d5a..acada232b 100644 --- a/src/string_list.c +++ b/src/string_list.c @@ -46,7 +46,9 @@ string_list_destroy(string_list_t *l) while ((item = RB_FIRST(l))) { RB_REMOVE(l, item, h_link); free(item->id); + free(item); } + free(l); } static inline int