From nobody@FreeBSD.org  Thu Mar 11 06:31:37 2010
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 9092A106566B
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 11 Mar 2010 06:31:37 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id 7FD618FC15
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 11 Mar 2010 06:31:37 +0000 (UTC)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.3/8.14.3) with ESMTP id o2B6Vb91051182
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 11 Mar 2010 06:31:37 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.3/8.14.3/Submit) id o2B6Vb4W051181;
	Thu, 11 Mar 2010 06:31:37 GMT
	(envelope-from nobody)
Message-Id: <201003110631.o2B6Vb4W051181@www.freebsd.org>
Date: Thu, 11 Mar 2010 06:31:37 GMT
From: Garrett Cooper <yaneurabeya@gmail.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [patch] Fix *alloc cornercases with config(1)
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         144644
>Category:       bin
>Synopsis:       [patch] Fix *alloc cornercases with config(1)
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Mar 11 06:40:01 UTC 2010
>Closed-Date:    Tue Mar 30 13:48:31 UTC 2010
>Last-Modified:  Sun Feb 03 22:28:15 UTC 2013
>Originator:     Garrett Cooper
>Release:        9-CURRENT
>Organization:
Cisco Systems, Inc.
>Environment:
FreeBSD bayonetta.localdomain 9.0-CURRENT FreeBSD 9.0-CURRENT #2: Thu Mar  4 13:16:39 PST 2010     gcooper@bayonetta.localdomain:/usr/obj/usr/src/sys/BAYONETTA  amd64
>Description:
There are a number of corner cases that aren't properly dealt with in config(1) when memory allocations fail.

There may be issues with memory leaks in config(1), but this is outside of the scope of this patch.
>How-To-Repeat:

>Fix:
See attached patch.

Patch attached with submission follows:

Index: mkoptions.c
===================================================================
--- mkoptions.c	(revision 204996)
+++ mkoptions.c	(working copy)
@@ -70,6 +70,9 @@
 	/* Fake the cpu types as options. */
 	SLIST_FOREACH(cp, &cputype, cpu_next) {
 		op = (struct opt *)calloc(1, sizeof(*op));
+		if (op == NULL) {
+			errx(EXIT_FAILURE, "calloc");
+		}
 		op->op_name = ns(cp->cpu_name);
 		SLIST_INSERT_HEAD(&opt, op, op_next);
 	}	
@@ -84,6 +87,9 @@
 
 	/* Fake MAXUSERS as an option. */
 	op = (struct opt *)calloc(1, sizeof(*op));
+	if (op == NULL) {
+		errx(EXIT_FAILURE, "calloc");
+	}
 	op->op_name = ns("MAXUSERS");
 	snprintf(buf, sizeof(buf), "%d", maxusers);
 	op->op_value = ns(buf);
@@ -199,6 +205,9 @@
 			tidy++;
 		} else {
 			op = (struct opt *) calloc(1, sizeof *op);
+			if (op == NULL) {
+				errx(EXIT_FAILURE, "calloc");
+			}
 			op->op_name = inw;
 			op->op_value = invalue;
 			SLIST_INSERT_HEAD(&op_head, op, op_next);
@@ -225,6 +234,9 @@
 	if (value && !seen) {
 		/* New option appears */
 		op = (struct opt *) calloc(1, sizeof *op);
+		if (op == NULL) {
+			errx(EXIT_FAILURE, "calloc");
+		}
 		op->op_name = ns(name);
 		op->op_value = value ? ns(value) : NULL;
 		SLIST_INSERT_HEAD(&op_head, op, op_next);
@@ -336,6 +348,9 @@
 	}
 	
 	po = (struct opt_list *) calloc(1, sizeof *po);
+	if (po == NULL) {
+		errx(EXIT_FAILURE, "calloc");
+	}
 	po->o_name = this;
 	po->o_file = val;
 	SLIST_INSERT_HEAD(&otab, po, o_next);
Index: main.c
===================================================================
--- main.c	(revision 204996)
+++ main.c	(working copy)
@@ -120,7 +120,7 @@
 			if (*destdir == '\0')
 				strlcpy(destdir, optarg, sizeof(destdir));
 			else
-				errx(2, "directory already set");
+				errx(EXIT_FAILURE, "directory already set");
 			break;
 		case 'g':
 			debugging++;
@@ -175,7 +175,7 @@
 		if (mkdir(p, 0777))
 			err(2, "%s", p);
 	} else if (!S_ISDIR(buf.st_mode))
-		errx(2, "%s isn't a directory", p);
+		errx(EXIT_FAILURE, "%s isn't a directory", p);
 
 	SLIST_INIT(&cputype);
 	SLIST_INIT(&mkopt);
@@ -256,7 +256,7 @@
 	int i;
 
 	if (realpath("../..", srcdir) == NULL)
-		errx(2, "Unable to find root of source tree");
+		errx(EXIT_FAILURE, "Unable to find root of source tree");
 	if ((pwd = getenv("PWD")) != NULL && *pwd == '/' &&
 	    (pwd = strdup(pwd)) != NULL) {
 		/* Remove the last two path components. */
@@ -650,6 +650,9 @@
 		}
 	}
 	hl = calloc(1, sizeof(*hl));
+	if (hl == NULL) {
+		errx(EXIT_FAILURE, "calloc");
+	}
 	hl->h_name = s;
 	hl->h_next = htab;
 	htab = hl;
Index: mkmakefile.c
===================================================================
--- mkmakefile.c	(revision 204996)
+++ mkmakefile.c	(working copy)
@@ -98,6 +98,9 @@
 	struct file_list *fp;
 
 	fp = (struct file_list *) calloc(1, sizeof *fp);
+	if (fp == NULL) {
+		errx(EXIT_FAILURE, "calloc");
+	}
 	STAILQ_INSERT_TAIL(&ftab, fp, f_next);
 	return (fp);
 }
Index: lang.l
===================================================================
--- lang.l	(revision 204996)
+++ lang.l	(working copy)
@@ -31,6 +31,7 @@
  * $FreeBSD$
  */
 
+#include <err.h>
 #include <assert.h>
 #include <ctype.h>
 #include <string.h>
@@ -220,6 +221,9 @@
 	struct cfgfile *cf;
 
 	cf = calloc(1, sizeof(*cf));
+	if (cf == NULL) {
+		errx(EXIT_FAILURE, "calloc");
+	}
 	assert(cf != NULL);
 	asprintf(&cf->cfg_path, "%s", fname);
 	STAILQ_INSERT_TAIL(&cfgfiles, cf, cfg_next);
Index: config.y
===================================================================
--- config.y	(revision 204996)
+++ config.y	(working copy)
@@ -166,6 +166,9 @@
 	CPU Save_id {
 		struct cputype *cp =
 		    (struct cputype *)calloc(1, sizeof (struct cputype));
+		if (cp == NULL) {
+			errx(EXIT_FAILURE, "calloc");
+		}
 		cp->cpu_name = $2;
 		SLIST_INSERT_HEAD(&cputype, cp, cpu_next);
 	      } |
@@ -197,6 +200,9 @@
 		struct hint *hint;
 
 		hint = (struct hint *)calloc(1, sizeof (struct hint));
+		if (hint == NULL) {
+			errx(EXIT_FAILURE, "calloc");	
+		}
 		hint->hint_name = $2;
 		STAILQ_INSERT_TAIL(&hints, hint, hint_next);
 		hintmode = 1;
@@ -331,6 +337,9 @@
 	struct files_name *nl;
 	
 	nl = (struct files_name *) calloc(1, sizeof *nl);
+	if (nl == NULL) {
+		errx(EXIT_FAILURE, "calloc");
+	}
 	nl->f_name = name;
 	STAILQ_INSERT_TAIL(&fntab, nl, f_next);
 }
@@ -364,6 +373,9 @@
 	}
 
 	np = (struct device *) calloc(1, sizeof *np);
+	if (np == NULL) {
+		errx(EXIT_FAILURE, "calloc");
+	}
 	np->d_name = name;
 	STAILQ_INSERT_TAIL(&dtab, np, d_next);
 }
@@ -422,6 +434,9 @@
 	}
 
 	op = (struct opt *)calloc(1, sizeof (struct opt));
+	if (op == NULL) {
+		errx(EXIT_FAILURE, "calloc");
+	}
 	op->op_name = name;
 	op->op_ownfile = 0;
 	op->op_value = value;


>Release-Note:
>Audit-Trail:

