summaryrefslogtreecommitdiff
path: root/binutils/ieee.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2011-03-25 17:22:15 +0000
committerNick Clifton <nickc@redhat.com>2011-03-25 17:22:15 +0000
commitacd3367ac59ef164d4efd246e49c81a4973d6f7c (patch)
treeb71b38b01014175343133935c830f33d05d2045c /binutils/ieee.c
parent2c584a89ee184044dfb5ac5bb554f8ad9038cf1a (diff)
downloadbinutils-redhat-acd3367ac59ef164d4efd246e49c81a4973d6f7c.tar.gz
* ieee.c (ieee_add_bb11): Plug memory leak.
(ieee_function_type): Likewise. (ieee_class_baseclass): Likewise.
Diffstat (limited to 'binutils/ieee.c')
-rw-r--r--binutils/ieee.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/binutils/ieee.c b/binutils/ieee.c
index c8460dc765..044da313dd 100644
--- a/binutils/ieee.c
+++ b/binutils/ieee.c
@@ -1,6 +1,6 @@
/* ieee.c -- Read and write IEEE-695 debugging information.
Copyright 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>.
This file is part of GNU Binutils.
@@ -5125,7 +5125,10 @@ ieee_add_bb11 (struct ieee_handle *info, asection *sec, bfd_vma low,
|| ! ieee_write_id (info, "")
|| ! ieee_write_number (info, 0)
|| ! ieee_write_id (info, "GNU objcopy"))
- return FALSE;
+ {
+ free (c);
+ return FALSE;
+ }
free (c);
}
@@ -5529,7 +5532,10 @@ ieee_function_type (void *p, int argcount, bfd_boolean varargs)
|| ! ieee_write_number (info, 0)
|| ! ieee_write_number (info, retindx)
|| ! ieee_write_number (info, (bfd_vma) argcount + (varargs ? 1 : 0)))
- return FALSE;
+ {
+ free (args);
+ return FALSE;
+ }
if (argcount > 0)
{
for (i = 0; i < argcount; i++)
@@ -6235,7 +6241,10 @@ ieee_class_baseclass (void *p, bfd_vma bitpos, bfd_boolean is_virtual,
|| ! ieee_write_id (info, fname)
|| ! ieee_write_number (info, bindx)
|| ! ieee_write_number (info, bitpos / 8))
- return FALSE;
+ {
+ free (fname);
+ return FALSE;
+ }
flags = 0;
}
@@ -6250,7 +6259,10 @@ ieee_class_baseclass (void *p, bfd_vma bitpos, bfd_boolean is_virtual,
|| ! ieee_write_atn65 (info, nindx, bname)
|| ! ieee_write_asn (info, nindx, 0)
|| ! ieee_write_atn65 (info, nindx, fname))
- return FALSE;
+ {
+ free (fname);
+ return FALSE;
+ }
info->type_stack->type.classdef->pmisccount += 5;
free (fname);