]> git.sesse.net Git - vlc/commitdiff
Fix candidate filename leak in lua playlist.
authorAntoine Cellerier <dionoea@videolan.org>
Wed, 30 Sep 2009 13:38:53 +0000 (15:38 +0200)
committerAntoine Cellerier <dionoea@videolan.org>
Wed, 30 Sep 2009 13:38:53 +0000 (15:38 +0200)
modules/misc/lua/demux.c

index 0635ecff7c08b896e17686dc4ad18f1f377d1235..ea0eb2bdd622be8d725055ffb307349df126372f 100644 (file)
@@ -141,7 +141,7 @@ static int probe_luascript( vlc_object_t *p_this, const char * psz_filename,
         msg_Warn( p_demux, "Error loading script %s: %s", psz_filename,
                   lua_tostring( L, lua_gettop( L ) ) );
         lua_pop( L, 1 );
-        return VLC_EGENERIC;
+        goto error;
     }
 
     lua_getglobal( L, "probe" );
@@ -151,6 +151,7 @@ static int probe_luascript( vlc_object_t *p_this, const char * psz_filename,
         msg_Warn( p_demux, "Error while runing script %s, "
                   "function probe() not found", psz_filename );
         lua_pop( L, 1 );
+        goto error;
         return VLC_EGENERIC;
     }
 
@@ -160,22 +161,24 @@ static int probe_luascript( vlc_object_t *p_this, const char * psz_filename,
                   "function probe(): %s", psz_filename,
                   lua_tostring( L, lua_gettop( L ) ) );
         lua_pop( L, 1 );
+        goto error;
         return VLC_EGENERIC;
     }
 
     if( lua_gettop( L ) )
     {
-        int i_ret = VLC_EGENERIC;
         if( lua_toboolean( L, 1 ) )
         {
             msg_Dbg( p_demux, "Lua playlist script %s's "
                      "probe() function was successful", psz_filename );
-            i_ret = VLC_SUCCESS;
+            lua_pop( L, 1 );
+            return VLC_SUCCESS;
         }
         lua_pop( L, 1 );
-
-        return i_ret;
     }
+
+error:
+    FREENULL( p_sys->psz_filename );
     return VLC_EGENERIC;
 }