From nobody@FreeBSD.org  Wed May 23 08:20:25 2012
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 3935C106564A
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 23 May 2012 08:20:25 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id 242E58FC19
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 23 May 2012 08:20:25 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id q4N8KO3x092495
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 23 May 2012 08:20:24 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id q4N8KOrT092494;
	Wed, 23 May 2012 08:20:24 GMT
	(envelope-from nobody)
Message-Id: <201205230820.q4N8KOrT092494@red.freebsd.org>
Date: Wed, 23 May 2012 08:20:24 GMT
From: George Mamalakis <mamalos@eng.auth.gr>
To: freebsd-gnats-submit@FreeBSD.org
Subject: /etc/rc.d/jail fails to start jails, because jail gives the error: "jail: unknown parameter: allow.nomount"
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         168250
>Category:       bin
>Synopsis:       /etc/rc.d/jail fails to start jails, because jail gives the error: "jail: unknown parameter: allow.nomount"
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed May 23 08:30:03 UTC 2012
>Closed-Date:    Wed May 23 14:53:47 UTC 2012
>Last-Modified:  Wed May 23 14:53:47 UTC 2012
>Originator:     George Mamalakis
>Release:        9-STABLE
>Organization:
Aristotle Univ. of Thessaloniki
>Environment:
FreeBSD web.ee.auth.gr 9.0-STABLE FreeBSD 9.0-STABLE #0: Tue May 22 16:37:23 EEST 2012     root@template:/usr/obj/usr/src/sys/MAMALOPYRINO  amd64
>Description:
The same bug that was submitted for 10-CURRENT on February:

http://www.freebsd.org/cgi/query-pr.cgi?pr=165515
>How-To-Repeat:
The same way that was submitted for 10-CURRENT on February:

http://www.freebsd.org/cgi/query-pr.cgi?pr=165515
>Fix:
The same fix that was submitted for 10-CURRENT on February:

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