From: Garrett Cooper <yaneurabeya@gmail.com>
To: bug-followup@freebsd.org, gcooper@freebsd.org
Cc:  
Subject: Re: bin/144644: [patch] Fix *alloc cornercases with config(1)
Date: Fri, 12 Mar 2010 23:28:22 -0800

 --00504501598bbff07b0481a99781
 Content-Type: text/plain; charset=ISO-8859-1
 
     The attached patch addresses the non-style(9) conformity with my
 previous patch as pointed out by several folks on current@.
 Thanks,
 -Garrett
 
 --00504501598bbff07b0481a99781
 Content-Type: text/plain; charset=US-ASCII; name="config-failure-corner-cases.diff.txt"
 Content-Disposition: attachment; 
 	filename="config-failure-corner-cases.diff.txt"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_g6q3h2070
 
 SW5kZXg6IG1rb3B0aW9ucy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1rb3B0aW9ucy5jCShyZXZpc2lvbiAy
 MDUxMTUpCisrKyBta29wdGlvbnMuYwkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOCBAQAog
 CS8qIEZha2UgdGhlIGNwdSB0eXBlcyBhcyBvcHRpb25zLiAqLwogCVNMSVNUX0ZPUkVBQ0goY3As
 ICZjcHV0eXBlLCBjcHVfbmV4dCkgewogCQlvcCA9IChzdHJ1Y3Qgb3B0ICopY2FsbG9jKDEsIHNp
 emVvZigqb3ApKTsKKwkJaWYgKG9wID09IE5VTEwpCisJCQllcnJ4KEVYSVRfRkFJTFVSRSwgImNh
 bGxvYyIpOwogCQlvcC0+b3BfbmFtZSA9IG5zKGNwLT5jcHVfbmFtZSk7CiAJCVNMSVNUX0lOU0VS
 VF9IRUFEKCZvcHQsIG9wLCBvcF9uZXh0KTsKIAl9CQpAQCAtODQsNiArODYsOCBAQAogCiAJLyog
 RmFrZSBNQVhVU0VSUyBhcyBhbiBvcHRpb24uICovCiAJb3AgPSAoc3RydWN0IG9wdCAqKWNhbGxv
 YygxLCBzaXplb2YoKm9wKSk7CisJaWYgKG9wID09IE5VTEwpCisJCWVycngoRVhJVF9GQUlMVVJF
 LCAiY2FsbG9jIik7CiAJb3AtPm9wX25hbWUgPSBucygiTUFYVVNFUlMiKTsKIAlzbnByaW50Zihi
 dWYsIHNpemVvZihidWYpLCAiJWQiLCBtYXh1c2Vycyk7CiAJb3AtPm9wX3ZhbHVlID0gbnMoYnVm
 KTsKQEAgLTE5OSw2ICsyMDMsOCBAQAogCQkJdGlkeSsrOwogCQl9IGVsc2UgewogCQkJb3AgPSAo
 c3RydWN0IG9wdCAqKSBjYWxsb2MoMSwgc2l6ZW9mICpvcCk7CisJCQlpZiAob3AgPT0gTlVMTCkK
 KwkJCQllcnJ4KEVYSVRfRkFJTFVSRSwgImNhbGxvYyIpOwogCQkJb3AtPm9wX25hbWUgPSBpbnc7
 CiAJCQlvcC0+b3BfdmFsdWUgPSBpbnZhbHVlOwogCQkJU0xJU1RfSU5TRVJUX0hFQUQoJm9wX2hl
 YWQsIG9wLCBvcF9uZXh0KTsKQEAgLTIyNSw2ICsyMzEsOCBAQAogCWlmICh2YWx1ZSAmJiAhc2Vl
 bikgewogCQkvKiBOZXcgb3B0aW9uIGFwcGVhcnMgKi8KIAkJb3AgPSAoc3RydWN0IG9wdCAqKSBj
 YWxsb2MoMSwgc2l6ZW9mICpvcCk7CisJCWlmIChvcCA9PSBOVUxMKQorCQkJZXJyeChFWElUX0ZB
 SUxVUkUsICJjYWxsb2MiKTsKIAkJb3AtPm9wX25hbWUgPSBucyhuYW1lKTsKIAkJb3AtPm9wX3Zh
 bHVlID0gdmFsdWUgPyBucyh2YWx1ZSkgOiBOVUxMOwogCQlTTElTVF9JTlNFUlRfSEVBRCgmb3Bf
 aGVhZCwgb3AsIG9wX25leHQpOwpAQCAtMzM2LDYgKzM0NCw4IEBACiAJfQogCQogCXBvID0gKHN0
 cnVjdCBvcHRfbGlzdCAqKSBjYWxsb2MoMSwgc2l6ZW9mICpwbyk7CisJaWYgKHBvID09IE5VTEwp
 CisJCWVycngoRVhJVF9GQUlMVVJFLCAiY2FsbG9jIik7CiAJcG8tPm9fbmFtZSA9IHRoaXM7CiAJ
 cG8tPm9fZmlsZSA9IHZhbDsKIAlTTElTVF9JTlNFUlRfSEVBRCgmb3RhYiwgcG8sIG9fbmV4dCk7
 CkluZGV4OiBtYWluLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbWFpbi5jCShyZXZpc2lvbiAyMDUxMTUpCisr
 KyBtYWluLmMJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQAogCQkJaWYgKCpkZXN0
 ZGlyID09ICdcMCcpCiAJCQkJc3RybGNweShkZXN0ZGlyLCBvcHRhcmcsIHNpemVvZihkZXN0ZGly
 KSk7CiAJCQllbHNlCi0JCQkJZXJyeCgyLCAiZGlyZWN0b3J5IGFscmVhZHkgc2V0Iik7CisJCQkJ
 ZXJyeChFWElUX0ZBSUxVUkUsICJkaXJlY3RvcnkgYWxyZWFkeSBzZXQiKTsKIAkJCWJyZWFrOwog
 CQljYXNlICdnJzoKIAkJCWRlYnVnZ2luZysrOwpAQCAtMTc1LDcgKzE3NSw3IEBACiAJCWlmICht
 a2RpcihwLCAwNzc3KSkKIAkJCWVycigyLCAiJXMiLCBwKTsKIAl9IGVsc2UgaWYgKCFTX0lTRElS
 KGJ1Zi5zdF9tb2RlKSkKLQkJZXJyeCgyLCAiJXMgaXNuJ3QgYSBkaXJlY3RvcnkiLCBwKTsKKwkJ
 ZXJyeChFWElUX0ZBSUxVUkUsICIlcyBpc24ndCBhIGRpcmVjdG9yeSIsIHApOwogCiAJU0xJU1Rf
 SU5JVCgmY3B1dHlwZSk7CiAJU0xJU1RfSU5JVCgmbWtvcHQpOwpAQCAtMjU2LDcgKzI1Niw3IEBA
 CiAJaW50IGk7CiAKIAlpZiAocmVhbHBhdGgoIi4uLy4uIiwgc3JjZGlyKSA9PSBOVUxMKQotCQll
 cnJ4KDIsICJVbmFibGUgdG8gZmluZCByb290IG9mIHNvdXJjZSB0cmVlIik7CisJCWVycngoRVhJ
 VF9GQUlMVVJFLCAiVW5hYmxlIHRvIGZpbmQgcm9vdCBvZiBzb3VyY2UgdHJlZSIpOwogCWlmICgo
 cHdkID0gZ2V0ZW52KCJQV0QiKSkgIT0gTlVMTCAmJiAqcHdkID09ICcvJyAmJgogCSAgICAocHdk
 ID0gc3RyZHVwKHB3ZCkpICE9IE5VTEwpIHsKIAkJLyogUmVtb3ZlIHRoZSBsYXN0IHR3byBwYXRo
 IGNvbXBvbmVudHMuICovCkBAIC02NTAsNiArNjUwLDggQEAKIAkJfQogCX0KIAlobCA9IGNhbGxv
 YygxLCBzaXplb2YoKmhsKSk7CisJaWYgKGhsID09IE5VTEwpCisJCWVycngoRVhJVF9GQUlMVVJF
 LCAiY2FsbG9jIik7CiAJaGwtPmhfbmFtZSA9IHM7CiAJaGwtPmhfbmV4dCA9IGh0YWI7CiAJaHRh
 YiA9IGhsOwpJbmRleDogbWttYWtlZmlsZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1rbWFrZWZpbGUuYwko
 cmV2aXNpb24gMjA1MTE1KQorKysgbWttYWtlZmlsZS5jCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2
 ICs5OCw4IEBACiAJc3RydWN0IGZpbGVfbGlzdCAqZnA7CiAKIAlmcCA9IChzdHJ1Y3QgZmlsZV9s
 aXN0ICopIGNhbGxvYygxLCBzaXplb2YgKmZwKTsKKwlpZiAoZnAgPT0gTlVMTCkKKwkJZXJyeChF
 WElUX0ZBSUxVUkUsICJjYWxsb2MiKTsKIAlTVEFJTFFfSU5TRVJUX1RBSUwoJmZ0YWIsIGZwLCBm
 X25leHQpOwogCXJldHVybiAoZnApOwogfQpJbmRleDogbGFuZy5sCj09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxh
 bmcubAkocmV2aXNpb24gMjA1MTE1KQorKysgbGFuZy5sCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
 ICszMSw3IEBACiAgKiAkRnJlZUJTRCQKICAqLwogCisjaW5jbHVkZSA8ZXJyLmg+CiAjaW5jbHVk
 ZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAg
 LTIyMCw2ICsyMjEsOSBAQAogCXN0cnVjdCBjZmdmaWxlICpjZjsKIAogCWNmID0gY2FsbG9jKDEs
 IHNpemVvZigqY2YpKTsKKwlpZiAoY2YgPT0gTlVMTCkgeworCQllcnJ4KEVYSVRfRkFJTFVSRSwg
 ImNhbGxvYyIpOworCX0KIAlhc3NlcnQoY2YgIT0gTlVMTCk7CiAJYXNwcmludGYoJmNmLT5jZmdf
 cGF0aCwgIiVzIiwgZm5hbWUpOwogCVNUQUlMUV9JTlNFUlRfVEFJTCgmY2ZnZmlsZXMsIGNmLCBj
 ZmdfbmV4dCk7CkluZGV4OiBjb25maWcueQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb25maWcueQkocmV2aXNp
 b24gMjA1MTE1KQorKysgY29uZmlnLnkJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw2ICsxNjYsOCBA
 QAogCUNQVSBTYXZlX2lkIHsKIAkJc3RydWN0IGNwdXR5cGUgKmNwID0KIAkJICAgIChzdHJ1Y3Qg
 Y3B1dHlwZSAqKWNhbGxvYygxLCBzaXplb2YgKHN0cnVjdCBjcHV0eXBlKSk7CisJCWlmIChjcCA9
 PSBOVUxMKQorCQkJZXJyeChFWElUX0ZBSUxVUkUsICJjYWxsb2MiKTsKIAkJY3AtPmNwdV9uYW1l
 ID0gJDI7CiAJCVNMSVNUX0lOU0VSVF9IRUFEKCZjcHV0eXBlLCBjcCwgY3B1X25leHQpOwogCSAg
 ICAgIH0gfApAQCAtMTk3LDYgKzE5OSw4IEBACiAJCXN0cnVjdCBoaW50ICpoaW50OwogCiAJCWhp
 bnQgPSAoc3RydWN0IGhpbnQgKiljYWxsb2MoMSwgc2l6ZW9mIChzdHJ1Y3QgaGludCkpOworCQlp
 ZiAoaGludCA9PSBOVUxMKQorCQkJZXJyeChFWElUX0ZBSUxVUkUsICJjYWxsb2MiKTsJCiAJCWhp
 bnQtPmhpbnRfbmFtZSA9ICQyOwogCQlTVEFJTFFfSU5TRVJUX1RBSUwoJmhpbnRzLCBoaW50LCBo
 aW50X25leHQpOwogCQloaW50bW9kZSA9IDE7CkBAIC0zMzEsNiArMzM1LDggQEAKIAlzdHJ1Y3Qg
 ZmlsZXNfbmFtZSAqbmw7CiAJCiAJbmwgPSAoc3RydWN0IGZpbGVzX25hbWUgKikgY2FsbG9jKDEs
 IHNpemVvZiAqbmwpOworCWlmIChubCA9PSBOVUxMKQorCQllcnJ4KEVYSVRfRkFJTFVSRSwgImNh
 bGxvYyIpOwogCW5sLT5mX25hbWUgPSBuYW1lOwogCVNUQUlMUV9JTlNFUlRfVEFJTCgmZm50YWIs
 IG5sLCBmX25leHQpOwogfQpAQCAtMzY0LDYgKzM3MCw4IEBACiAJfQogCiAJbnAgPSAoc3RydWN0
 IGRldmljZSAqKSBjYWxsb2MoMSwgc2l6ZW9mICpucCk7CisJaWYgKG5wID09IE5VTEwpCisJCWVy
 cngoRVhJVF9GQUlMVVJFLCAiY2FsbG9jIik7CiAJbnAtPmRfbmFtZSA9IG5hbWU7CiAJU1RBSUxR
 X0lOU0VSVF9UQUlMKCZkdGFiLCBucCwgZF9uZXh0KTsKIH0KQEAgLTQyMiw2ICs0MzAsOCBAQAog
 CX0KIAogCW9wID0gKHN0cnVjdCBvcHQgKiljYWxsb2MoMSwgc2l6ZW9mIChzdHJ1Y3Qgb3B0KSk7
 CisJaWYgKG9wID09IE5VTEwpCisJCWVycngoRVhJVF9GQUlMVVJFLCAiY2FsbG9jIik7CiAJb3At
 Pm9wX25hbWUgPSBuYW1lOwogCW9wLT5vcF9vd25maWxlID0gMDsKIAlvcC0+b3BfdmFsdWUgPSB2
 YWx1ZTsK
 --00504501598bbff07b0481a99781--

