libaacs | branch: master | npzacs <[email protected]> | Sat Dec 17 15:41:36 2011 
+0200| [556699544d22ff8a345b9512d73ae6daa7e4838f] | committer: npzacs

Fixed segfault when mount point path can't be resolved

> http://git.videolan.org/gitweb.cgi/libaacs.git/?a=commit;h=556699544d22ff8a345b9512d73ae6daa7e4838f
---

 ChangeLog         |    1 +
 configure.ac      |    2 +-
 src/libaacs/mmc.c |   12 +++++++++++-
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index cd1cebc..11a8c69 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,5 @@
 ????-??-??:
+ - Fixed segfault when mount point path can't be resolved
  - Do not export internal symbols from generated parser/lexer
  - Do not distribute generated parser files
  - Check for libgpg-error. Link against it when needed.
diff --git a/configure.ac b/configure.ac
index ed960fc..a780c06 100644
--- a/configure.ac
+++ b/configure.ac
@@ -91,7 +91,7 @@ AC_TYPE_SIGNAL
 # required headers
 AC_CHECK_HEADERS([stdarg.h sys/types.h dirent.h errno.h libgen.h malloc.h])
 AC_CHECK_HEADERS([stdlib.h mntent.h linux/cdrom.h inttypes.h])
-AC_CHECK_HEADERS([sys/time.h time.h sys/select.h])
+AC_CHECK_HEADERS([sys/time.h time.h sys/select.h limits.h])
 
 # required structures
 AC_STRUCT_DIRENT_D_TYPE
diff --git a/src/libaacs/mmc.c b/src/libaacs/mmc.c
index 6165c8b..7c48d6f 100644
--- a/src/libaacs/mmc.c
+++ b/src/libaacs/mmc.c
@@ -37,6 +37,10 @@
 #include <mntent.h>
 #endif
 
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+
 #ifdef HAVE_LINUX_CDROM_H
 #include <sys/ioctl.h>
 #include <linux/cdrom.h>
@@ -384,7 +388,13 @@ MMC *mmc_open(const char *path)
 #if defined(HAVE_MNTENT_H)
 
 #ifdef HAVE_REALPATH
-    char *file_path = realpath(path, NULL);
+    char *file_path = malloc(PATH_MAX);
+    if (!file_path || !realpath(path, file_path)) {
+        DEBUG(DBG_MMC, "Failed resolving path %s (%p)\n", path, mmc);
+        X_FREE(mmc);
+        X_FREE(file_path);
+        return NULL;
+    }
 #else
     char *file_path = (char*)malloc(strlen(path) + 1);
     strcpy(file_path, path);

_______________________________________________
libaacs-devel mailing list
[email protected]
http://mailman.videolan.org/listinfo/libaacs-devel

Reply via email to