diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2016-08-08 15:27:41 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2016-08-13 13:08:57 +0200 |
commit | 09d1854063878a4bc6aa4e57d96fded9a602f464 (patch) | |
tree | 485e5c1c63533679315110b0645561147286b956 | |
parent | ab9616428ac09b0a0b76da34c412c71096144e6e (diff) | |
download | android_external_ffmpeg-09d1854063878a4bc6aa4e57d96fded9a602f464.tar.gz android_external_ffmpeg-09d1854063878a4bc6aa4e57d96fded9a602f464.tar.bz2 android_external_ffmpeg-09d1854063878a4bc6aa4e57d96fded9a602f464.zip |
cmdutils: remove the current working directory from the DLL search path on win32
Reviewed-by: Matt Oliver <protogonoi@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 3bf142c77337814458ed8e036796934032d9837f)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | cmdutils.c | 9 | ||||
-rw-r--r-- | cmdutils.h | 5 | ||||
-rw-r--r-- | ffmpeg.c | 2 | ||||
-rw-r--r-- | ffplay.c | 2 | ||||
-rw-r--r-- | ffprobe.c | 2 | ||||
-rw-r--r-- | ffserver.c | 1 |
6 files changed, 21 insertions, 0 deletions
diff --git a/cmdutils.c b/cmdutils.c index 03a4836207..6960f8c99c 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -107,6 +107,15 @@ static void log_callback_report(void *ptr, int level, const char *fmt, va_list v } } +void init_dynload(void) +{ +#ifdef _WIN32 + /* Calling SetDllDirectory with the empty string (but not NULL) removes the + * current working directory from the DLL search path as a security pre-caution. */ + SetDllDirectory(""); +#endif +} + static void (*program_exit)(int ret); void register_exit(void (*cb)(int ret)) diff --git a/cmdutils.h b/cmdutils.h index 83ea4ad39e..67bf4848b7 100644 --- a/cmdutils.h +++ b/cmdutils.h @@ -62,6 +62,11 @@ void register_exit(void (*cb)(int ret)); void exit_program(int ret) av_noreturn; /** + * Initialize dynamic library loading + */ +void init_dynload(void); + +/** * Initialize the cmdutils option system, in particular * allocate the *_opts contexts. */ @@ -4268,6 +4268,8 @@ int main(int argc, char **argv) int ret; int64_t ti; + init_dynload(); + register_exit(ffmpeg_cleanup); setvbuf(stderr,NULL,_IONBF,0); /* win32 runtime needs this */ @@ -3771,6 +3771,8 @@ int main(int argc, char **argv) VideoState *is; char dummy_videodriver[] = "SDL_VIDEODRIVER=dummy"; + init_dynload(); + av_log_set_flags(AV_LOG_SKIP_REPEATED); parse_loglevel(argc, argv, options); @@ -3178,6 +3178,8 @@ int main(int argc, char **argv) char *w_name = NULL, *w_args = NULL; int ret, i; + init_dynload(); + av_log_set_flags(AV_LOG_SKIP_REPEATED); register_exit(ffprobe_cleanup); diff --git a/ffserver.c b/ffserver.c index 35e399dc55..d73caee9ec 100644 --- a/ffserver.c +++ b/ffserver.c @@ -3975,6 +3975,7 @@ int main(int argc, char **argv) int cfg_parsed; int ret = EXIT_FAILURE; + init_dynload(); config.filename = av_strdup("/etc/ffserver.conf"); |