From: Garrett Cooper <yaneurabeya@gmail.com>
To: bug-followup@freebsd.org, gcooper@freebsd.org
Cc:  
Subject: Re: bin/144644: [patch] Fix *alloc cornercases with config(1)
Date: Fri, 12 Mar 2010 23:36:52 -0800

 --001636d34fdc29c6250481a9b61f
 Content-Type: text/plain; charset=ISO-8859-1
 Content-Transfer-Encoding: quoted-printable
 
 On Fri, Mar 12, 2010 at 11:28 PM, Garrett Cooper <yaneurabeya@gmail.com> wrote=
 :
 > =A0 =A0The attached patch addresses the non-style(9) conformity with my
 > previous patch as pointed out by several folks on current@.
 
 Sorry -- missed a spot...
 Thanks,
 -Garrett
 
 --001636d34fdc29c6250481a9b61f
 Content-Type: text/plain; charset=US-ASCII; name="config-failure-corner-cases.diff.txt"
 Content-Disposition: attachment; 
 	filename="config-failure-corner-cases.diff.txt"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_g6q3s32n1
 
 SW5kZXg6IG1rb3B0aW9ucy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1rb3B0aW9ucy5jCShyZXZpc2lvbiAy
 MDUxMTUpCisrKyBta29wdGlvbnMuYwkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOCBAQAog
 CS8qIEZha2UgdGhlIGNwdSB0eXBlcyBhcyBvcHRpb25zLiAqLwogCVNMSVNUX0ZPUkVBQ0goY3As
 ICZjcHV0eXBlLCBjcHVfbmV4dCkgewogCQlvcCA9IChzdHJ1Y3Qgb3B0ICopY2FsbG9jKDEsIHNp
 emVvZigqb3ApKTsKKwkJaWYgKG9wID09IE5VTEwpCisJCQllcnJ4KEVYSVRfRkFJTFVSRSwgImNh
 bGxvYyIpOwogCQlvcC0+b3BfbmFtZSA9IG5zKGNwLT5jcHVfbmFtZSk7CiAJCVNMSVNUX0lOU0VS
 VF9IRUFEKCZvcHQsIG9wLCBvcF9uZXh0KTsKIAl9CQpAQCAtODQsNiArODYsOCBAQAogCiAJLyog
 RmFrZSBNQVhVU0VSUyBhcyBhbiBvcHRpb24uICovCiAJb3AgPSAoc3RydWN0IG9wdCAqKWNhbGxv
 YygxLCBzaXplb2YoKm9wKSk7CisJaWYgKG9wID09IE5VTEwpCisJCWVycngoRVhJVF9GQUlMVVJF
 LCAiY2FsbG9jIik7CiAJb3AtPm9wX25hbWUgPSBucygiTUFYVVNFUlMiKTsKIAlzbnByaW50Zihi
 dWYsIHNpemVvZihidWYpLCAiJWQiLCBtYXh1c2Vycyk7CiAJb3AtPm9wX3ZhbHVlID0gbnMoYnVm
 KTsKQEAgLTE5OSw2ICsyMDMsOCBAQAogCQkJdGlkeSsrOwogCQl9IGVsc2UgewogCQkJb3AgPSAo
 c3RydWN0IG9wdCAqKSBjYWxsb2MoMSwgc2l6ZW9mICpvcCk7CisJCQlpZiAob3AgPT0gTlVMTCkK
 KwkJCQllcnJ4KEVYSVRfRkFJTFVSRSwgImNhbGxvYyIpOwogCQkJb3AtPm9wX25hbWUgPSBpbnc7
 CiAJCQlvcC0+b3BfdmFsdWUgPSBpbnZhbHVlOwogCQkJU0xJU1RfSU5TRVJUX0hFQUQoJm9wX2hl
 YWQsIG9wLCBvcF9uZXh0KTsKQEAgLTIyNSw2ICsyMzEsOCBAQAogCWlmICh2YWx1ZSAmJiAhc2Vl
 bikgewogCQkvKiBOZXcgb3B0aW9uIGFwcGVhcnMgKi8KIAkJb3AgPSAoc3RydWN0IG9wdCAqKSBj
 YWxsb2MoMSwgc2l6ZW9mICpvcCk7CisJCWlmIChvcCA9PSBOVUxMKQorCQkJZXJyeChFWElUX0ZB
 SUxVUkUsICJjYWxsb2MiKTsKIAkJb3AtPm9wX25hbWUgPSBucyhuYW1lKTsKIAkJb3AtPm9wX3Zh
 bHVlID0gdmFsdWUgPyBucyh2YWx1ZSkgOiBOVUxMOwogCQlTTElTVF9JTlNFUlRfSEVBRCgmb3Bf
 aGVhZCwgb3AsIG9wX25leHQpOwpAQCAtMzM2LDYgKzM0NCw4IEBACiAJfQogCQogCXBvID0gKHN0
 cnVjdCBvcHRfbGlzdCAqKSBjYWxsb2MoMSwgc2l6ZW9mICpwbyk7CisJaWYgKHBvID09IE5VTEwp
 CisJCWVycngoRVhJVF9GQUlMVVJFLCAiY2FsbG9jIik7CiAJcG8tPm9fbmFtZSA9IHRoaXM7CiAJ
 cG8tPm9fZmlsZSA9IHZhbDsKIAlTTElTVF9JTlNFUlRfSEVBRCgmb3RhYiwgcG8sIG9fbmV4dCk7
 CkluZGV4OiBtYWluLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbWFpbi5jCShyZXZpc2lvbiAyMDUxMTUpCisr
 KyBtYWluLmMJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQAogCQkJaWYgKCpkZXN0
 ZGlyID09ICdcMCcpCiAJCQkJc3RybGNweShkZXN0ZGlyLCBvcHRhcmcsIHNpemVvZihkZXN0ZGly
 KSk7CiAJCQllbHNlCi0JCQkJZXJyeCgyLCAiZGlyZWN0b3J5IGFscmVhZHkgc2V0Iik7CisJCQkJ
 ZXJyeChFWElUX0ZBSUxVUkUsICJkaXJlY3RvcnkgYWxyZWFkeSBzZXQiKTsKIAkJCWJyZWFrOwog
 CQljYXNlICdnJzoKIAkJCWRlYnVnZ2luZysrOwpAQCAtMTc1LDcgKzE3NSw3IEBACiAJCWlmICht
 a2RpcihwLCAwNzc3KSkKIAkJCWVycigyLCAiJXMiLCBwKTsKIAl9IGVsc2UgaWYgKCFTX0lTRElS
 KGJ1Zi5zdF9tb2RlKSkKLQkJZXJyeCgyLCAiJXMgaXNuJ3QgYSBkaXJlY3RvcnkiLCBwKTsKKwkJ
 ZXJyeChFWElUX0ZBSUxVUkUsICIlcyBpc24ndCBhIGRpcmVjdG9yeSIsIHApOwogCiAJU0xJU1Rf
 SU5JVCgmY3B1dHlwZSk7CiAJU0xJU1RfSU5JVCgmbWtvcHQpOwpAQCAtMjU2LDcgKzI1Niw3IEBA
 CiAJaW50IGk7CiAKIAlpZiAocmVhbHBhdGgoIi4uLy4uIiwgc3JjZGlyKSA9PSBOVUxMKQotCQll
 cnJ4KDIsICJVbmFibGUgdG8gZmluZCByb290IG9mIHNvdXJjZSB0cmVlIik7CisJCWVycngoRVhJ
 VF9GQUlMVVJFLCAiVW5hYmxlIHRvIGZpbmQgcm9vdCBvZiBzb3VyY2UgdHJlZSIpOwogCWlmICgo
 cHdkID0gZ2V0ZW52KCJQV0QiKSkgIT0gTlVMTCAmJiAqcHdkID09ICcvJyAmJgogCSAgICAocHdk
 ID0gc3RyZHVwKHB3ZCkpICE9IE5VTEwpIHsKIAkJLyogUmVtb3ZlIHRoZSBsYXN0IHR3byBwYXRo
 IGNvbXBvbmVudHMuICovCkBAIC02NTAsNiArNjUwLDggQEAKIAkJfQogCX0KIAlobCA9IGNhbGxv
 YygxLCBzaXplb2YoKmhsKSk7CisJaWYgKGhsID09IE5VTEwpCisJCWVycngoRVhJVF9GQUlMVVJF
 LCAiY2FsbG9jIik7CiAJaGwtPmhfbmFtZSA9IHM7CiAJaGwtPmhfbmV4dCA9IGh0YWI7CiAJaHRh
 YiA9IGhsOwpJbmRleDogbWttYWtlZmlsZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1rbWFrZWZpbGUuYwko
 cmV2aXNpb24gMjA1MTE1KQorKysgbWttYWtlZmlsZS5jCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2
 ICs5OCw4IEBACiAJc3RydWN0IGZpbGVfbGlzdCAqZnA7CiAKIAlmcCA9IChzdHJ1Y3QgZmlsZV9s
 aXN0ICopIGNhbGxvYygxLCBzaXplb2YgKmZwKTsKKwlpZiAoZnAgPT0gTlVMTCkKKwkJZXJyeChF
 WElUX0ZBSUxVUkUsICJjYWxsb2MiKTsKIAlTVEFJTFFfSU5TRVJUX1RBSUwoJmZ0YWIsIGZwLCBm
 X25leHQpOwogCXJldHVybiAoZnApOwogfQpJbmRleDogbGFuZy5sCj09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxh
 bmcubAkocmV2aXNpb24gMjA1MTE1KQorKysgbGFuZy5sCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
 ICszMSw3IEBACiAgKiAkRnJlZUJTRCQKICAqLwogCisjaW5jbHVkZSA8ZXJyLmg+CiAjaW5jbHVk
 ZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAg
 LTIyMCw2ICsyMjEsOCBAQAogCXN0cnVjdCBjZmdmaWxlICpjZjsKIAogCWNmID0gY2FsbG9jKDEs
 IHNpemVvZigqY2YpKTsKKwlpZiAoY2YgPT0gTlVMTCkKKwkJZXJyeChFWElUX0ZBSUxVUkUsICJj
 YWxsb2MiKTsKIAlhc3NlcnQoY2YgIT0gTlVMTCk7CiAJYXNwcmludGYoJmNmLT5jZmdfcGF0aCwg
 IiVzIiwgZm5hbWUpOwogCVNUQUlMUV9JTlNFUlRfVEFJTCgmY2ZnZmlsZXMsIGNmLCBjZmdfbmV4
 dCk7CkluZGV4OiBjb25maWcueQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb25maWcueQkocmV2aXNpb24gMjA1
 MTE1KQorKysgY29uZmlnLnkJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw2ICsxNjYsOCBAQAogCUNQ
 VSBTYXZlX2lkIHsKIAkJc3RydWN0IGNwdXR5cGUgKmNwID0KIAkJICAgIChzdHJ1Y3QgY3B1dHlw
 ZSAqKWNhbGxvYygxLCBzaXplb2YgKHN0cnVjdCBjcHV0eXBlKSk7CisJCWlmIChjcCA9PSBOVUxM
 KQorCQkJZXJyeChFWElUX0ZBSUxVUkUsICJjYWxsb2MiKTsKIAkJY3AtPmNwdV9uYW1lID0gJDI7
 CiAJCVNMSVNUX0lOU0VSVF9IRUFEKCZjcHV0eXBlLCBjcCwgY3B1X25leHQpOwogCSAgICAgIH0g
 fApAQCAtMTk3LDYgKzE5OSw4IEBACiAJCXN0cnVjdCBoaW50ICpoaW50OwogCiAJCWhpbnQgPSAo
 c3RydWN0IGhpbnQgKiljYWxsb2MoMSwgc2l6ZW9mIChzdHJ1Y3QgaGludCkpOworCQlpZiAoaGlu
 dCA9PSBOVUxMKQorCQkJZXJyeChFWElUX0ZBSUxVUkUsICJjYWxsb2MiKTsJCiAJCWhpbnQtPmhp
 bnRfbmFtZSA9ICQyOwogCQlTVEFJTFFfSU5TRVJUX1RBSUwoJmhpbnRzLCBoaW50LCBoaW50X25l
 eHQpOwogCQloaW50bW9kZSA9IDE7CkBAIC0zMzEsNiArMzM1LDggQEAKIAlzdHJ1Y3QgZmlsZXNf
 bmFtZSAqbmw7CiAJCiAJbmwgPSAoc3RydWN0IGZpbGVzX25hbWUgKikgY2FsbG9jKDEsIHNpemVv
 ZiAqbmwpOworCWlmIChubCA9PSBOVUxMKQorCQllcnJ4KEVYSVRfRkFJTFVSRSwgImNhbGxvYyIp
 OwogCW5sLT5mX25hbWUgPSBuYW1lOwogCVNUQUlMUV9JTlNFUlRfVEFJTCgmZm50YWIsIG5sLCBm
 X25leHQpOwogfQpAQCAtMzY0LDYgKzM3MCw4IEBACiAJfQogCiAJbnAgPSAoc3RydWN0IGRldmlj
 ZSAqKSBjYWxsb2MoMSwgc2l6ZW9mICpucCk7CisJaWYgKG5wID09IE5VTEwpCisJCWVycngoRVhJ
 VF9GQUlMVVJFLCAiY2FsbG9jIik7CiAJbnAtPmRfbmFtZSA9IG5hbWU7CiAJU1RBSUxRX0lOU0VS
 VF9UQUlMKCZkdGFiLCBucCwgZF9uZXh0KTsKIH0KQEAgLTQyMiw2ICs0MzAsOCBAQAogCX0KIAog
 CW9wID0gKHN0cnVjdCBvcHQgKiljYWxsb2MoMSwgc2l6ZW9mIChzdHJ1Y3Qgb3B0KSk7CisJaWYg
 KG9wID09IE5VTEwpCisJCWVycngoRVhJVF9GQUlMVVJFLCAiY2FsbG9jIik7CiAJb3AtPm9wX25h
 bWUgPSBuYW1lOwogCW9wLT5vcF9vd25maWxlID0gMDsKIAlvcC0+b3BfdmFsdWUgPSB2YWx1ZTsK
 --001636d34fdc29c6250481a9b61f--

