[FFmpeg-devel] [PATCH 1/2] avutil/file_open: Fix build error with wasi

Mark Harris mark.hsj at gmail.com
Sun Jun 30 08:30:44 EEST 2024


> From: Zhao Zhili <zhilizhao at tencent.com>
>
> Don't assume tempnam is available when !HAVE_MKSTEMP. Check tempnam
> explicitly in configure.
>
> Signed-off-by: Zhao Zhili <zhilizhao at tencent.com>
> ---
>  configure             | 2 ++
>  libavutil/file_open.c | 2 +-
>  2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index 7685c95fbb..bd3c1d4838 100755
> --- a/configure
> +++ b/configure
> @@ -2413,6 +2413,7 @@ SYSTEM_FUNCS="
>      sysconf
>      sysctl
>      sysctlbyname
> +    tempnam
>      usleep
>      UTGetOSTypeFromString
>      VirtualAlloc
> @@ -6548,6 +6549,7 @@ check_struct "sys/stat.h" "struct stat" st_mtim.tv_nsec -D_BSD_SOURCE
>  check_func  strerror_r
>  check_func  sysconf
>  check_func  sysctl
> +check_func  tempnam
>  check_func  usleep
>
>  check_func_headers conio.h kbhit
> diff --git a/libavutil/file_open.c b/libavutil/file_open.c
> index 24ef33e3da..eef6d83706 100644
> --- a/libavutil/file_open.c
> +++ b/libavutil/file_open.c
> @@ -112,7 +112,7 @@ int avpriv_tempfile(const char *prefix, char **filename, int log_offset, void *l
>  {
>      FileLogContext file_log_ctx = { &file_log_ctx_class, log_offset, log_ctx };
>      int fd = -1;
> -#if !HAVE_MKSTEMP
> +#if HAVE_TEMPNAM

If neither HAVE_TEMPNAM nor HAVE_MKSTEMP are defined, this will get
the file name from an uninitialized buffer.  If both are defined it
will not compile because len will be undefined.

 - Mark


>      void *ptr= tempnam(NULL, prefix);
>      if(!ptr)
>          ptr= tempnam(".", prefix);
> --
> 2.42.0


More information about the ffmpeg-devel mailing list