diff options
author | Gary Benson <gbenson@redhat.com> | 2018-10-11 10:19:26 +0100 |
---|---|---|
committer | Gary Benson <gbenson@redhat.com> | 2018-10-11 10:19:26 +0100 |
commit | fbe61a3661b083a666e6550b3b0c2de364e6d4a6 (patch) | |
tree | 081ad1be61ca54cdef6de1de3641afb91062c86a | |
parent | a9597defaf39e2277c4c5ff510e708f226f54fbc (diff) | |
download | binutils-fbe61a3661b083a666e6550b3b0c2de364e6d4a6.zip binutils-fbe61a3661b083a666e6550b3b0c2de364e6d4a6.tar.gz binutils-fbe61a3661b083a666e6550b3b0c2de364e6d4a6.tar.bz2 |
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.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/interps.c | 4 | ||||
-rw-r--r-- | gdb/interps.h | 4 |
3 files changed, 11 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e28b464..b3cc646 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2018-10-11 Gary Benson <gbenson@redhat.com> + + * interps.h (interp::m_name): Make private and mutable. + * interps.c (interp::~interp): Free m_name. + 2018-10-10 Sergio Durigan Junior <sergiodj@redhat.com> Simon Marchi <simark@simark.ca> diff --git a/gdb/interps.c b/gdb/interps.c index 6fe4c74..883e042 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 74c9a80..dbf91f1 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? */ |