From: Garrett Cooper <yaneurabeya@gmail.com>
To: Garrett Cooper <yaneurabeya@gmail.com>
Cc: bug-followup <bug-followup@freebsd.org>, Ruslan Ermilov <ru@freebsd.org>
Subject: Re: bin/144644: [patch] Fix *alloc cornercases with config(1)
Date: Sun, 21 Mar 2010 04:58:18 -0700

 --0016e646995ce547c604824e4b75
 Content-Type: text/plain; charset=ISO-8859-1
 Content-Transfer-Encoding: quoted-printable
 
 On Sat, Mar 13, 2010 at 12:36 AM, Garrett Cooper <yaneurabeya@gmail.com> wrot=
 e:
 > On Fri, Mar 12, 2010 at 11:28 PM, Garrett Cooper <yaneurabeya@gmail.com> wro=
 te:
 >> =A0 =A0The attached patch addresses the non-style(9) conformity with my
 >> previous patch as pointed out by several folks on current@.
 >
 > Sorry -- missed a spot...
 
     The following patch incorporates a logical change from errx(3) to
 err(3) made by ru@ in an informal review. I also picked up a few other
 logical messages that were originally errx(EXIT_ERR, ...) and
 converted them to err(EXIT_ERR, ...) in a similar fashion.
 Thanks,
 -Garrett
 
 --0016e646995ce547c604824e4b75
 Content-Type: text/plain; charset=US-ASCII; name="config-failure-corner-cases.diff.txt"
 Content-Disposition: attachment; 
 	filename="config-failure-corner-cases.diff.txt"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_g71smkjn1
 
 SW5kZXg6IG1rb3B0aW9ucy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1rb3B0aW9ucy5jCShyZXZpc2lvbiAy
 MDUxNTkpCisrKyBta29wdGlvbnMuYwkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOCBAQAog
 CS8qIEZha2UgdGhlIGNwdSB0eXBlcyBhcyBvcHRpb25zLiAqLwogCVNMSVNUX0ZPUkVBQ0goY3As
 ICZjcHV0eXBlLCBjcHVfbmV4dCkgewogCQlvcCA9IChzdHJ1Y3Qgb3B0ICopY2FsbG9jKDEsIHNp
 emVvZigqb3ApKTsKKwkJaWYgKG9wID09IE5VTEwpCisJCQllcnIoRVhJVF9GQUlMVVJFLCAiY2Fs
 bG9jIik7CiAJCW9wLT5vcF9uYW1lID0gbnMoY3AtPmNwdV9uYW1lKTsKIAkJU0xJU1RfSU5TRVJU
 X0hFQUQoJm9wdCwgb3AsIG9wX25leHQpOwogCX0JCkBAIC04NCw2ICs4Niw4IEBACiAKIAkvKiBG
 YWtlIE1BWFVTRVJTIGFzIGFuIG9wdGlvbi4gKi8KIAlvcCA9IChzdHJ1Y3Qgb3B0ICopY2FsbG9j
 KDEsIHNpemVvZigqb3ApKTsKKwlpZiAob3AgPT0gTlVMTCkKKwkJZXJyKEVYSVRfRkFJTFVSRSwg
 ImNhbGxvYyIpOwogCW9wLT5vcF9uYW1lID0gbnMoIk1BWFVTRVJTIik7CiAJc25wcmludGYoYnVm
 LCBzaXplb2YoYnVmKSwgIiVkIiwgbWF4dXNlcnMpOwogCW9wLT5vcF92YWx1ZSA9IG5zKGJ1Zik7
 CkBAIC0xOTksNiArMjAzLDggQEAKIAkJCXRpZHkrKzsKIAkJfSBlbHNlIHsKIAkJCW9wID0gKHN0
 cnVjdCBvcHQgKikgY2FsbG9jKDEsIHNpemVvZiAqb3ApOworCQkJaWYgKG9wID09IE5VTEwpCisJ
 CQkJZXJyKEVYSVRfRkFJTFVSRSwgImNhbGxvYyIpOwogCQkJb3AtPm9wX25hbWUgPSBpbnc7CiAJ
 CQlvcC0+b3BfdmFsdWUgPSBpbnZhbHVlOwogCQkJU0xJU1RfSU5TRVJUX0hFQUQoJm9wX2hlYWQs
 IG9wLCBvcF9uZXh0KTsKQEAgLTIyNSw2ICsyMzEsOCBAQAogCWlmICh2YWx1ZSAmJiAhc2Vlbikg
 ewogCQkvKiBOZXcgb3B0aW9uIGFwcGVhcnMgKi8KIAkJb3AgPSAoc3RydWN0IG9wdCAqKSBjYWxs
 b2MoMSwgc2l6ZW9mICpvcCk7CisJCWlmIChvcCA9PSBOVUxMKQorCQkJZXJyKEVYSVRfRkFJTFVS
 RSwgImNhbGxvYyIpOwogCQlvcC0+b3BfbmFtZSA9IG5zKG5hbWUpOwogCQlvcC0+b3BfdmFsdWUg
 PSB2YWx1ZSA/IG5zKHZhbHVlKSA6IE5VTEw7CiAJCVNMSVNUX0lOU0VSVF9IRUFEKCZvcF9oZWFk
 LCBvcCwgb3BfbmV4dCk7CkBAIC0zMzYsNiArMzQ0LDggQEAKIAl9CiAJCiAJcG8gPSAoc3RydWN0
 IG9wdF9saXN0ICopIGNhbGxvYygxLCBzaXplb2YgKnBvKTsKKwlpZiAocG8gPT0gTlVMTCkKKwkJ
 ZXJyKEVYSVRfRkFJTFVSRSwgImNhbGxvYyIpOwogCXBvLT5vX25hbWUgPSB0aGlzOwogCXBvLT5v
 X2ZpbGUgPSB2YWw7CiAJU0xJU1RfSU5TRVJUX0hFQUQoJm90YWIsIHBvLCBvX25leHQpOwpJbmRl
 eDogbWFpbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT0KLS0tIG1haW4uYwkocmV2aXNpb24gMjA1MTU5KQorKysgbWFp
 bi5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAKIAkJCWlmICgqZGVzdGRpciA9
 PSAnXDAnKQogCQkJCXN0cmxjcHkoZGVzdGRpciwgb3B0YXJnLCBzaXplb2YoZGVzdGRpcikpOwog
 CQkJZWxzZQotCQkJCWVycngoMiwgImRpcmVjdG9yeSBhbHJlYWR5IHNldCIpOworCQkJCWVycihF
 WElUX0ZBSUxVUkUsICJkaXJlY3RvcnkgYWxyZWFkeSBzZXQiKTsKIAkJCWJyZWFrOwogCQljYXNl
 ICdnJzoKIAkJCWRlYnVnZ2luZysrOwpAQCAtMTc1LDcgKzE3NSw3IEBACiAJCWlmIChta2Rpcihw
 LCAwNzc3KSkKIAkJCWVycigyLCAiJXMiLCBwKTsKIAl9IGVsc2UgaWYgKCFTX0lTRElSKGJ1Zi5z
 dF9tb2RlKSkKLQkJZXJyeCgyLCAiJXMgaXNuJ3QgYSBkaXJlY3RvcnkiLCBwKTsKKwkJZXJyKEVY
 SVRfRkFJTFVSRSwgIiVzIGlzbid0IGEgZGlyZWN0b3J5IiwgcCk7CiAKIAlTTElTVF9JTklUKCZj
 cHV0eXBlKTsKIAlTTElTVF9JTklUKCZta29wdCk7CkBAIC0yNTYsNyArMjU2LDcgQEAKIAlpbnQg
 aTsKIAogCWlmIChyZWFscGF0aCgiLi4vLi4iLCBzcmNkaXIpID09IE5VTEwpCi0JCWVycngoMiwg
 IlVuYWJsZSB0byBmaW5kIHJvb3Qgb2Ygc291cmNlIHRyZWUiKTsKKwkJZXJyKEVYSVRfRkFJTFVS
 RSwgIlVuYWJsZSB0byBmaW5kIHJvb3Qgb2Ygc291cmNlIHRyZWUiKTsKIAlpZiAoKHB3ZCA9IGdl
 dGVudigiUFdEIikpICE9IE5VTEwgJiYgKnB3ZCA9PSAnLycgJiYKIAkgICAgKHB3ZCA9IHN0cmR1
 cChwd2QpKSAhPSBOVUxMKSB7CiAJCS8qIFJlbW92ZSB0aGUgbGFzdCB0d28gcGF0aCBjb21wb25l
 bnRzLiAqLwpAQCAtNTE5LDcgKzUxOSw3IEBACiAJICovCiAJcCA9IHN0cnN0cihrZXJuY29uZnN0
 ciwgS0VSTkNPTkZUQUcpOwogCWlmIChwID09IE5VTEwpCi0JCWVycngoRVhJVF9GQUlMVVJFLCAi
 U29tZXRoaW5nIHdlbnQgdGVycmlibHkgd3JvbmchIik7CisJCWVycihFWElUX0ZBSUxVUkUsICJT
 b21ldGhpbmcgd2VudCB0ZXJyaWJseSB3cm9uZyEiKTsKIAkqcCA9ICdcMCc7CiAJZnByaW50Zihm
 bywgIiVzIiwga2VybmNvbmZzdHIpOwogCWZwcmludGYoZm8sICIlcyIsIHNidWZfZGF0YShzYikp
 OwpAQCAtNjUwLDYgKzY1MCw4IEBACiAJCX0KIAl9CiAJaGwgPSBjYWxsb2MoMSwgc2l6ZW9mKCpo
 bCkpOworCWlmIChobCA9PSBOVUxMKQorCQllcnIoRVhJVF9GQUlMVVJFLCAiY2FsbG9jIik7CiAJ
 aGwtPmhfbmFtZSA9IHM7CiAJaGwtPmhfbmV4dCA9IGh0YWI7CiAJaHRhYiA9IGhsOwpAQCAtNjcx
 LDE5ICs2NzMsMTkgQEAKIAogCXIgPSBvcGVuKGZpbGUsIE9fUkRPTkxZKTsKIAlpZiAociA9PSAt
 MSkKLQkJZXJyeChFWElUX0ZBSUxVUkUsICJDb3VsZG4ndCBvcGVuIGZpbGUgJyVzJyIsIGZpbGUp
 OworCQllcnIoRVhJVF9GQUlMVVJFLCAiQ291bGRuJ3Qgb3BlbiBmaWxlICclcyciLCBmaWxlKTsK
 IAllcnJvciA9IGZzdGF0KHIsICZzdCk7CiAJaWYgKGVycm9yID09IC0xKQotCQllcnJ4KEVYSVRf
 RkFJTFVSRSwgImZzdGF0KCkgZmFpbGVkIik7CisJCWVycihFWElUX0ZBSUxVUkUsICJmc3RhdCgp
 IGZhaWxlZCIpOwogCWlmIChTX0lTRElSKHN0LnN0X21vZGUpKQotCQllcnJ4KEVYSVRfRkFJTFVS
 RSwgIiclcycgaXMgYSBkaXJlY3RvcnkiLCBmaWxlKTsKKwkJZXJyKEVYSVRfRkFJTFVSRSwgIicl
 cycgaXMgYSBkaXJlY3RvcnkiLCBmaWxlKTsKIAlmcCA9IGZkb3BlbihyLCAiciIpOwogCWlmIChm
 cCA9PSBOVUxMKQotCQllcnJ4KEVYSVRfRkFJTFVSRSwgImZkb3BlbigpIGZhaWxlZCIpOworCQll
 cnIoRVhJVF9GQUlMVVJFLCAiZmRvcGVuKCkgZmFpbGVkIik7CiAJb3N6ID0gMTAyNDsKIAlvID0g
 Y2FsbG9jKDEsIG9zeik7CiAJaWYgKG8gPT0gTlVMTCkKLQkJZXJyeChFWElUX0ZBSUxVUkUsICJD
 b3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkiKTsKKwkJZXJyKEVYSVRfRkFJTFVSRSwgIkNvdWxkbid0
 IGFsbG9jYXRlIG1lbW9yeSIpOwogCS8qIEVMRiBub3RlIHNlY3Rpb24gaGVhZGVyLiAqLwogCWFz
 cHJpbnRmKCZjbWQsICIvdXNyL2Jpbi9lbGZkdW1wIC1jICVzIHwgZ3JlcCAtQSA1IGtlcm5fY29u
 ZiIKIAkgICAgInwgdGFpbCAtMiB8IGN1dCAtZCAnICcgLWYgMiB8IHBhc3RlIC0gLSAtIiwgZmls
 ZSk7CkBAIC02OTEsNyArNjkzLDcgQEAKIAkJZXJyeChFWElUX0ZBSUxVUkUsICJhc3ByaW50Zigp
 IGZhaWxlZCIpOwogCXBwID0gcG9wZW4oY21kLCAiciIpOwogCWlmIChwcCA9PSBOVUxMKQotCQll
 cnJ4KEVYSVRfRkFJTFVSRSwgInBvcGVuKCkgZmFpbGVkIik7CisJCWVycihFWElUX0ZBSUxVUkUs
 ICJwb3BlbigpIGZhaWxlZCIpOwogCWZyZWUoY21kKTsKIAlsZW4gPSBmcmVhZChvLCBvc3osIDEs
 IHBwKTsKIAlwY2xvc2UocHApOwpAQCAtNzAzLDcgKzcwNSw3IEBACiAJCSAgICAiSU5DTFVERV9D
 T05GSUdfRklMRSIsIGZpbGUpOwogCXIgPSBmc2VlayhmcCwgb2ZmLCBTRUVLX0NVUik7CiAJaWYg
 KHIgIT0gMCkKLQkJZXJyeChFWElUX0ZBSUxVUkUsICJmc2VlaygpIGZhaWxlZCIpOworCQllcnIo
 RVhJVF9GQUlMVVJFLCAiZnNlZWsoKSBmYWlsZWQiKTsKIAlmb3IgKGkgPSAwOyBpIDwgc2l6ZSAt
 IDE7IGkrKykgewogCQlyID0gZmdldGMoZnApOwogCQlpZiAociA9PSBFT0YpCkluZGV4OiBta21h
 a2VmaWxlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PQotLS0gbWttYWtlZmlsZS5jCShyZXZpc2lvbiAyMDUxNTkpCisr
 KyBta21ha2VmaWxlLmMJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDggQEAKIAlzdHJ1Y3Qg
 ZmlsZV9saXN0ICpmcDsKIAogCWZwID0gKHN0cnVjdCBmaWxlX2xpc3QgKikgY2FsbG9jKDEsIHNp
 emVvZiAqZnApOworCWlmIChmcCA9PSBOVUxMKQorCQllcnIoRVhJVF9GQUlMVVJFLCAiY2FsbG9j
 Iik7CiAJU1RBSUxRX0lOU0VSVF9UQUlMKCZmdGFiLCBmcCwgZl9uZXh0KTsKIAlyZXR1cm4gKGZw
 KTsKIH0KSW5kZXg6IGxhbmcubAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsYW5nLmwJKHJldmlzaW9uIDIwNTE1
 OSkKKysrIGxhbmcubAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogICogJEZyZWVC
 U0QkCiAgKi8KIAorI2luY2x1ZGUgPGVyci5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1
 ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC0yMjAsNiArMjIxLDggQEAKIAlz
 dHJ1Y3QgY2ZnZmlsZSAqY2Y7CiAKIAljZiA9IGNhbGxvYygxLCBzaXplb2YoKmNmKSk7CisJaWYg
 KGNmID09IE5VTEwpCisJCWVycihFWElUX0ZBSUxVUkUsICJjYWxsb2MiKTsKIAlhc3NlcnQoY2Yg
 IT0gTlVMTCk7CiAJYXNwcmludGYoJmNmLT5jZmdfcGF0aCwgIiVzIiwgZm5hbWUpOwogCVNUQUlM
 UV9JTlNFUlRfVEFJTCgmY2ZnZmlsZXMsIGNmLCBjZmdfbmV4dCk7CkluZGV4OiBjb25maWcueQo9
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09Ci0tLSBjb25maWcueQkocmV2aXNpb24gMjA1MTU5KQorKysgY29uZmlnLnkJKHdv
 cmtpbmcgY29weSkKQEAgLTE2Niw2ICsxNjYsOCBAQAogCUNQVSBTYXZlX2lkIHsKIAkJc3RydWN0
 IGNwdXR5cGUgKmNwID0KIAkJICAgIChzdHJ1Y3QgY3B1dHlwZSAqKWNhbGxvYygxLCBzaXplb2Yg
 KHN0cnVjdCBjcHV0eXBlKSk7CisJCWlmIChjcCA9PSBOVUxMKQorCQkJZXJyKEVYSVRfRkFJTFVS
 RSwgImNhbGxvYyIpOwogCQljcC0+Y3B1X25hbWUgPSAkMjsKIAkJU0xJU1RfSU5TRVJUX0hFQUQo
 JmNwdXR5cGUsIGNwLCBjcHVfbmV4dCk7CiAJICAgICAgfSB8CkBAIC0xOTcsNiArMTk5LDggQEAK
 IAkJc3RydWN0IGhpbnQgKmhpbnQ7CiAKIAkJaGludCA9IChzdHJ1Y3QgaGludCAqKWNhbGxvYygx
 LCBzaXplb2YgKHN0cnVjdCBoaW50KSk7CisJCWlmIChoaW50ID09IE5VTEwpCisJCQllcnIoRVhJ
 VF9GQUlMVVJFLCAiY2FsbG9jIik7CQogCQloaW50LT5oaW50X25hbWUgPSAkMjsKIAkJU1RBSUxR
 X0lOU0VSVF9UQUlMKCZoaW50cywgaGludCwgaGludF9uZXh0KTsKIAkJaGludG1vZGUgPSAxOwpA
 QCAtMzMxLDYgKzMzNSw4IEBACiAJc3RydWN0IGZpbGVzX25hbWUgKm5sOwogCQogCW5sID0gKHN0
 cnVjdCBmaWxlc19uYW1lICopIGNhbGxvYygxLCBzaXplb2YgKm5sKTsKKwlpZiAobmwgPT0gTlVM
 TCkKKwkJZXJyKEVYSVRfRkFJTFVSRSwgImNhbGxvYyIpOwogCW5sLT5mX25hbWUgPSBuYW1lOwog
 CVNUQUlMUV9JTlNFUlRfVEFJTCgmZm50YWIsIG5sLCBmX25leHQpOwogfQpAQCAtMzY0LDYgKzM3
 MCw4IEBACiAJfQogCiAJbnAgPSAoc3RydWN0IGRldmljZSAqKSBjYWxsb2MoMSwgc2l6ZW9mICpu
 cCk7CisJaWYgKG5wID09IE5VTEwpCisJCWVycihFWElUX0ZBSUxVUkUsICJjYWxsb2MiKTsKIAlu
 cC0+ZF9uYW1lID0gbmFtZTsKIAlTVEFJTFFfSU5TRVJUX1RBSUwoJmR0YWIsIG5wLCBkX25leHQp
 OwogfQpAQCAtNDIyLDYgKzQzMCw4IEBACiAJfQogCiAJb3AgPSAoc3RydWN0IG9wdCAqKWNhbGxv
 YygxLCBzaXplb2YgKHN0cnVjdCBvcHQpKTsKKwlpZiAob3AgPT0gTlVMTCkKKwkJZXJyKEVYSVRf
 RkFJTFVSRSwgImNhbGxvYyIpOwogCW9wLT5vcF9uYW1lID0gbmFtZTsKIAlvcC0+b3Bfb3duZmls
 ZSA9IDA7CiAJb3AtPm9wX3ZhbHVlID0gdmFsdWU7Cg==
 --0016e646995ce547c604824e4b75--

