From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS22989 209.51.188.0/24 X-Spam-Status: No, score=-3.9 required=3.0 tests=AWL,BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 949C020248 for ; Thu, 18 Apr 2019 21:23:17 +0000 (UTC) Received: from localhost ([127.0.0.1]:47598 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hHEV2-0004sQ-OD for normalperson@yhbt.net; Thu, 18 Apr 2019 17:23:16 -0400 Received: from eggs.gnu.org ([209.51.188.92]:32829) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hHEO4-0008F2-Tx for bug-gnulib@gnu.org; Thu, 18 Apr 2019 17:16:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hHEO3-0005v0-MR for bug-gnulib@gnu.org; Thu, 18 Apr 2019 17:16:04 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:50867) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hHEO3-0005u3-BQ for bug-gnulib@gnu.org; Thu, 18 Apr 2019 17:16:03 -0400 Received: from [192.168.101.10] ([91.1.223.60]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MDyc8-1h9V9v3hps-009xE4; Thu, 18 Apr 2019 23:15:59 +0200 Subject: Re: di-set: Fix memory leak To: Bruno Haible , bug-gnulib@gnu.org References: <3776500.tAkkx50KeC@omega> From: Bernhard Voelker Openpgp: preference=signencrypt Autocrypt: addr=mail@bernhard-voelker.de; prefer-encrypt=mutual; keydata= mQENBFPirzMBCACyzYldTjQ4ufFOkByY5Nn5USb5GFoL48nWBwNHjd9KUbtRRNlQiPNKd6hK Gvd3BGi5aoFKA4ytfRk6jbAbW3jVb3R8wYaV08mOy4KVEKxqN4bxsXlMjNChXVR+rtKDmfI+ oPTL+cPH2X6gW4W02IRbVw0uUhNm6zEedC/gNrY/mTlf1enZ46jxZ7BTUZaG+kx38UMISIMB zSzLRtdkwgmHj4jS3p1fF2cwRqLclIfMjKGpbNFPEXeXKWrCLcqHw78795eAR9q0YvrDkfIn GdDBwfb3VM4NdulwIFzvYZMSXvSbbyPLB5YkHU5aAWQHUse4WlfT5ccDpbzUYldRAvF9ABEB AAG0K0Jlcm5oYXJkIFZvZWxrZXIgPG1haWxAYmVybmhhcmQtdm9lbGtlci5kZT6JATkEEwEC ACMFAlPirzMCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRBGUC73lpFxle5wCACC dbs0QaJ0vR3Sff2cKdTk41rUq3YfWngsR///IOU0C5DdkePmCnJE/lUsUy0LRTxcUDLxQR+x QHU8ssRT0JUO9726dI3miy36UdsgmBYaOtLvQcidGmW1R7o0PYYf04+TFtyqKgngOUBPpMgR 6o4UsQxy/OD4bN1WDqOgIjL+D/qJpkKmgp6L6+hhaBCpiOFKRmmV7YyQ3SqVlfQNiHs5ZtkR nXpIjgZARV+GllKucI17bO0CGmTJZ1tstVy0+W3DQT1lbBkTTc++5LONM99D3jjn23l1ocOp folR53F7I4cb2RNfT23v1I59RH37lB9wMOqrKj0UjYAC2YoPGQ3BuQENBFPirzMBCADXLWWp QihBldY6reca8ZKdc3T9qXEOa3akE3DWKztIBmNJhtYOjmpLYajQTkGa7UoJTnbmZE2Rn6ZE oNnvb0gcFNAIcY95KOI+bjOR8HEgh4cx2REXh6L6olIgyXqt/KFusE4wtVZAFxZl+30HzN6n D+1HvrjXxPJRX6MsIYOYyyX9/6OofwJK6QHODYGp8WL2olHDnmsXg4AT6Wlr7qKpKrQELlcF R4xkvdmgL/Ghw/tK0yJTxMIcewCCZWLPOXRmFRbvAadZWPAgVsJ63siNyUlVnVMSzDgTJl+s l/DMabXpqrJQx3/1Yy6mTaDs3XZT/wmBKaTLXx/LByaPxQQ7ABEBAAGJAR8EGAECAAkFAlPi rzMCGwwACgkQRlAu95aRcZWVPwgAqZT6iTXkoP37wYb41323RzhBcJ8JSk4cyBDBUXX0lMrM 3qhiClKG7phpxVdu817Gwc6Hsecg7FfjQAV8MHQ0ZFeEFdk3b2rKBqfsStc+h49/xF3Fb+if CzR9qeQF82fMSxkg18++7hMcHCMO/hPZ/Q0xRi+lrSr2QKDJQuLzSyVU14TxrCkevZjEhtma VNvcJlJzCbiBXee9Fpc5jITUXPFG8E8dxqo1n+duOyIMgozrAnzP7X5V/Ob/Ozf/aGGX9+Jd inyfCX18nWcHALKMU/36Eua/ylalf/2c2YkBp9KCLVmGgPkUgW52EeRPgroIsiwu+rwCSV6Z UyCJ+OymCg== Message-ID: Date: Thu, 18 Apr 2019 23:15:59 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <3776500.tAkkx50KeC@omega> Content-Type: multipart/mixed; boundary="------------7EF386C284D2239C3DE7E7CB" Content-Language: en-US X-Provags-ID: V03:K1:NTlGVn/0c6/jz0plv5OvFM8kBhyAxZaYzvUmiGcQ7suMAEe448n w7BEyQc90318llHuuGIYH8Qz1By48y3nHlFY6I9E+SPkqb0mxeiAi27nA9p4qe7012b4uI5 DPjmb8KC+RGdOPIgi7edXVzCBzGaNxL5nmoFqwWACfO1aZ9Uvfkli7Qmsi5hFmbsygWR/f6 HWtcOiyhLtAmKH/LQocfQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:252gfTpwbO4=:2bQU9bpq48g0x1JB/p7w4U JjKOQSW12Nqpu4k7x3xrajSl9YVo0HV7rWj25dUq1XpfKd5RsYYski3rhrvT7Z7C3Yc6rIDS0 EQteYLZtFGNup1UM1bKIFi6Gg1PY26ERfBcT3F8DoZx/8W1t9vMyaY5ZxciYP0ypMcOul2+L0 v+l720jPHFM3B0gfenR0SoXF+hldVCo/wuGXsVoseT/EqMi5Mc824IhXxcClOXdCYos158r/8 c4rJsOYMGNzSImk1ldTotCdk2TmFsKIe2GvvjDVX4+0RMtBOZrZnGwUAhTo9FZYxjWfRxDCxI 9egDKTAZ6rxXKhDQXu1cxHmm9RbytWwUorUsM3Ojk4zses5ReCYlQgGW9iFAVg75xjFZt0pYv nrI0ON2k6It7IbdCauYhrCqmSmqyU6Scs66N49L63YE4zz/epCgqXsvUz+4K3wWpg69Djy8YB 0FksA2WEcpUXsX+zyL+e/cVsNeyJaboH+57RRjA3Nv2Pu6G0IsoGDDVlkWM3LZUm+LNxZlYND gS8tzej00qJ0JX9UqnD69bYAuHXBMNg202ORfLak0nBn/s293vyZ5W1gbeRv2gD15lUSbw6fY PpIKyNeZ7duJadFMKGSfyu4PsAldyCfhGlubdaknwU7lzX0WmicyVJpZ918h4DJ6Q+BHwQBYi sFwTUJHoTorIcrtd7BFBteUgwTTJSIpENYinxfcMY84Fsc76XebUOPBvhZSVTLmxceapHrQaY us3pYXc3oVegNknp/vOEBP/lDCzgtpMMTeMiMLKEfj9ECwgAHvXCUIJhjiA= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.126.134 X-BeenThere: bug-gnulib@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Gnulib discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org Sender: "bug-gnulib" This is a multi-part message in MIME format. --------------7EF386C284D2239C3DE7E7CB Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 3/10/19 2:20 PM, Bruno Haible wrote: > 2019-03-10 Bruno Haible > > di-set: Fix memory leak. > * lib/di-set.c (di_set_free): Free the ino_map through ino_map_free(), > not free(). > > diff --git a/lib/di-set.c b/lib/di-set.c > index e8f69db..2c0601e 100644 > --- a/lib/di-set.c > +++ b/lib/di-set.c > @@ -136,7 +136,7 @@ void > di_set_free (struct di_set *dis) > { > hash_free (dis->dev_map); > - free (dis->ino_map); > + ino_map_free (dis->ino_map); > free (dis->probe); > free (dis); > } This commit (3703dbbe88dd) makes coreutils' du(1) crash. Reproducer: --------------------------------------------------------- #!/bin/sh set -x git clone --depth=1 git://git.sv.gnu.org/gnulib.git \ && cd gnulib \ && rm -rf /tmp/testdir/ \ && ./gnulib-tool --create-testdir --with-tests --dir=/tmp/testdir di-set \ && cd /tmp/testdir \ && ./configure --quiet \ && make \ && patch -p0 --fuzz=0 <<<'\ --- gltests/test-di-set.c.ORIG 2019-04-10 08:23:09.663882510 +0200 +++ gltests/test-di-set.c 2019-04-18 22:27:57.778264454 +0200 @@ -27,6 +27,9 @@ { struct di_set *dis = di_set_alloc (); ASSERT (dis); + di_set_free (dis); + dis = di_set_alloc (); + ASSERT (dis); ASSERT (di_set_lookup (dis, 2, 5) == 0); /* initial lookup fails */ ASSERT (di_set_insert (dis, 2, 5) == 1); /* first insertion succeeds */ ' \ && make check --------------------------------------------------------- The attached allows for 'ino-map' to free on NULL. Have a nice day, Berny --------------7EF386C284D2239C3DE7E7CB Content-Type: text/x-patch; name="0001-ino-map-allow-free-on-NULL.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-ino-map-allow-free-on-NULL.patch" >From c6f24d39f25cbedfba6f728da48e9666d7240894 Mon Sep 17 00:00:00 2001 From: Bernhard Voelker Date: Thu, 18 Apr 2019 23:04:26 +0200 Subject: [PATCH] ino-map: allow free on NULL * lib/ino-map.c (ino_map_free): Do nothing when MAP is NULL. Since commit 3703dbbe88dd, di_set_free calls ino_map_free which may be NULL. --- ChangeLog | 7 +++++++ lib/ino-map.c | 9 ++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 398c33968..1d96402d8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2019-04-18 Bernhard Voelker + + ino-map: allow free on NULL. + * lib/ino-map.c (ino_map_free): Do nothing when MAP is NULL. + Since commit 3703dbbe88dd, di_set_free calls ino_map_free which may + be NULL. + 2019-04-14 Paul Eggert * lib/str-two-way.h: Fix comment typo. diff --git a/lib/ino-map.c b/lib/ino-map.c index c48defa65..9d6bd0894 100644 --- a/lib/ino-map.c +++ b/lib/ino-map.c @@ -105,9 +105,12 @@ ino_map_alloc (size_t next_mapped_ino) void ino_map_free (struct ino_map *map) { - hash_free (map->map); - free (map->probe); - free (map); + if (map) + { + hash_free (map->map); + free (map->probe); + free (map); + } } -- 2.21.0 --------------7EF386C284D2239C3DE7E7CB--