changeset 5026:89b909b9feb3

(read_utmp) [UTMP_NAME_FUNCTION]: Upon realloc failure, don't leak memory and do call END_UTMP_ENT.
author Jim Meyering <jim@meyering.net>
date Mon, 19 Apr 2004 20:12:23 +0000
parents fb8fedbb2357
children 0283c5c6bf74
files lib/readutmp.c
diffstat 1 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lib/readutmp.c
+++ b/lib/readutmp.c
@@ -1,5 +1,5 @@
 /* GNU's read utmp module.
-   Copyright (C) 1992-2001, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1992-2001, 2003, 2004 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -74,10 +74,16 @@
   n_read = 0;
   while ((u = GET_UTMP_ENT ()) != NULL)
     {
+      STRUCT_UTMP *p;
       ++n_read;
-      utmp = (STRUCT_UTMP *) realloc (utmp, n_read * sizeof (STRUCT_UTMP));
-      if (utmp == NULL)
-	return 1;
+      p = (STRUCT_UTMP *) realloc (utmp, n_read * sizeof (STRUCT_UTMP));
+      if (p == NULL)
+	{
+	  free (utmp);
+	  END_UTMP_ENT ();
+	  return 1;
+	}
+      utmp = p;
       utmp[n_read - 1] = *u;
     }