From: Ruslan Ermilov <ru@FreeBSD.org>
To: Garrett Cooper <yaneurabeya@gmail.com>
Cc: bug-followup@FreeBSD.org
Subject: Re: bin/144644: [patch] Fix *alloc cornercases with config(1)
Date: Tue, 30 Mar 2010 14:34:26 +0400

 On Sun, Mar 21, 2010 at 04:58:18AM -0700, Garrett Cooper wrote:
 > On Sat, Mar 13, 2010 at 12:36 AM, Garrett Cooper <yaneurabeya@gmail.com> wrote:
 > > On Fri, Mar 12, 2010 at 11:28 PM, Garrett Cooper <yaneurabeya@gmail.com> wrote:
 > >>  The attached patch addresses the non-style(9) conformity with my
 > >> previous patch as pointed out by several folks on current@.
 > >
 > > Sorry -- missed a spot...
 > 
 >     The following patch incorporates a logical change from errx(3) to
 > err(3) made by ru@ in an informal review. I also picked up a few other
 > logical messages that were originally errx(EXIT_ERR, ...) and
 > converted them to err(EXIT_ERR, ...) in a similar fashion.
 
 Part of the changes are invalid (shouldn't have been converted from
 errx() to err()).
 
 : Index: main.c
 : ===================================================================
 : --- main.c	(revision 205872)
 : +++ main.c	(working copy)
 : @@ -120,7 +120,7 @@
 :  			if (*destdir == '\0')
 :  				strlcpy(destdir, optarg, sizeof(destdir));
 :  			else
 : -				errx(2, "directory already set");
 : +				err(EXIT_FAILURE, "directory already set");
 :  			break;
 :  		case 'g':
 :  			debugging++;
 : @@ -175,7 +175,7 @@
 :  		if (mkdir(p, 0777))
 :  			err(2, "%s", p);
 :  	} else if (!S_ISDIR(buf.st_mode))
 : -		errx(2, "%s isn't a directory", p);
 : +		err(EXIT_FAILURE, "%s isn't a directory", p);
 :  
 :  	SLIST_INIT(&cputype);
 :  	SLIST_INIT(&mkopt);
 : @@ -519,7 +519,7 @@
 :  	 */
 :  	p = strstr(kernconfstr, KERNCONFTAG);
 :  	if (p == NULL)
 : -		errx(EXIT_FAILURE, "Something went terribly wrong!");
 : +		err(EXIT_FAILURE, "Something went terribly wrong!");
 :  	*p = '\0';
 :  	fprintf(fo, "%s", kernconfstr);
 :  	fprintf(fo, "%s", sbuf_data(sb));
 : @@ -671,19 +673,19 @@
 : [...]
 :  	if (S_ISDIR(st.st_mode))
 : -		errx(EXIT_FAILURE, "'%s' is a directory", file);
 : +		err(EXIT_FAILURE, "'%s' is a directory", file);
 :  	fp = fdopen(r, "r");
 : [...]
 :  	pp = popen(cmd, "r");
 :  	if (pp == NULL)
 : -		errx(EXIT_FAILURE, "popen() failed");
 : +		err(EXIT_FAILURE, "popen() failed");
 
 This is questionable; see the popen(3) manpage for details,
 section ERRORS.
 
 : Index: lang.l
 : ===================================================================
 : --- lang.l	(revision 205872)
 : +++ lang.l	(working copy)
 : @@ -31,6 +31,7 @@
 :   * $FreeBSD$
 :   */
 :  
 : +#include <err.h>
 
 Misplaced include.
 
 :  #include <assert.h>
 :  #include <ctype.h>
 :  #include <string.h>
 
 
 Cheers,
 -- 
 Ruslan Ermilov
 ru@FreeBSD.org
 FreeBSD committer

