Module Name: src Committed By: bouyer Date: Wed Jun 17 20:20:54 UTC 2009
Modified Files: src/sys/kern [netbsd-5]: subr_kobj.c Log Message: Pull up following revision(s) (requested by rmind in ticket #809): sys/kern/subr_kobj.c: revision 1.35 Fix a crash observed when trying to load a corrupted ELF image. To generate a diff of this commit: cvs rdiff -u -r1.24.4.1 -r1.24.4.2 src/sys/kern/subr_kobj.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/subr_kobj.c diff -u src/sys/kern/subr_kobj.c:1.24.4.1 src/sys/kern/subr_kobj.c:1.24.4.2 --- src/sys/kern/subr_kobj.c:1.24.4.1 Mon Feb 2 02:27:22 2009 +++ src/sys/kern/subr_kobj.c Wed Jun 17 20:20:54 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_kobj.c,v 1.24.4.1 2009/02/02 02:27:22 snj Exp $ */ +/* $NetBSD: subr_kobj.c,v 1.24.4.2 2009/06/17 20:20:54 bouyer Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -62,7 +62,7 @@ #include "opt_modular.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: subr_kobj.c,v 1.24.4.1 2009/02/02 02:27:22 snj Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_kobj.c,v 1.24.4.2 2009/06/17 20:20:54 bouyer Exp $"); #define ELFSIZE ARCH_ELFSIZE @@ -803,25 +803,25 @@ { int i; - for (i = 0; i < ko->ko_nrel; i++) { - if (ko->ko_reltab[i].rel) { - kobj_free(ko, ko->ko_reltab[i].rel, - ko->ko_reltab[i].size); - } - } - for (i = 0; i < ko->ko_nrela; i++) { - if (ko->ko_relatab[i].rela) { - kobj_free(ko, ko->ko_relatab[i].rela, - ko->ko_relatab[i].size); - } - } if (ko->ko_reltab != NULL) { + for (i = 0; i < ko->ko_nrel; i++) { + if (ko->ko_reltab[i].rel) { + kobj_free(ko, ko->ko_reltab[i].rel, + ko->ko_reltab[i].size); + } + } kobj_free(ko, ko->ko_reltab, ko->ko_nrel * sizeof(*ko->ko_reltab)); ko->ko_reltab = NULL; ko->ko_nrel = 0; } if (ko->ko_relatab != NULL) { + for (i = 0; i < ko->ko_nrela; i++) { + if (ko->ko_relatab[i].rela) { + kobj_free(ko, ko->ko_relatab[i].rela, + ko->ko_relatab[i].size); + } + } kobj_free(ko, ko->ko_relatab, ko->ko_nrela * sizeof(*ko->ko_relatab)); ko->ko_relatab = NULL;