Fix small objcopy memory leak

Message ID Y1yxnSHLY+FeB5DQ@squeak.grove.modra.org
State Repeat Merge
Headers
Series Fix small objcopy memory leak |

Checks

Context Check Description
snail/binutils-gdb-check warning Git am fail log

Commit Message

Alan Modra Oct. 29, 2022, 4:52 a.m. UTC
  * objcopy.c (copy_archive): Free l->name.
  

Comments

Michael Tokarev Oct. 31, 2022, 9:24 a.m. UTC | #1
29.10.2022 07:52, Alan Modra via Binutils wrote:
> 	* objcopy.c (copy_archive): Free l->name.
> 
> diff --git a/binutils/objcopy.c b/binutils/objcopy.c
> index d20aaef9f4f..03350babb69 100644
> --- a/binutils/objcopy.c
> +++ b/binutils/objcopy.c
> @@ -3744,6 +3744,7 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target,
>   	    bfd_close (l->obfd);
>   	    unlink (l->name);
>   	  }
> +	free ((char *) l->name);

btw, why you cast it to char* ?

Thanks,

/mjt
  
Alan Modra Oct. 31, 2022, 10:18 a.m. UTC | #2
On Mon, Oct 31, 2022 at 12:24:21PM +0300, Michael Tokarev wrote:
> 29.10.2022 07:52, Alan Modra via Binutils wrote:
> > 	* objcopy.c (copy_archive): Free l->name.
> > 
> > diff --git a/binutils/objcopy.c b/binutils/objcopy.c
> > index d20aaef9f4f..03350babb69 100644
> > --- a/binutils/objcopy.c
> > +++ b/binutils/objcopy.c
> > @@ -3744,6 +3744,7 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target,
> >   	    bfd_close (l->obfd);
> >   	    unlink (l->name);
> >   	  }
> > +	free ((char *) l->name);
> 
> btw, why you cast it to char* ?

To explicitly remove the const qualifier.  Otherwise we hit a
-Wdiscarded-qualifiers warning when l->name, a const char*, is
implicitly cast to void* by the free() prototype.
  

Patch

diff --git a/binutils/objcopy.c b/binutils/objcopy.c
index d20aaef9f4f..03350babb69 100644
--- a/binutils/objcopy.c
+++ b/binutils/objcopy.c
@@ -3744,6 +3744,7 @@  copy_archive (bfd *ibfd, bfd *obfd, const char *output_target,
 	    bfd_close (l->obfd);
 	    unlink (l->name);
 	  }
+	free ((char *) l->name);
 	next = l->next;
 	free (l);
       }