2023-04-24 Paul Eggert <eggert@cs.ucla.edu>
+ fclose: pacify gcc -Wanalyzer-file-leak
+ Without this patch, building coreutils with
+ --enable-gcc-checking=expensive would fail with a message like
+ “lib/exclude.c:682:6: error: leak of FILE 'in' [CWE-775]
+ [-Werror=analyzer-file-leak]”, because Gnulib replaced fclose but
+ not fopen, and GCC saw a call to fopen followed by a call to
+ rpl_fclose. The patch causes GCC to instead see a call to
+ rpl_fopen followed by rpl_fclose.
+ * m4/fclose.m4 (gl_FUNC_FCLOSE): Replace fopen when replacing
+ fclose.
+ * modules/fclose (Depends-on): Add fopen.
+ (configure.ac): Replace fopen when replacing fclose.
+
unsetenv-tests: pacify -Wanalyzer-putenv-of-auto-var
* tests/test-unsetenv.c (main): Make entry static. Even with this
change, it’s unclear whether this test is portable POSIX code, but
stdio
close [test $REPLACE_FCLOSE = 1]
fflush [test $REPLACE_FCLOSE = 1]
+fopen [test $REPLACE_FCLOSE = 1]
freading [test $REPLACE_FCLOSE = 1]
lseek [test $REPLACE_FCLOSE = 1]
msvc-inval [test $REPLACE_FCLOSE = 1]
configure.ac:
gl_FUNC_FCLOSE
+if test $REPLACE_FCLOSE = 1; then
+ REPLACE_FOPEN=1
+ AC_LIBOBJ([fopen])
+ gl_PREREQ_FOPEN
+fi
gl_CONDITIONAL([GL_COND_OBJ_FCLOSE], [test $REPLACE_FCLOSE = 1])
gl_STDIO_MODULE_INDICATOR([fclose])