# HG changeset patch # User Jim Meyering # Date 1082405543 0 # Node ID 89b909b9feb3bb0c033f1294f6387ef5ca722aa3 # Parent fb8fedbb235782ef20870f90d1cc6eda99c3a4dd (read_utmp) [UTMP_NAME_FUNCTION]: Upon realloc failure, don't leak memory and do call END_UTMP_ENT. diff --git a/lib/readutmp.c b/lib/readutmp.c --- 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; }