argp: avoid memory leak
authorEric Blake <ebb9@byu.net>
Thu, 29 Oct 2009 19:38:52 +0000 (13:38 -0600)
committerEric Blake <ebb9@byu.net>
Fri, 30 Oct 2009 00:39:36 +0000 (18:39 -0600)
argp has been leaking memory since commit 79c0a43, in Jul 2006.

* modules/argp (Depends-on): Use dirname-lgpl, not dirname.
* lib/argp-namefrob.h (__argp_base_name): Use last_component, not
base_name, since the latter malloc()s and can call exit().

Signed-off-by: Eric Blake <ebb9@byu.net>
ChangeLog
lib/argp-namefrob.h
modules/argp

index 73d4a06..47c75be 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2009-10-29  Eric Blake  <ebb9@byu.net>
 
+       argp: avoid memory leak
+       * modules/argp (Depends-on): Use dirname-lgpl, not dirname.
+       * lib/argp-namefrob.h (__argp_base_name): Use last_component, not
+       base_name, since the latter malloc()s and can call exit().
+       Leak introduced 2006-07-03.
+
        dirname-lgpl: adjust clients that don't need full dirname
        * modules/backupfile (Depends-on): Use dirname-lgpl, not dirname.
        * modules/filenamecat (Depends-on): Likewise.
index fcb082a..7b7b173 100644 (file)
@@ -1,5 +1,5 @@
 /* Name frobnication for compiling argp outside of glibc
-   Copyright (C) 1997, 2003, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2003, 2007, 2009 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written by Miles Bader <miles@gnu.ai.mit.edu>.
 
 extern char *__argp_base_name(const char *arg);
 #else
 # include "dirname.h"
-# define __argp_base_name base_name
+# define __argp_base_name last_component
 #endif
 
 #if defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
index e772b3e..bb10844 100644 (file)
@@ -24,7 +24,7 @@ m4/argp.m4
 
 Depends-on:
 alloca
-dirname
+dirname-lgpl
 getopt-gnu
 strchrnul
 sysexits