From patchwork Mon Aug 7 20:18:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Lindsay X-Patchwork-Id: 21958 Received: (qmail 8005 invoked by alias); 7 Aug 2017 20:18:40 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 7994 invoked by uid 89); 7 Aug 2017 20:18:39 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=BAYES_00, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=H*m:gmail X-HELO: mail-io0-f196.google.com Received: from mail-io0-f196.google.com (HELO mail-io0-f196.google.com) (209.85.223.196) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 07 Aug 2017 20:18:34 +0000 Received: by mail-io0-f196.google.com with SMTP id o9so1062928iod.5 for ; Mon, 07 Aug 2017 13:18:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=EJC4KyIdgfgvX1A/o6Sonm0+W6Dcud0mNSX+lWHpTj0=; b=dqqf7TxGRNnNY5m5WEm24k1MH4RRQneTghx9vzfye1UWUzWlVPvR0bNFXBcwWkUGDG rMoiZQWz2lXsWBcMU5lT4dDaphh9J0ymZV4UiZDzYca7ki+fiqHrnvjobDY6zbI1dRqr KOMQ5mB/F6Fd2K6nntfBVm1/1Qd6RGuNYrhT9UZ/9SvZvnNxzIEUVUhAd9hecSP6csDt 5WvJDBLNihmIVja0zscc62MuU3OgK6fNvBFJ9i8DI717lXgkPKSy5XO87HwRY1lghL6v s4Xx6SZ22W7vT5XP8xBl62Cf0IZOLv6QYfv/G4dYQSTVGNl+oLGZSB6EAOaqNvebjbmc xQYQ== X-Gm-Message-State: AIVw111PoVpSyWOaIzOfQvhr+gVcBYrjejOU52yUkSuPpri/wpHGc9BB onpTesR6p1lclJkJ X-Received: by 10.107.29.76 with SMTP id d73mr1660760iod.211.1502137113030; Mon, 07 Aug 2017 13:18:33 -0700 (PDT) Received: from localhost.localdomain ([128.174.163.204]) by smtp.gmail.com with ESMTPSA id a189sm33703itd.5.2017.08.07.13.18.32 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Aug 2017 13:18:32 -0700 (PDT) From: Alex Lindsay To: gdb-patches@sourceware.org Subject: [PATCH] Fix memory leak in cp-support.c (cp_canonicalize_string) Date: Mon, 7 Aug 2017 15:18:21 -0500 Message-Id: <20170807201821.25207-1-alexlindsay239@gmail.com> X-IsSubscribed: yes Formerly, in cp_canonicalize_string in cp-support.c, the return value of cp_comp_to_string was never freed, creating a sizable memory leak detectable with valgrind. This patch fixes the leak. However, a longer term solution would be to change the return type of cp_comp_to_string to gdb::unique_xmalloc_ptr. --- gdb/ChangeLog | 5 +++++ gdb/cp-support.c | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 92c573d76b..e0c43c6185 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2017-08-07 Alex Lindsay + + * cp-support.c (cp_canonicalize_string): Free return value of + cp_comp_to_string + 2017-08-03 Tom Tromey * utils.c (make_cleanup_freeargv, do_freeargv, gdb_buildargv): diff --git a/gdb/cp-support.c b/gdb/cp-support.c index df9a563508..ffbfd62ee0 100644 --- a/gdb/cp-support.c +++ b/gdb/cp-support.c @@ -566,7 +566,9 @@ cp_canonicalize_string (const char *string) return std::string (); estimated_len = strlen (string) * 2; - std::string ret = cp_comp_to_string (info->tree, estimated_len); + char *ret_char = cp_comp_to_string (info->tree, estimated_len); + std::string ret = ret_char; + xfree (ret_char); if (ret.empty ()) {