From fbe61a3661b083a666e6550b3b0c2de364e6d4a6 Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Thu, 11 Oct 2018 10:19:26 +0100 Subject: [PATCH] Fix interp::m_name resource leak found by Coverity This commit fixes a resource leak found by Coverity, where interp's constructor allocated memory for m_name that interp's destructor did not free. gdb/ChangeLog: * interps.h (interp::m_name): Make private and mutable. * interps.c (interp::~interp): Free m_name. --- gdb/ChangeLog | 5 +++++ gdb/interps.c | 4 +++- gdb/interps.h | 4 +++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e28b464f207..b3cc64659fe 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2018-10-11 Gary Benson + + * interps.h (interp::m_name): Make private and mutable. + * interps.c (interp::~interp): Free m_name. + 2018-10-10 Sergio Durigan Junior Simon Marchi diff --git a/gdb/interps.c b/gdb/interps.c index 6fe4c74e938..883e0426a31 100644 --- a/gdb/interps.c +++ b/gdb/interps.c @@ -84,7 +84,9 @@ interp::interp (const char *name) } interp::~interp () -{} +{ + xfree (m_name); +} /* An interpreter factory. Maps an interpreter name to the factory function that instantiates an interpreter by that name. */ diff --git a/gdb/interps.h b/gdb/interps.h index 74c9a80918c..dbf91f18e83 100644 --- a/gdb/interps.h +++ b/gdb/interps.h @@ -80,10 +80,12 @@ public: } /* This is the name in "-i=" and "set interpreter". */ - const char *m_name; +private: + char *m_name; /* Interpreters are stored in a linked list, this is the next one... */ +public: struct interp *next; /* Has the init method been run? */ -- 2.30.2