]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
scanfile: fix a memory leak
authorJaroslav Kysela <perex@perex.cz>
Thu, 17 Apr 2014 07:35:21 +0000 (09:35 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 5 May 2014 20:00:36 +0000 (22:00 +0200)
src/input/mpegts/scanfile.c

index bf540557c537e76ede76866a09e07ee776db8527..6e9c60168b6de353e04da655cf25b2ebcc013428 100644 (file)
@@ -469,7 +469,7 @@ scanfile_find ( const char *id )
 
   /* Type */
   if (!(tok = strtok_r(tmp, "/", &s)))
-    return NULL;
+    goto fail;
   if (!strcasecmp(tok, "dvbt"))
     l = &scanfile_regions_DVBT;
   else if (!strcasecmp(tok, "dvbc"))
@@ -479,22 +479,27 @@ scanfile_find ( const char *id )
   else if (!strcasecmp(tok, "atsc"))
     l = &scanfile_regions_ATSC;
   else
-    return NULL;
+    goto fail;
 
   /* Region */
   if (!(tok = strtok_r(NULL, "/", &s)))
-    return NULL;
+    goto fail;
   LIST_FOREACH(r, l, sfr_link)
     if (!strcmp(r->sfr_id, tok))
       break;
-  if (!r) return NULL;
+  if (!r) goto fail;
 
   /* Network */
   if (!(tok = strtok_r(NULL, "/", &s)))
-    return NULL;
+    goto fail;
   LIST_FOREACH(n, &r->sfr_networks, sfn_link)
     if (!strcmp(n->sfn_id, tok))
       break;
 
+  free(tmp);
   return n;
+
+fail:
+  free(tmp);
+  return NULL;
 }