From cb5f6b9ad36cc18020d5fec9d533101a1b370592 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Mon, 19 Apr 2004 18:59:52 +0000 Subject: (read_utmp) [UTMP_NAME_FUNCTION]: Upon realloc failure, don't leak memory and do call END_UTMP_ENT. --- lib/readutmp.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/readutmp.c b/lib/readutmp.c index 71a913df0..896e976dc 100644 --- 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 @@ read_utmp (const char *filename, int *n_entries, STRUCT_UTMP **utmp_buf) 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; } -- cgit v1.2.3-70-g09d2