[FFmpeg-devel] [PATCH] cmdutils: remove the current working directory from the DLL search path on win32

Michael Niedermayer michael at niedermayer.cc
Mon Aug 8 19:40:30 EEST 2016


On Tue, Aug 09, 2016 at 12:25:21AM +1000, Matt Oliver wrote:
> On 8 August 2016 at 23:27, Hendrik Leppkes <h.leppkes at gmail.com> wrote:
> 
> > ---
> >  cmdutils.c | 9 +++++++++
> >  cmdutils.h | 5 +++++
> >  ffmpeg.c   | 2 ++
> >  ffplay.c   | 2 ++
> >  ffprobe.c  | 2 ++
> >  ffserver.c | 1 +
> >  6 files changed, 21 insertions(+)
> >
> > diff --git a/cmdutils.c b/cmdutils.c
> > index 03a4836..6960f8c 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 83ea4ad..67bf484 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.
> >   */
> > diff --git a/ffmpeg.c b/ffmpeg.c
> > index d6282bd..bae515d 100644
> > --- a/ffmpeg.c
> > +++ b/ffmpeg.c
> > @@ -4293,6 +4293,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 */
> > diff --git a/ffplay.c b/ffplay.c
> > index 651e0cf..adbe9cb 100644
> > --- a/ffplay.c
> > +++ b/ffplay.c
> > @@ -3776,6 +3776,8 @@ int main(int argc, char **argv)
> >      char dummy_videodriver[] = "SDL_VIDEODRIVER=dummy";
> >      char alsa_bufsize[] = "SDL_AUDIO_ALSA_SET_BUFFER_SIZE=1";
> >
> > +    init_dynload();
> > +
> >      av_log_set_flags(AV_LOG_SKIP_REPEATED);
> >      parse_loglevel(argc, argv, options);
> >
> > diff --git a/ffprobe.c b/ffprobe.c
> > index a49be6a..657867d 100644
> > --- a/ffprobe.c
> > +++ b/ffprobe.c
> > @@ -3241,6 +3241,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 1a27583..453d790 100644
> > --- a/ffserver.c
> > +++ b/ffserver.c
> > @@ -3980,6 +3980,7 @@ int main(int argc, char **argv)
> >      int cfg_parsed;
> >      int ret = EXIT_FAILURE;
> >
> > +    init_dynload();
> >
> >      config.filename = av_strdup("/etc/ffserver.conf");
> >
> > --
> >
> 
> LGTM

applied

thanks to all

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Those who are too smart to engage in politics are punished by being
governed by those who are dumber. -- Plato 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160808/936684c0/attachment.sig>


More information about the ffmpeg-devel mailing list