diff mbox series

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

Message ID tencent_609A559F34AB0C4EC670132D8A9A3540F008@qq.com
State New
Headers show
Series Add wasi(WebAssembly System Interface) support | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 fail Make failed
andriy/make_x86 fail Make failed

Commit Message

Zhao Zhili June 28, 2024, 4:45 a.m. UTC
From: Zhao Zhili <zhilizhao@tencent.com>

Don't assume tempnam is available when !HAVE_MKSTEMP. Check tempnam
explicitly in configure.

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
---
 configure             | 2 ++
 libavutil/file_open.c | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

Comments

Mark Harris June 30, 2024, 5:30 a.m. UTC | #1
> From: Zhao Zhili <zhilizhao@tencent.com>
>
> Don't assume tempnam is available when !HAVE_MKSTEMP. Check tempnam
> explicitly in configure.
>
> Signed-off-by: Zhao Zhili <zhilizhao@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
diff mbox series

Patch

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
     void *ptr= tempnam(NULL, prefix);
     if(!ptr)
         ptr= tempnam(".", prefix);