[libdvdnav-devel] Free `cached_dir_base` to fix memory leak

Paul Menzel git at videolan.org
Sun Dec 29 18:18:24 CET 2013


libdvdread | branch: master | Paul Menzel <paulepanter at users.sourceforge.net> | Mon Nov 18 23:43:16 2013 +0000| [4c2728ff2cdb73ffe7656135d546c1f8f4da87ff] | committer: Jean-Baptiste Kempf

Free `cached_dir_base` to fix memory leak

The static analyzer from LLVM/Clang 1:3.4~svn194079-1 reports a memory
leak in `libdvdread/src/dvd_udf.c`.

        $ scan-build -o scan-build make
        $ scan-view scan-build/2013-11-18-155601-16168-1

The memory is allocated in

       	if((cached_dir_base = malloc(dir_lba * DVD_VIDEO_LB_LEN + 2048)) == NULL)

and has to be freed before returning from the function.

Signed-off-by: Paul Menzel <paulepanter at users.sourceforge.net>

> http://git.videolan.org/gitweb.cgi/libdvdread.git/?a=commit;h=4c2728ff2cdb73ffe7656135d546c1f8f4da87ff
---

 src/dvd_udf.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/dvd_udf.c b/src/dvd_udf.c
index b8b5be2..a418ce5 100644
--- a/src/dvd_udf.c
+++ b/src/dvd_udf.c
@@ -594,8 +594,10 @@ static int UDFScanDir( dvd_reader_t *device, struct AD Dir, char *FileName,
     } else
       in_cache = 1;
 
-    if(cached_dir == NULL)
+    if(cached_dir == NULL) {
+      free(cached_dir_base);
       return 0;
+    }
 
     p = 0;
 



More information about the libdvdnav-devel mailing list