Module Name: src Committed By: snj Date: Thu Apr 23 02:03:55 UTC 2009
Modified Files: src/lib/libedit [netbsd-3]: term.c Log Message: Apply patch (requested by msaitoh in ticket #2007): Coverity CID 1668: Plug memory leak when malloc() failed. To generate a diff of this commit: cvs rdiff -u -r1.40 -r1.40.2.1 src/lib/libedit/term.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libedit/term.c diff -u src/lib/libedit/term.c:1.40 src/lib/libedit/term.c:1.40.2.1 --- src/lib/libedit/term.c:1.40 Sat May 22 23:21:28 2004 +++ src/lib/libedit/term.c Thu Apr 23 02:03:55 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: term.c,v 1.40 2004/05/22 23:21:28 christos Exp $ */ +/* $NetBSD: term.c,v 1.40.2.1 2009/04/23 02:03:55 snj Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -37,7 +37,7 @@ #if 0 static char sccsid[] = "@(#)term.c 8.2 (Berkeley) 4/30/95"; #else -__RCSID("$NetBSD: term.c,v 1.40 2004/05/22 23:21:28 christos Exp $"); +__RCSID("$NetBSD: term.c,v 1.40.2.1 2009/04/23 02:03:55 snj Exp $"); #endif #endif /* not lint && not SCCSID */ @@ -472,8 +472,12 @@ return (-1); for (i = 0; i < c->v; i++) { b[i] = (char *) el_malloc((size_t) (sizeof(char) * (c->h + 1))); - if (b[i] == NULL) + if (b[i] == NULL) { + while (--i >= 0) + el_free((ptr_t) b[i]); + el_free((ptr_t) b); return (-1); + } } b[c->v] = NULL; el->el_display = b; @@ -483,8 +487,12 @@ return (-1); for (i = 0; i < c->v; i++) { b[i] = (char *) el_malloc((size_t) (sizeof(char) * (c->h + 1))); - if (b[i] == NULL) + if (b[i] == NULL) { + while (--i >= 0) + el_free((ptr_t) b[i]); + el_free((ptr_t) b); return (-1); + } } b[c->v] = NULL; el->el_vdisplay = b;