r36349 - in trunk: configure osdep/osdep.h stream/stream_file.c sub/subreader.c sub/vobsub.c
Author: komh Date: Mon Jun 17 14:27:36 2013 New Revision: 36349 Log: Check if path is too long Some buggy libc such as OS/2 kLIBC crashes if path is too long. Modified: trunk/configure trunk/osdep/osdep.h trunk/stream/stream_file.c trunk/sub/subreader.c trunk/sub/vobsub.c Modified: trunk/configure ============================================================================== --- trunk/configure Mon Jun 17 00:35:51 2013 (r36348) +++ trunk/configure Mon Jun 17 14:27:36 2013 (r36349) @@ -855,6 +855,7 @@ _stream_cache=yes _priority=no def_dos_paths="#define HAVE_DOS_PATHS 0" def_stream_cache="#define CONFIG_STREAM_CACHE 1" +def_path_max_check="#define CONFIG_PATH_MAX_CHECK 0" def_priority="#undef CONFIG_PRIORITY" def_pthread_cache="#undef PTHREAD_CACHE" shmem=no @@ -1780,6 +1781,7 @@ if os2 ; then _priority=yes def_dos_paths="#define HAVE_DOS_PATHS 1" def_priority="#define CONFIG_PRIORITY 1" + def_path_max_check="#define CONFIG_PATH_MAX_CHECK 1" fi if wine ; then @@ -8723,6 +8725,7 @@ $def_macosx_bundle $def_macosx_finder $def_maemo $def_memalign_hack +$def_path_max_check $def_priority $def_quicktime $def_restrict_keyword Modified: trunk/osdep/osdep.h ============================================================================== --- trunk/osdep/osdep.h Mon Jun 17 00:35:51 2013 (r36348) +++ trunk/osdep/osdep.h Mon Jun 17 14:27:36 2013 (r36349) @@ -23,6 +23,28 @@ #ifndef MPLAYER_OSDEP_H #define MPLAYER_OSDEP_H +#include "config.h" + +#if CONFIG_PATH_MAX_CHECK +#include <stdio.h> /* fopen() */ +#include <dirent.h> /* opendir() */ +#include <io.h> /* open() */ +#include <fcntl.h> /* open() */ +#include <string.h> /* strlen() */ +#include <limits.h> /* PATH_MAX */ +#include <errno.h> /* errno */ + +#define fopen(n, m) \ + (strlen(n) >= PATH_MAX ? (errno = ENAMETOOLONG, NULL) : (fopen)(n, m)) + +#define opendir(n) \ + (strlen(n) >= PATH_MAX ? (errno = ENOENT, NULL) : (opendir)(n)) + +#define open(n, ...) \ + (strlen(n) >= PATH_MAX ? (errno = ENAMETOOLONG, -1) : \ + (open)(n, __VA_ARGS__)) +#endif /* CONFIG_PATH_MAX_CHECK */ + #ifdef __OS2__ #define INCL_DOS #define INCL_DOSDEVIOCTL Modified: trunk/stream/stream_file.c ============================================================================== --- trunk/stream/stream_file.c Mon Jun 17 00:35:51 2013 (r36348) +++ trunk/stream/stream_file.c Mon Jun 17 14:27:36 2013 (r36349) @@ -36,6 +36,7 @@ #include "help_mp.h" #include "m_option.h" #include "m_struct.h" +#include "osdep/osdep.h" static struct stream_priv_s { char* filename; Modified: trunk/sub/subreader.c ============================================================================== --- trunk/sub/subreader.c Mon Jun 17 00:35:51 2013 (r36348) +++ trunk/sub/subreader.c Mon Jun 17 14:27:36 2013 (r36349) @@ -42,6 +42,7 @@ #include "stream/stream.h" #include "libavutil/common.h" #include "libavutil/avstring.h" +#include "osdep/osdep.h" #ifdef CONFIG_ENCA #include <enca.h> Modified: trunk/sub/vobsub.c ============================================================================== --- trunk/sub/vobsub.c Mon Jun 17 00:35:51 2013 (r36348) +++ trunk/sub/vobsub.c Mon Jun 17 14:27:36 2013 (r36349) @@ -42,6 +42,7 @@ #include "unrar_exec.h" #include "libavutil/common.h" #include "libavutil/intreadwrite.h" +#include "osdep/osdep.h" // Record the original -vobsubid set by commandline, since vobsub_id will be // overridden if slang match any of vobsub streams.
participants (1)
-
komh