From: Garrett Cooper <yaneurabeya@gmail.com>
To: Ruslan Ermilov <ru@freebsd.org>
Cc: bug-followup@freebsd.org
Subject: Re: bin/144644: [patch] Fix *alloc cornercases with config(1)
Date: Tue, 30 Mar 2010 04:46:28 -0700

 --0016363105b72177dc0483032ec9
 Content-Type: text/plain; charset=ISO-8859-1
 Content-Transfer-Encoding: quoted-printable
 
 On Tue, Mar 30, 2010 at 3:34 AM, Ruslan Ermilov <ru@freebsd.org> wrote:
 > On Sun, Mar 21, 2010 at 04:58:18AM -0700, Garrett Cooper wrote:
 >> On Sat, Mar 13, 2010 at 12:36 AM, Garrett Cooper <yaneurabeya@gmail.com> w=
 rote:
 >> > On Fri, Mar 12, 2010 at 11:28 PM, Garrett Cooper <yaneurabeya@gmail.com> =
 wrote:
 >> >> =A0 =A0The attached patch addresses the non-style(9) conformity with =
 my
 >> >> previous patch as pointed out by several folks on current@.
 >> >
 >> > Sorry -- missed a spot...
 >>
 >> =A0 =A0 The following patch incorporates a logical change from errx(3) t=
 o
 >> err(3) made by ru@ in an informal review. I also picked up a few other
 >> logical messages that were originally errx(EXIT_ERR, ...) and
 >> converted them to err(EXIT_ERR, ...) in a similar fashion.
 >
 > Part of the changes are invalid (shouldn't have been converted from
 > errx() to err()).
 >
 > : Index: main.c
 > : =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 > : --- main.c =A0 =A0(revision 205872)
 > : +++ main.c =A0 =A0(working copy)
 > : @@ -120,7 +120,7 @@
 > : =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (*destdir =3D=3D '\0')
 > : =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 strlcpy(des=
 tdir, optarg, sizeof(destdir));
 > : =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 else
 > : - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 errx(2, "dire=
 ctory already set");
 > : + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 err(EXIT_FAIL=
 URE, "directory already set");
 > : =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 break;
 > : =A0 =A0 =A0 =A0 =A0 =A0 =A0 case 'g':
 > : =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 debugging++;
 > : @@ -175,7 +175,7 @@
 > : =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (mkdir(p, 0777))
 > : =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 err(2, "%s", p);
 > : =A0 =A0 =A0 } else if (!S_ISDIR(buf.st_mode))
 > : - =A0 =A0 =A0 =A0 =A0 =A0 errx(2, "%s isn't a directory", p);
 > : + =A0 =A0 =A0 =A0 =A0 =A0 err(EXIT_FAILURE, "%s isn't a directory", p);
 > :
 > : =A0 =A0 =A0 SLIST_INIT(&cputype);
 > : =A0 =A0 =A0 SLIST_INIT(&mkopt);
 > : @@ -519,7 +519,7 @@
 > : =A0 =A0 =A0 =A0*/
 > : =A0 =A0 =A0 p =3D strstr(kernconfstr, KERNCONFTAG);
 > : =A0 =A0 =A0 if (p =3D=3D NULL)
 > : - =A0 =A0 =A0 =A0 =A0 =A0 errx(EXIT_FAILURE, "Something went terribly w=
 rong!");
 > : + =A0 =A0 =A0 =A0 =A0 =A0 err(EXIT_FAILURE, "Something went terribly wr=
 ong!");
 > : =A0 =A0 =A0 *p =3D '\0';
 > : =A0 =A0 =A0 fprintf(fo, "%s", kernconfstr);
 > : =A0 =A0 =A0 fprintf(fo, "%s", sbuf_data(sb));
 > : @@ -671,19 +673,19 @@
 > : [...]
 > : =A0 =A0 =A0 if (S_ISDIR(st.st_mode))
 > : - =A0 =A0 =A0 =A0 =A0 =A0 errx(EXIT_FAILURE, "'%s' is a directory", fil=
 e);
 > : + =A0 =A0 =A0 =A0 =A0 =A0 err(EXIT_FAILURE, "'%s' is a directory", file=
 );
 > : =A0 =A0 =A0 fp =3D fdopen(r, "r");
 > : [...]
 > : =A0 =A0 =A0 pp =3D popen(cmd, "r");
 > : =A0 =A0 =A0 if (pp =3D=3D NULL)
 > : - =A0 =A0 =A0 =A0 =A0 =A0 errx(EXIT_FAILURE, "popen() failed");
 > : + =A0 =A0 =A0 =A0 =A0 =A0 err(EXIT_FAILURE, "popen() failed");
 >
 > This is questionable; see the popen(3) manpage for details,
 > section ERRORS.
 >
 > : Index: lang.l
 > : =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 > : --- lang.l =A0 =A0(revision 205872)
 > : +++ lang.l =A0 =A0(working copy)
 > : @@ -31,6 +31,7 @@
 > : =A0 * $FreeBSD$
 > : =A0 */
 > :
 > : +#include <err.h>
 >
 > Misplaced include.
 >
 > : =A0#include <assert.h>
 > : =A0#include <ctype.h>
 > : =A0#include <string.h>
 
 Hi Ruslan!
     Thanks for the review! This should resolve all of the issues you
 spotted before, as well as fixes a typo in a comment near one of the
 changes that I spotted before.
 Cheers,
 -Garrett
 
 --0016363105b72177dc0483032ec9
 Content-Type: text/plain; charset=US-ASCII; name="config-failure-corner-cases.diff.txt"
 Content-Disposition: attachment; 
 	filename="config-failure-corner-cases.diff.txt"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_g7en65jh0
 
 SW5kZXg6IG1rb3B0aW9ucy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1rb3B0aW9ucy5jCShyZXZpc2lvbiAy
 MDU4NzEpCisrKyBta29wdGlvbnMuYwkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOCBAQAog
 CS8qIEZha2UgdGhlIGNwdSB0eXBlcyBhcyBvcHRpb25zLiAqLwogCVNMSVNUX0ZPUkVBQ0goY3As
 ICZjcHV0eXBlLCBjcHVfbmV4dCkgewogCQlvcCA9IChzdHJ1Y3Qgb3B0ICopY2FsbG9jKDEsIHNp
 emVvZigqb3ApKTsKKwkJaWYgKG9wID09IE5VTEwpCisJCQllcnIoRVhJVF9GQUlMVVJFLCAiY2Fs
 bG9jIik7CiAJCW9wLT5vcF9uYW1lID0gbnMoY3AtPmNwdV9uYW1lKTsKIAkJU0xJU1RfSU5TRVJU
 X0hFQUQoJm9wdCwgb3AsIG9wX25leHQpOwogCX0JCkBAIC04NCw2ICs4Niw4IEBACiAKIAkvKiBG
 YWtlIE1BWFVTRVJTIGFzIGFuIG9wdGlvbi4gKi8KIAlvcCA9IChzdHJ1Y3Qgb3B0ICopY2FsbG9j
 KDEsIHNpemVvZigqb3ApKTsKKwlpZiAob3AgPT0gTlVMTCkKKwkJZXJyKEVYSVRfRkFJTFVSRSwg
 ImNhbGxvYyIpOwogCW9wLT5vcF9uYW1lID0gbnMoIk1BWFVTRVJTIik7CiAJc25wcmludGYoYnVm
 LCBzaXplb2YoYnVmKSwgIiVkIiwgbWF4dXNlcnMpOwogCW9wLT5vcF92YWx1ZSA9IG5zKGJ1Zik7
 CkBAIC0xOTksNiArMjAzLDggQEAKIAkJCXRpZHkrKzsKIAkJfSBlbHNlIHsKIAkJCW9wID0gKHN0
 cnVjdCBvcHQgKikgY2FsbG9jKDEsIHNpemVvZiAqb3ApOworCQkJaWYgKG9wID09IE5VTEwpCisJ
 CQkJZXJyKEVYSVRfRkFJTFVSRSwgImNhbGxvYyIpOwogCQkJb3AtPm9wX25hbWUgPSBpbnc7CiAJ
 CQlvcC0+b3BfdmFsdWUgPSBpbnZhbHVlOwogCQkJU0xJU1RfSU5TRVJUX0hFQUQoJm9wX2hlYWQs
 IG9wLCBvcF9uZXh0KTsKQEAgLTIyNSw2ICsyMzEsOCBAQAogCWlmICh2YWx1ZSAmJiAhc2Vlbikg
 ewogCQkvKiBOZXcgb3B0aW9uIGFwcGVhcnMgKi8KIAkJb3AgPSAoc3RydWN0IG9wdCAqKSBjYWxs
 b2MoMSwgc2l6ZW9mICpvcCk7CisJCWlmIChvcCA9PSBOVUxMKQorCQkJZXJyKEVYSVRfRkFJTFVS
 RSwgImNhbGxvYyIpOwogCQlvcC0+b3BfbmFtZSA9IG5zKG5hbWUpOwogCQlvcC0+b3BfdmFsdWUg
 PSB2YWx1ZSA/IG5zKHZhbHVlKSA6IE5VTEw7CiAJCVNMSVNUX0lOU0VSVF9IRUFEKCZvcF9oZWFk
 LCBvcCwgb3BfbmV4dCk7CkBAIC0zMzYsNiArMzQ0LDggQEAKIAl9CiAJCiAJcG8gPSAoc3RydWN0
 IG9wdF9saXN0ICopIGNhbGxvYygxLCBzaXplb2YgKnBvKTsKKwlpZiAocG8gPT0gTlVMTCkKKwkJ
 ZXJyKEVYSVRfRkFJTFVSRSwgImNhbGxvYyIpOwogCXBvLT5vX25hbWUgPSB0aGlzOwogCXBvLT5v
 X2ZpbGUgPSB2YWw7CiAJU0xJU1RfSU5TRVJUX0hFQUQoJm90YWIsIHBvLCBvX25leHQpOwpJbmRl
 eDogbWFpbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT0KLS0tIG1haW4uYwkocmV2aXNpb24gMjA1ODcxKQorKysgbWFp
 bi5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAKIAkJCWlmICgqZGVzdGRpciA9
 PSAnXDAnKQogCQkJCXN0cmxjcHkoZGVzdGRpciwgb3B0YXJnLCBzaXplb2YoZGVzdGRpcikpOwog
 CQkJZWxzZQotCQkJCWVycngoMiwgImRpcmVjdG9yeSBhbHJlYWR5IHNldCIpOworCQkJCWVycngo
 RVhJVF9GQUlMVVJFLCAiZGlyZWN0b3J5IGFscmVhZHkgc2V0Iik7CiAJCQlicmVhazsKIAkJY2Fz
 ZSAnZyc6CiAJCQlkZWJ1Z2dpbmcrKzsKQEAgLTE3NSw3ICsxNzUsNyBAQAogCQlpZiAobWtkaXIo
 cCwgMDc3NykpCiAJCQllcnIoMiwgIiVzIiwgcCk7CiAJfSBlbHNlIGlmICghU19JU0RJUihidWYu
 c3RfbW9kZSkpCi0JCWVycngoMiwgIiVzIGlzbid0IGEgZGlyZWN0b3J5IiwgcCk7CisJCWVycngo
 RVhJVF9GQUlMVVJFLCAiJXMgaXNuJ3QgYSBkaXJlY3RvcnkiLCBwKTsKIAogCVNMSVNUX0lOSVQo
 JmNwdXR5cGUpOwogCVNMSVNUX0lOSVQoJm1rb3B0KTsKQEAgLTI1Niw3ICsyNTYsNyBAQAogCWlu
 dCBpOwogCiAJaWYgKHJlYWxwYXRoKCIuLi8uLiIsIHNyY2RpcikgPT0gTlVMTCkKLQkJZXJyeCgy
 LCAiVW5hYmxlIHRvIGZpbmQgcm9vdCBvZiBzb3VyY2UgdHJlZSIpOworCQllcnIoRVhJVF9GQUlM
 VVJFLCAiVW5hYmxlIHRvIGZpbmQgcm9vdCBvZiBzb3VyY2UgdHJlZSIpOwogCWlmICgocHdkID0g
 Z2V0ZW52KCJQV0QiKSkgIT0gTlVMTCAmJiAqcHdkID09ICcvJyAmJgogCSAgICAocHdkID0gc3Ry
 ZHVwKHB3ZCkpICE9IE5VTEwpIHsKIAkJLyogUmVtb3ZlIHRoZSBsYXN0IHR3byBwYXRoIGNvbXBv
 bmVudHMuICovCkBAIC01MTMsNyArNTEzLDcgQEAKIAl9CiAJc2J1Zl9maW5pc2goc2IpOwogCS8q
 IAotCSAqIFdlIHByaW50IGZpcnN0IHBhcnQgb2YgdGhlIHRhbXBsYXRlLCByZXBsYWNlIG91ciB0
 YWcgd2l0aAorCSAqIFdlIHByaW50IGZpcnN0IHBhcnQgb2YgdGhlIHRlbXBsYXRlLCByZXBsYWNl
 IG91ciB0YWcgd2l0aAogCSAqIGNvbmZpZ3VyYXRpb24gZmlsZXMgY29udGVudCBhbmQgbGF0ZXIg
 Y29udGludWUgd3JpdGluZyBvdXIKIAkgKiB0ZW1wbGF0ZS4KIAkgKi8KQEAgLTY1MCw2ICs2NTAs
 OCBAQAogCQl9CiAJfQogCWhsID0gY2FsbG9jKDEsIHNpemVvZigqaGwpKTsKKwlpZiAoaGwgPT0g
 TlVMTCkKKwkJZXJyKEVYSVRfRkFJTFVSRSwgImNhbGxvYyIpOwogCWhsLT5oX25hbWUgPSBzOwog
 CWhsLT5oX25leHQgPSBodGFiOwogCWh0YWIgPSBobDsKQEAgLTY3MSwxOSArNjczLDE5IEBACiAK
 IAlyID0gb3BlbihmaWxlLCBPX1JET05MWSk7CiAJaWYgKHIgPT0gLTEpCi0JCWVycngoRVhJVF9G
 QUlMVVJFLCAiQ291bGRuJ3Qgb3BlbiBmaWxlICclcyciLCBmaWxlKTsKKwkJZXJyKEVYSVRfRkFJ
 TFVSRSwgIkNvdWxkbid0IG9wZW4gZmlsZSAnJXMnIiwgZmlsZSk7CiAJZXJyb3IgPSBmc3RhdChy
 LCAmc3QpOwogCWlmIChlcnJvciA9PSAtMSkKLQkJZXJyeChFWElUX0ZBSUxVUkUsICJmc3RhdCgp
 IGZhaWxlZCIpOworCQllcnIoRVhJVF9GQUlMVVJFLCAiZnN0YXQoKSBmYWlsZWQiKTsKIAlpZiAo
 U19JU0RJUihzdC5zdF9tb2RlKSkKIAkJZXJyeChFWElUX0ZBSUxVUkUsICInJXMnIGlzIGEgZGly
 ZWN0b3J5IiwgZmlsZSk7CiAJZnAgPSBmZG9wZW4ociwgInIiKTsKIAlpZiAoZnAgPT0gTlVMTCkK
 LQkJZXJyeChFWElUX0ZBSUxVUkUsICJmZG9wZW4oKSBmYWlsZWQiKTsKKwkJZXJyKEVYSVRfRkFJ
 TFVSRSwgImZkb3BlbigpIGZhaWxlZCIpOwogCW9zeiA9IDEwMjQ7CiAJbyA9IGNhbGxvYygxLCBv
 c3opOwogCWlmIChvID09IE5VTEwpCi0JCWVycngoRVhJVF9GQUlMVVJFLCAiQ291bGRuJ3QgYWxs
 b2NhdGUgbWVtb3J5Iik7CisJCWVycihFWElUX0ZBSUxVUkUsICJDb3VsZG4ndCBhbGxvY2F0ZSBt
 ZW1vcnkiKTsKIAkvKiBFTEYgbm90ZSBzZWN0aW9uIGhlYWRlci4gKi8KIAlhc3ByaW50ZigmY21k
 LCAiL3Vzci9iaW4vZWxmZHVtcCAtYyAlcyB8IGdyZXAgLUEgNSBrZXJuX2NvbmYiCiAJICAgICJ8
 IHRhaWwgLTIgfCBjdXQgLWQgJyAnIC1mIDIgfCBwYXN0ZSAtIC0gLSIsIGZpbGUpOwpAQCAtNzAz
 LDcgKzcwNSw3IEBACiAJCSAgICAiSU5DTFVERV9DT05GSUdfRklMRSIsIGZpbGUpOwogCXIgPSBm
 c2VlayhmcCwgb2ZmLCBTRUVLX0NVUik7CiAJaWYgKHIgIT0gMCkKLQkJZXJyeChFWElUX0ZBSUxV
 UkUsICJmc2VlaygpIGZhaWxlZCIpOworCQllcnIoRVhJVF9GQUlMVVJFLCAiZnNlZWsoKSBmYWls
 ZWQiKTsKIAlmb3IgKGkgPSAwOyBpIDwgc2l6ZSAtIDE7IGkrKykgewogCQlyID0gZmdldGMoZnAp
 OwogCQlpZiAociA9PSBFT0YpCkluZGV4OiBta21ha2VmaWxlLmMKPT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbWtt
 YWtlZmlsZS5jCShyZXZpc2lvbiAyMDU4NzEpCisrKyBta21ha2VmaWxlLmMJKHdvcmtpbmcgY29w
 eSkKQEAgLTk4LDYgKzk4LDggQEAKIAlzdHJ1Y3QgZmlsZV9saXN0ICpmcDsKIAogCWZwID0gKHN0
 cnVjdCBmaWxlX2xpc3QgKikgY2FsbG9jKDEsIHNpemVvZiAqZnApOworCWlmIChmcCA9PSBOVUxM
 KQorCQllcnIoRVhJVF9GQUlMVVJFLCAiY2FsbG9jIik7CiAJU1RBSUxRX0lOU0VSVF9UQUlMKCZm
 dGFiLCBmcCwgZl9uZXh0KTsKIAlyZXR1cm4gKGZwKTsKIH0KSW5kZXg6IGxhbmcubAo9PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09Ci0tLSBsYW5nLmwJKHJldmlzaW9uIDIwNTg3MSkKKysrIGxhbmcubAkod29ya2luZyBjb3B5
 KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8Y3R5
 cGUuaD4KKyNpbmNsdWRlIDxlcnIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlICJ5
 LnRhYi5oIgogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtMjIwLDYgKzIyMSw4IEBACiAJc3RydWN0
 IGNmZ2ZpbGUgKmNmOwogCiAJY2YgPSBjYWxsb2MoMSwgc2l6ZW9mKCpjZikpOworCWlmIChjZiA9
 PSBOVUxMKQorCQllcnIoRVhJVF9GQUlMVVJFLCAiY2FsbG9jIik7CiAJYXNzZXJ0KGNmICE9IE5V
 TEwpOwogCWFzcHJpbnRmKCZjZi0+Y2ZnX3BhdGgsICIlcyIsIGZuYW1lKTsKIAlTVEFJTFFfSU5T
 RVJUX1RBSUwoJmNmZ2ZpbGVzLCBjZiwgY2ZnX25leHQpOwpJbmRleDogY29uZmlnLnkKPT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PQotLS0gY29uZmlnLnkJKHJldmlzaW9uIDIwNTg3MSkKKysrIGNvbmZpZy55CSh3b3JraW5n
 IGNvcHkpCkBAIC0xNjYsNiArMTY2LDggQEAKIAlDUFUgU2F2ZV9pZCB7CiAJCXN0cnVjdCBjcHV0
 eXBlICpjcCA9CiAJCSAgICAoc3RydWN0IGNwdXR5cGUgKiljYWxsb2MoMSwgc2l6ZW9mIChzdHJ1
 Y3QgY3B1dHlwZSkpOworCQlpZiAoY3AgPT0gTlVMTCkKKwkJCWVycihFWElUX0ZBSUxVUkUsICJj
 YWxsb2MiKTsKIAkJY3AtPmNwdV9uYW1lID0gJDI7CiAJCVNMSVNUX0lOU0VSVF9IRUFEKCZjcHV0
 eXBlLCBjcCwgY3B1X25leHQpOwogCSAgICAgIH0gfApAQCAtMTk3LDYgKzE5OSw4IEBACiAJCXN0
 cnVjdCBoaW50ICpoaW50OwogCiAJCWhpbnQgPSAoc3RydWN0IGhpbnQgKiljYWxsb2MoMSwgc2l6
 ZW9mIChzdHJ1Y3QgaGludCkpOworCQlpZiAoaGludCA9PSBOVUxMKQorCQkJZXJyKEVYSVRfRkFJ
 TFVSRSwgImNhbGxvYyIpOwkKIAkJaGludC0+aGludF9uYW1lID0gJDI7CiAJCVNUQUlMUV9JTlNF
 UlRfVEFJTCgmaGludHMsIGhpbnQsIGhpbnRfbmV4dCk7CiAJCWhpbnRtb2RlID0gMTsKQEAgLTMz
 MSw2ICszMzUsOCBAQAogCXN0cnVjdCBmaWxlc19uYW1lICpubDsKIAkKIAlubCA9IChzdHJ1Y3Qg
 ZmlsZXNfbmFtZSAqKSBjYWxsb2MoMSwgc2l6ZW9mICpubCk7CisJaWYgKG5sID09IE5VTEwpCisJ
 CWVycihFWElUX0ZBSUxVUkUsICJjYWxsb2MiKTsKIAlubC0+Zl9uYW1lID0gbmFtZTsKIAlTVEFJ
 TFFfSU5TRVJUX1RBSUwoJmZudGFiLCBubCwgZl9uZXh0KTsKIH0KQEAgLTM2NCw2ICszNzAsOCBA
 QAogCX0KIAogCW5wID0gKHN0cnVjdCBkZXZpY2UgKikgY2FsbG9jKDEsIHNpemVvZiAqbnApOwor
 CWlmIChucCA9PSBOVUxMKQorCQllcnIoRVhJVF9GQUlMVVJFLCAiY2FsbG9jIik7CiAJbnAtPmRf
 bmFtZSA9IG5hbWU7CiAJU1RBSUxRX0lOU0VSVF9UQUlMKCZkdGFiLCBucCwgZF9uZXh0KTsKIH0K
 QEAgLTQyMiw2ICs0MzAsOCBAQAogCX0KIAogCW9wID0gKHN0cnVjdCBvcHQgKiljYWxsb2MoMSwg
 c2l6ZW9mIChzdHJ1Y3Qgb3B0KSk7CisJaWYgKG9wID09IE5VTEwpCisJCWVycihFWElUX0ZBSUxV
 UkUsICJjYWxsb2MiKTsKIAlvcC0+b3BfbmFtZSA9IG5hbWU7CiAJb3AtPm9wX293bmZpbGUgPSAw
 OwogCW9wLT5vcF92YWx1ZSA9IHZhbHVlOwo=
 --0016363105b72177dc0483032ec9--
State-Changed-From-To: open->closed 
State-Changed-By: ru 
State-Changed-When: Tue Mar 30 13:47:55 UTC 2010 
State-Changed-Why:  
Patch committed to HEAD. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=144644 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/144644: commit references a PR
Date: Tue, 30 Mar 2010 13:46:51 +0000 (UTC)

 Author: ru
 Date: Tue Mar 30 13:46:40 2010
 New Revision: 205880
 URL: http://svn.freebsd.org/changeset/base/205880
 
 Log:
   - Handle calloc() allocation failures.
   - Fixed a comment.
   - 2 -> EXIT_FAILURE in some places.
   - errx() -> err() where appropriate.
   
   PR:		144644
   Submitted by:	Garrett Cooper
 
 Modified:
   head/usr.sbin/config/config.y
   head/usr.sbin/config/lang.l
   head/usr.sbin/config/main.c
   head/usr.sbin/config/mkmakefile.c
   head/usr.sbin/config/mkoptions.c
 
 Modified: head/usr.sbin/config/config.y
 ==============================================================================
 --- head/usr.sbin/config/config.y	Tue Mar 30 12:08:00 2010	(r205879)
 +++ head/usr.sbin/config/config.y	Tue Mar 30 13:46:40 2010	(r205880)
 @@ -166,6 +166,8 @@ Config_spec:
  	CPU Save_id {
  		struct cputype *cp =
  		    (struct cputype *)calloc(1, sizeof (struct cputype));
 +		if (cp == NULL)
 +			err(EXIT_FAILURE, "calloc");
  		cp->cpu_name = $2;
  		SLIST_INSERT_HEAD(&cputype, cp, cpu_next);
  	      } |
 @@ -197,6 +199,8 @@ Config_spec:
  		struct hint *hint;
  
  		hint = (struct hint *)calloc(1, sizeof (struct hint));
 +		if (hint == NULL)
 +			err(EXIT_FAILURE, "calloc");	
  		hint->hint_name = $2;
  		STAILQ_INSERT_TAIL(&hints, hint, hint_next);
  		hintmode = 1;
 @@ -331,6 +335,8 @@ newfile(char *name)
  	struct files_name *nl;
  	
  	nl = (struct files_name *) calloc(1, sizeof *nl);
 +	if (nl == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	nl->f_name = name;
  	STAILQ_INSERT_TAIL(&fntab, nl, f_next);
  }
 @@ -364,6 +370,8 @@ newdev(char *name)
  	}
  
  	np = (struct device *) calloc(1, sizeof *np);
 +	if (np == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	np->d_name = name;
  	STAILQ_INSERT_TAIL(&dtab, np, d_next);
  }
 @@ -422,6 +430,8 @@ newopt(struct opt_head *list, char *name
  	}
  
  	op = (struct opt *)calloc(1, sizeof (struct opt));
 +	if (op == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	op->op_name = name;
  	op->op_ownfile = 0;
  	op->op_value = value;
 
 Modified: head/usr.sbin/config/lang.l
 ==============================================================================
 --- head/usr.sbin/config/lang.l	Tue Mar 30 12:08:00 2010	(r205879)
 +++ head/usr.sbin/config/lang.l	Tue Mar 30 13:46:40 2010	(r205880)
 @@ -33,6 +33,7 @@
  
  #include <assert.h>
  #include <ctype.h>
 +#include <err.h>
  #include <string.h>
  #include "y.tab.h"
  #include "config.h"
 @@ -220,6 +221,8 @@ cfgfile_add(const char *fname)
  	struct cfgfile *cf;
  
  	cf = calloc(1, sizeof(*cf));
 +	if (cf == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	assert(cf != NULL);
  	asprintf(&cf->cfg_path, "%s", fname);
  	STAILQ_INSERT_TAIL(&cfgfiles, cf, cfg_next);
 
 Modified: head/usr.sbin/config/main.c
 ==============================================================================
 --- head/usr.sbin/config/main.c	Tue Mar 30 12:08:00 2010	(r205879)
 +++ head/usr.sbin/config/main.c	Tue Mar 30 13:46:40 2010	(r205880)
 @@ -120,7 +120,7 @@ main(int argc, char **argv)
  			if (*destdir == '\0')
  				strlcpy(destdir, optarg, sizeof(destdir));
  			else
 -				errx(2, "directory already set");
 +				errx(EXIT_FAILURE, "directory already set");
  			break;
  		case 'g':
  			debugging++;
 @@ -175,7 +175,7 @@ main(int argc, char **argv)
  		if (mkdir(p, 0777))
  			err(2, "%s", p);
  	} else if (!S_ISDIR(buf.st_mode))
 -		errx(2, "%s isn't a directory", p);
 +		errx(EXIT_FAILURE, "%s isn't a directory", p);
  
  	SLIST_INIT(&cputype);
  	SLIST_INIT(&mkopt);
 @@ -256,7 +256,7 @@ get_srcdir(void)
  	int i;
  
  	if (realpath("../..", srcdir) == NULL)
 -		errx(2, "Unable to find root of source tree");
 +		err(EXIT_FAILURE, "Unable to find root of source tree");
  	if ((pwd = getenv("PWD")) != NULL && *pwd == '/' &&
  	    (pwd = strdup(pwd)) != NULL) {
  		/* Remove the last two path components. */
 @@ -513,7 +513,7 @@ configfile(void)
  	}
  	sbuf_finish(sb);
  	/* 
 -	 * We print first part of the tamplate, replace our tag with
 +	 * We print first part of the template, replace our tag with
  	 * configuration files content and later continue writing our
  	 * template.
  	 */
 @@ -650,6 +650,8 @@ remember(const char *file)
  		}
  	}
  	hl = calloc(1, sizeof(*hl));
 +	if (hl == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	hl->h_name = s;
  	hl->h_next = htab;
  	htab = hl;
 @@ -671,19 +673,19 @@ kernconfdump(const char *file)
  
  	r = open(file, O_RDONLY);
  	if (r == -1)
 -		errx(EXIT_FAILURE, "Couldn't open file '%s'", file);
 +		err(EXIT_FAILURE, "Couldn't open file '%s'", file);
  	error = fstat(r, &st);
  	if (error == -1)
 -		errx(EXIT_FAILURE, "fstat() failed");
 +		err(EXIT_FAILURE, "fstat() failed");
  	if (S_ISDIR(st.st_mode))
  		errx(EXIT_FAILURE, "'%s' is a directory", file);
  	fp = fdopen(r, "r");
  	if (fp == NULL)
 -		errx(EXIT_FAILURE, "fdopen() failed");
 +		err(EXIT_FAILURE, "fdopen() failed");
  	osz = 1024;
  	o = calloc(1, osz);
  	if (o == NULL)
 -		errx(EXIT_FAILURE, "Couldn't allocate memory");
 +		err(EXIT_FAILURE, "Couldn't allocate memory");
  	/* ELF note section header. */
  	asprintf(&cmd, "/usr/bin/elfdump -c %s | grep -A 5 kern_conf"
  	    "| tail -2 | cut -d ' ' -f 2 | paste - - -", file);
 @@ -703,7 +705,7 @@ kernconfdump(const char *file)
  		    "INCLUDE_CONFIG_FILE", file);
  	r = fseek(fp, off, SEEK_CUR);
  	if (r != 0)
 -		errx(EXIT_FAILURE, "fseek() failed");
 +		err(EXIT_FAILURE, "fseek() failed");
  	for (i = 0; i < size - 1; i++) {
  		r = fgetc(fp);
  		if (r == EOF)
 
 Modified: head/usr.sbin/config/mkmakefile.c
 ==============================================================================
 --- head/usr.sbin/config/mkmakefile.c	Tue Mar 30 12:08:00 2010	(r205879)
 +++ head/usr.sbin/config/mkmakefile.c	Tue Mar 30 13:46:40 2010	(r205880)
 @@ -98,6 +98,8 @@ new_fent(void)
  	struct file_list *fp;
  
  	fp = (struct file_list *) calloc(1, sizeof *fp);
 +	if (fp == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	STAILQ_INSERT_TAIL(&ftab, fp, f_next);
  	return (fp);
  }
 
 Modified: head/usr.sbin/config/mkoptions.c
 ==============================================================================
 --- head/usr.sbin/config/mkoptions.c	Tue Mar 30 12:08:00 2010	(r205879)
 +++ head/usr.sbin/config/mkoptions.c	Tue Mar 30 13:46:40 2010	(r205880)
 @@ -70,6 +70,8 @@ options(void)
  	/* Fake the cpu types as options. */
  	SLIST_FOREACH(cp, &cputype, cpu_next) {
  		op = (struct opt *)calloc(1, sizeof(*op));
 +		if (op == NULL)
 +			err(EXIT_FAILURE, "calloc");
  		op->op_name = ns(cp->cpu_name);
  		SLIST_INSERT_HEAD(&opt, op, op_next);
  	}	
 @@ -84,6 +86,8 @@ options(void)
  
  	/* Fake MAXUSERS as an option. */
  	op = (struct opt *)calloc(1, sizeof(*op));
 +	if (op == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	op->op_name = ns("MAXUSERS");
  	snprintf(buf, sizeof(buf), "%d", maxusers);
  	op->op_value = ns(buf);
 @@ -199,6 +203,8 @@ do_option(char *name)
  			tidy++;
  		} else {
  			op = (struct opt *) calloc(1, sizeof *op);
 +			if (op == NULL)
 +				err(EXIT_FAILURE, "calloc");
  			op->op_name = inw;
  			op->op_value = invalue;
  			SLIST_INSERT_HEAD(&op_head, op, op_next);
 @@ -225,6 +231,8 @@ do_option(char *name)
  	if (value && !seen) {
  		/* New option appears */
  		op = (struct opt *) calloc(1, sizeof *op);
 +		if (op == NULL)
 +			err(EXIT_FAILURE, "calloc");
  		op->op_name = ns(name);
  		op->op_value = value ? ns(value) : NULL;
  		SLIST_INSERT_HEAD(&op_head, op, op_next);
 @@ -336,6 +344,8 @@ next:
  	}
  	
  	po = (struct opt_list *) calloc(1, sizeof *po);
 +	if (po == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	po->o_name = this;
  	po->o_file = val;
  	SLIST_INSERT_HEAD(&otab, po, o_next);
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/144644: commit references a PR
Date: Tue, 13 Apr 2010 18:46:27 +0000 (UTC)

 Author: emaste
 Date: Tue Apr 13 18:46:18 2010
 New Revision: 206559
 URL: http://svn.freebsd.org/changeset/base/206559
 
 Log:
   MFC r205880 by ru:
   
     - Handle calloc() allocation failures.
     - Fixed a comment.
     - 2 -> EXIT_FAILURE in some places.
     - errx() -> err() where appropriate.
   
   PR:		144644
   Submitted by:	Garrett Cooper
   
   Also fix endinclude() prototype to avoid compiler warning.
 
 Modified:
   stable/8/usr.sbin/config/config.y
   stable/8/usr.sbin/config/lang.l
   stable/8/usr.sbin/config/main.c
   stable/8/usr.sbin/config/mkmakefile.c
   stable/8/usr.sbin/config/mkoptions.c
 Directory Properties:
   stable/8/usr.sbin/config/   (props changed)
 
 Modified: stable/8/usr.sbin/config/config.y
 ==============================================================================
 --- stable/8/usr.sbin/config/config.y	Tue Apr 13 15:55:18 2010	(r206558)
 +++ stable/8/usr.sbin/config/config.y	Tue Apr 13 18:46:18 2010	(r206559)
 @@ -166,6 +166,8 @@ Config_spec:
  	CPU Save_id {
  		struct cputype *cp =
  		    (struct cputype *)calloc(1, sizeof (struct cputype));
 +		if (cp == NULL)
 +			err(EXIT_FAILURE, "calloc");
  		cp->cpu_name = $2;
  		SLIST_INSERT_HEAD(&cputype, cp, cpu_next);
  	      } |
 @@ -197,6 +199,8 @@ Config_spec:
  		struct hint *hint;
  
  		hint = (struct hint *)calloc(1, sizeof (struct hint));
 +		if (hint == NULL)
 +			err(EXIT_FAILURE, "calloc");	
  		hint->hint_name = $2;
  		STAILQ_INSERT_TAIL(&hints, hint, hint_next);
  		hintmode = 1;
 @@ -331,6 +335,8 @@ newfile(char *name)
  	struct files_name *nl;
  	
  	nl = (struct files_name *) calloc(1, sizeof *nl);
 +	if (nl == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	nl->f_name = name;
  	STAILQ_INSERT_TAIL(&fntab, nl, f_next);
  }
 @@ -364,6 +370,8 @@ newdev(char *name)
  	}
  
  	np = (struct device *) calloc(1, sizeof *np);
 +	if (np == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	np->d_name = name;
  	STAILQ_INSERT_TAIL(&dtab, np, d_next);
  }
 @@ -422,6 +430,8 @@ newopt(struct opt_head *list, char *name
  	}
  
  	op = (struct opt *)calloc(1, sizeof (struct opt));
 +	if (op == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	op->op_name = name;
  	op->op_ownfile = 0;
  	op->op_value = value;
 
 Modified: stable/8/usr.sbin/config/lang.l
 ==============================================================================
 --- stable/8/usr.sbin/config/lang.l	Tue Apr 13 15:55:18 2010	(r206558)
 +++ stable/8/usr.sbin/config/lang.l	Tue Apr 13 18:46:18 2010	(r206559)
 @@ -33,6 +33,7 @@
  
  #include <assert.h>
  #include <ctype.h>
 +#include <err.h>
  #include <string.h>
  #include "y.tab.h"
  #include "config.h"
 @@ -220,6 +221,8 @@ cfgfile_add(const char *fname)
  	struct cfgfile *cf;
  
  	cf = calloc(1, sizeof(*cf));
 +	if (cf == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	assert(cf != NULL);
  	asprintf(&cf->cfg_path, "%s", fname);
  	STAILQ_INSERT_TAIL(&cfgfiles, cf, cfg_next);
 @@ -285,7 +288,7 @@ include(const char *fname, int ateof)
   * Terminate the most recent inclusion.
   */
  static int
 -endinclude()
 +endinclude(void)
  {
  	struct incl *in;
  	int ateof;
 
 Modified: stable/8/usr.sbin/config/main.c
 ==============================================================================
 --- stable/8/usr.sbin/config/main.c	Tue Apr 13 15:55:18 2010	(r206558)
 +++ stable/8/usr.sbin/config/main.c	Tue Apr 13 18:46:18 2010	(r206559)
 @@ -120,7 +120,7 @@ main(int argc, char **argv)
  			if (*destdir == '\0')
  				strlcpy(destdir, optarg, sizeof(destdir));
  			else
 -				errx(2, "directory already set");
 +				errx(EXIT_FAILURE, "directory already set");
  			break;
  		case 'g':
  			debugging++;
 @@ -175,7 +175,7 @@ main(int argc, char **argv)
  		if (mkdir(p, 0777))
  			err(2, "%s", p);
  	} else if (!S_ISDIR(buf.st_mode))
 -		errx(2, "%s isn't a directory", p);
 +		errx(EXIT_FAILURE, "%s isn't a directory", p);
  
  	SLIST_INIT(&cputype);
  	SLIST_INIT(&mkopt);
 @@ -256,7 +256,7 @@ get_srcdir(void)
  	int i;
  
  	if (realpath("../..", srcdir) == NULL)
 -		errx(2, "Unable to find root of source tree");
 +		err(EXIT_FAILURE, "Unable to find root of source tree");
  	if ((pwd = getenv("PWD")) != NULL && *pwd == '/' &&
  	    (pwd = strdup(pwd)) != NULL) {
  		/* Remove the last two path components. */
 @@ -513,7 +513,7 @@ configfile(void)
  	}
  	sbuf_finish(sb);
  	/* 
 -	 * We print first part of the tamplate, replace our tag with
 +	 * We print first part of the template, replace our tag with
  	 * configuration files content and later continue writing our
  	 * template.
  	 */
 @@ -650,6 +650,8 @@ remember(const char *file)
  		}
  	}
  	hl = calloc(1, sizeof(*hl));
 +	if (hl == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	hl->h_name = s;
  	hl->h_next = htab;
  	htab = hl;
 @@ -671,19 +673,19 @@ kernconfdump(const char *file)
  
  	r = open(file, O_RDONLY);
  	if (r == -1)
 -		errx(EXIT_FAILURE, "Couldn't open file '%s'", file);
 +		err(EXIT_FAILURE, "Couldn't open file '%s'", file);
  	error = fstat(r, &st);
  	if (error == -1)
 -		errx(EXIT_FAILURE, "fstat() failed");
 +		err(EXIT_FAILURE, "fstat() failed");
  	if (S_ISDIR(st.st_mode))
  		errx(EXIT_FAILURE, "'%s' is a directory", file);
  	fp = fdopen(r, "r");
  	if (fp == NULL)
 -		errx(EXIT_FAILURE, "fdopen() failed");
 +		err(EXIT_FAILURE, "fdopen() failed");
  	osz = 1024;
  	o = calloc(1, osz);
  	if (o == NULL)
 -		errx(EXIT_FAILURE, "Couldn't allocate memory");
 +		err(EXIT_FAILURE, "Couldn't allocate memory");
  	/* ELF note section header. */
  	asprintf(&cmd, "/usr/bin/elfdump -c %s | grep -A 5 kern_conf"
  	    "| tail -2 | cut -d ' ' -f 2 | paste - - -", file);
 @@ -703,7 +705,7 @@ kernconfdump(const char *file)
  		    "INCLUDE_CONFIG_FILE", file);
  	r = fseek(fp, off, SEEK_CUR);
  	if (r != 0)
 -		errx(EXIT_FAILURE, "fseek() failed");
 +		err(EXIT_FAILURE, "fseek() failed");
  	for (i = 0; i < size - 1; i++) {
  		r = fgetc(fp);
  		if (r == EOF)
 
 Modified: stable/8/usr.sbin/config/mkmakefile.c
 ==============================================================================
 --- stable/8/usr.sbin/config/mkmakefile.c	Tue Apr 13 15:55:18 2010	(r206558)
 +++ stable/8/usr.sbin/config/mkmakefile.c	Tue Apr 13 18:46:18 2010	(r206559)
 @@ -98,6 +98,8 @@ new_fent(void)
  	struct file_list *fp;
  
  	fp = (struct file_list *) calloc(1, sizeof *fp);
 +	if (fp == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	STAILQ_INSERT_TAIL(&ftab, fp, f_next);
  	return (fp);
  }
 
 Modified: stable/8/usr.sbin/config/mkoptions.c
 ==============================================================================
 --- stable/8/usr.sbin/config/mkoptions.c	Tue Apr 13 15:55:18 2010	(r206558)
 +++ stable/8/usr.sbin/config/mkoptions.c	Tue Apr 13 18:46:18 2010	(r206559)
 @@ -70,6 +70,8 @@ options(void)
  	/* Fake the cpu types as options. */
  	SLIST_FOREACH(cp, &cputype, cpu_next) {
  		op = (struct opt *)calloc(1, sizeof(*op));
 +		if (op == NULL)
 +			err(EXIT_FAILURE, "calloc");
  		op->op_name = ns(cp->cpu_name);
  		SLIST_INSERT_HEAD(&opt, op, op_next);
  	}	
 @@ -84,6 +86,8 @@ options(void)
  
  	/* Fake MAXUSERS as an option. */
  	op = (struct opt *)calloc(1, sizeof(*op));
 +	if (op == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	op->op_name = ns("MAXUSERS");
  	snprintf(buf, sizeof(buf), "%d", maxusers);
  	op->op_value = ns(buf);
 @@ -199,6 +203,8 @@ do_option(char *name)
  			tidy++;
  		} else {
  			op = (struct opt *) calloc(1, sizeof *op);
 +			if (op == NULL)
 +				err(EXIT_FAILURE, "calloc");
  			op->op_name = inw;
  			op->op_value = invalue;
  			SLIST_INSERT_HEAD(&op_head, op, op_next);
 @@ -225,6 +231,8 @@ do_option(char *name)
  	if (value && !seen) {
  		/* New option appears */
  		op = (struct opt *) calloc(1, sizeof *op);
 +		if (op == NULL)
 +			err(EXIT_FAILURE, "calloc");
  		op->op_name = ns(name);
  		op->op_value = value ? ns(value) : NULL;
  		SLIST_INSERT_HEAD(&op_head, op, op_next);
 @@ -336,6 +344,8 @@ next:
  	}
  	
  	po = (struct opt_list *) calloc(1, sizeof *po);
 +	if (po == NULL)
 +		err(EXIT_FAILURE, "calloc");
  	po->o_name = this;
  	po->o_file = val;
  	SLIST_INSERT_HEAD(&otab, po, o_next);
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
>Unformatted:
