With leak sanitizer on, the test for getdelim fails due to a memory leak. The attached patch fixes it. (Please feel free to amend.)
Regards, Tim
Output from config.log:
configure:26259: checking for working getdelim function
configure:26325: gcc-10 -o conftest -O1 -g -fno-omit-frame-pointer
-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize
=undefined,bool,alignment,null,enum,address,leak,nonnull-attribute
-fno-sanitize-recover=all -fsanitize-address-use-afte
r-scope conftest.c >&5
configure:26325: $? = 0
configure:26325: ./conftest
=================================================================
==551573==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 120 byte(s) in 1 object(s) allocated from:
#0 0x7fb818f56e8f in malloc
(/usr/lib/x86_64-linux-gnu/libasan.so.6+0xa9e8f)
#1 0x7fb8183f51bf in _IO_getdelim
/build/glibc-WZtAaN/glibc-2.30/libio/iogetdelim.c:62
#2 0x7fb8198dd72f (<unknown module>)
SUMMARY: AddressSanitizer: 120 byte(s) leaked in 1 allocation(s).
configure:26325: $? = 1
configure: program exited with status 1
From 0b9451c7c8919121df67b71fdd2f993605c1abc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20R=C3=BChsen?= <[email protected]> Date: Mon, 18 May 2020 12:36:16 +0200 Subject: [PATCH] Fix memleak in getdelim C code to pacify leak sanitizer --- ChangeLog | 4 ++++ m4/getdelim.m4 | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 9551d9934..2f7d6d4bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2020-05-18 Tim Rühsen <tim.ruehsenqgmx.de> + + * m4/getdelim.m4: Fix memleak. + 2020-05-17 Bruno Haible <[email protected]> Clarify intended usage of the license file modules. diff --git a/m4/getdelim.m4 b/m4/getdelim.m4 index 9f4c7f6e9..ac3917b11 100644 --- a/m4/getdelim.m4 +++ b/m4/getdelim.m4 @@ -1,4 +1,4 @@ -# getdelim.m4 serial 14 +# getdelim.m4 serial 15 dnl Copyright (C) 2005-2007, 2009-2020 Free Software Foundation, Inc. dnl @@ -42,6 +42,7 @@ AC_DEFUN([gl_FUNC_GETDELIM], int len = getdelim (&line, &siz, '\n', in); if (!(len == 4 && line && strcmp (line, "foo\n") == 0)) { free (line); fclose (in); return 2; } + free (line); } { /* Test result for a NULL buffer and a non-zero size. -- 2.26.2
signature.asc
Description: OpenPGP digital signature
