Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Apr 2010 18:16:14 -0700
From:      Alfred Perlstein <alfred@freebsd.org>
To:        current@freebsd.org
Subject:   fix for compressed coredumps, please review
Message-ID:  <20100417011614.GR54028@elvis.mu.org>

next in thread | raw e-mail | index | archive | help
Can I get a review for this?  

summary:
If doing compressed cores and there is an error, we leak
resources unless this is fixed.


Index: imgact_elf.c
===================================================================
--- imgact_elf.c	(revision 206498)
+++ imgact_elf.c	(working copy)
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/sys/kern/imgact_elf.c 205643 2010-03-25 14:31:26Z nwhitehorn $");
 
 #include "opt_compat.h"
 #include "opt_core.h"
@@ -1088,8 +1088,10 @@
 	hdrsize = 0;
 	__elfN(puthdr)(td, (void *)NULL, &hdrsize, seginfo.count);
 
-	if (hdrsize + seginfo.size >= limit)
-		return (EFAULT);
+	if (hdrsize + seginfo.size >= limit) {
+		error = EFAULT;
+		goto done;
+	}
 
 	/*
 	 * Allocate memory for building the header, fill it up,
@@ -1097,7 +1099,8 @@
 	 */
 	hdr = malloc(hdrsize, M_TEMP, M_WAITOK);
 	if (hdr == NULL) {
-		return (EINVAL);
+		error = EINVAL;
+		goto done;
 	}
 	error = __elfN(corehdr)(td, vp, cred, seginfo.count, hdr, hdrsize,
 	    gzfile);
@@ -1125,8 +1128,8 @@
 		    curproc->p_comm, error);
 	}
 
+done:
 #ifdef COMPRESS_USER_CORES
-done:
 	if (core_buf)
 		free(core_buf, M_TEMP);
 	if (gzfile)
-- 
- Alfred Perlstein
.- AMA, VMOA #5191, 03 vmax, 92 gs500, 85 ch250
.- FreeBSD committer



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100417011614.GR54028>