>Release-Note:
>Audit-Trail:

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/168250: commit references a PR
Date: Wed, 23 May 2012 14:48:25 +0000 (UTC)

 Author: jamie
 Date: Wed May 23 14:48:14 2012
 New Revision: 235836
 URL: http://svn.freebsd.org/changeset/base/235836
 
 Log:
   MFC r235799:
   
    The fix in r235291 (r235624) re-broke the "allow.nomount" case.
    Re-fix it by testing for the right parameter name.
   
   PR: bin/168250
 
 Modified:
   stable/9/lib/libjail/jail.c
 Directory Properties:
   stable/9/lib/libjail/   (props changed)
 
 Modified: stable/9/lib/libjail/jail.c
 ==============================================================================
 --- stable/9/lib/libjail/jail.c	Wed May 23 14:44:57 2012	(r235835)
 +++ stable/9/lib/libjail/jail.c	Wed May 23 14:48:14 2012	(r235836)
 @@ -853,7 +853,7 @@ jailparam_free(struct jailparam *jp, uns
  static int
  jailparam_type(struct jailparam *jp)
  {
 -	char *p, *nname;
 +	char *p, *name, *nname;
  	size_t miblen, desclen;
  	int i, isarray;
  	struct {
 @@ -863,7 +863,8 @@ jailparam_type(struct jailparam *jp)
  	int mib[CTL_MAXNAME];
  
  	/* The "lastjid" parameter isn't real. */
 -	if (!strcmp(jp->jp_name, "lastjid")) {
 +	name = jp->jp_name;
 +	if (!strcmp(name, "lastjid")) {
  		jp->jp_valuelen = sizeof(int);
  		jp->jp_ctltype = CTLTYPE_INT | CTLFLAG_WR;
  		return (0);
 @@ -872,19 +873,19 @@ jailparam_type(struct jailparam *jp)
  	/* Find the sysctl that describes the parameter. */
  	mib[0] = 0;
  	mib[1] = 3;
 -	snprintf(desc.s, sizeof(desc.s), SJPARAM ".%s", jp->jp_name);
 +	snprintf(desc.s, sizeof(desc.s), SJPARAM ".%s", name);
  	miblen = sizeof(mib) - 2 * sizeof(int);
  	if (sysctl(mib, 2, mib + 2, &miblen, desc.s, strlen(desc.s)) < 0) {
  		if (errno != ENOENT) {
  			snprintf(jail_errmsg, JAIL_ERRMSGLEN,
 -			    "sysctl(0.3.%s): %s", jp->jp_name, strerror(errno));
 +			    "sysctl(0.3.%s): %s", name, strerror(errno));
  			return (-1);
  		}
  		/*
  		 * The parameter probably doesn't exist.  But it might be
  		 * the "no" counterpart to a boolean.
  		 */
 -		nname = nononame(jp->jp_name);
 +		nname = nononame(name);
  		if (nname == NULL) {
  		unknown_parameter:
  			snprintf(jail_errmsg, JAIL_ERRMSGLEN,
 @@ -892,8 +893,10 @@ jailparam_type(struct jailparam *jp)
  			errno = ENOENT;
  			return (-1);
  		}
 -		snprintf(desc.s, sizeof(desc.s), SJPARAM ".%s", nname);
 +		name = alloca(strlen(nname) + 1);
 +		strcpy(name, nname);
  		free(nname);
 +		snprintf(desc.s, sizeof(desc.s), SJPARAM ".%s", name);
  		miblen = sizeof(mib) - 2 * sizeof(int);
  		if (sysctl(mib, 2, mib + 2, &miblen, desc.s,
  		    strlen(desc.s)) < 0)
 @@ -906,7 +909,7 @@ jailparam_type(struct jailparam *jp)
  	if (sysctl(mib, (miblen / sizeof(int)) + 2, &desc, &desclen,
  	    NULL, 0) < 0) {
  		snprintf(jail_errmsg, JAIL_ERRMSGLEN,
 -		    "sysctl(0.4.%s): %s", jp->jp_name, strerror(errno));
 +		    "sysctl(0.4.%s): %s", name, strerror(errno));
  		return (-1);
  	}
  	jp->jp_ctltype = desc.i;
 @@ -952,7 +955,7 @@ jailparam_type(struct jailparam *jp)
  		if (sysctl(mib + 2, miblen / sizeof(int), desc.s, &desclen,
  		    NULL, 0) < 0) {
  			snprintf(jail_errmsg, JAIL_ERRMSGLEN,
 -			    "sysctl(" SJPARAM ".%s): %s", jp->jp_name,
 +			    "sysctl(" SJPARAM ".%s): %s", name,
  			    strerror(errno));
  			return (-1);
  		}
 @@ -970,7 +973,7 @@ jailparam_type(struct jailparam *jp)
  			if (sysctl(mib + 2, miblen / sizeof(int),
  			    NULL, &jp->jp_valuelen, NULL, 0) < 0) {
  				snprintf(jail_errmsg, JAIL_ERRMSGLEN,
 -				    "sysctl(" SJPARAM ".%s): %s", jp->jp_name,
 +				    "sysctl(" SJPARAM ".%s): %s", name,
  				    strerror(errno));
  				return (-1);
  			}
 @@ -995,10 +998,9 @@ jailparam_type(struct jailparam *jp)
  				    "sysctl(0.1): %s", strerror(errno));
  				return (-1);
  			}
 -			if (desclen ==
 -			    sizeof(SJPARAM) + strlen(jp->jp_name) + 2 &&
 +			if (desclen == sizeof(SJPARAM) + strlen(name) + 2 &&
  			    memcmp(SJPARAM ".", desc.s, sizeof(SJPARAM)) == 0 &&
 -			    memcmp(jp->jp_name, desc.s + sizeof(SJPARAM),
 +			    memcmp(name, desc.s + sizeof(SJPARAM),
  			    desclen - sizeof(SJPARAM) - 2) == 0 &&
  			    desc.s[desclen - 2] == '.')
  				goto mib_desc;
 _______________________________________________
 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"
 
State-Changed-From-To: open->closed 
State-Changed-By: jamie 
State-Changed-When: Wed May 23 14:53:13 UTC 2012 
State-Changed-Why:  
Patched in r235836. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=168250 
>Unformatted:
