From owner-p4-projects@FreeBSD.ORG Mon Jul 4 15:37:28 2005 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 653A816A420; Mon, 4 Jul 2005 15:37:28 +0000 (GMT) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3785C16A41F for ; Mon, 4 Jul 2005 15:37:28 +0000 (GMT) (envelope-from csjp@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 23A4643D48 for ; Mon, 4 Jul 2005 15:37:28 +0000 (GMT) (envelope-from csjp@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j64FbSK3088875 for ; Mon, 4 Jul 2005 15:37:28 GMT (envelope-from csjp@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j64FbRS9088872 for perforce@freebsd.org; Mon, 4 Jul 2005 15:37:27 GMT (envelope-from csjp@freebsd.org) Date: Mon, 4 Jul 2005 15:37:27 GMT Message-Id: <200507041537.j64FbRS9088872@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to csjp@freebsd.org using -f From: "Christian S.J. Peron" To: Perforce Change Reviews Cc: Subject: PERFORCE change 79563 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Jul 2005 15:37:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=79563 Change 79563 by csjp@csjp_xor on 2005/07/04 15:36:57 -Simplify loop logic by using the inital strsep loop to process dependencies. This eliminates a second walk of the dependency list. -Remove now un-used variables -Add error checking of vn_extattr_get(9) Affected files ... .. //depot/projects/trustedbsd/mac/sys/security/mac_chkexec/mac_chkexec.c#14 edit Differences ... ==== //depot/projects/trustedbsd/mac/sys/security/mac_chkexec/mac_chkexec.c#14 (text+ko) ==== @@ -505,10 +505,9 @@ static int mac_chkexec_check_depends(struct vnode *vp, struct ucred *cred) { - char *depends, **ap, *paths[10]; - int error, i, npaths; struct nameidata nd; - int alen; + char *depends, *ap; + int alen, error; size_t ealen; ASSERT_VOP_LOCKED(vp, "no vlock held"); @@ -525,15 +524,16 @@ depends = malloc(alen + 1, M_CHKEXEC, M_WAITOK | M_ZERO); error = vn_extattr_get(vp, IO_NODELOCKED, MAC_CHKEXEC_ATTRN, MAC_CHKEXEC_DEP, &alen, depends, curthread); - for (npaths = 0, ap = paths; - (*ap = strsep(&depends, ":")) != NULL; npaths++) - if (**ap != '\0') - if (++ap >= &paths[10]) - break; - for (i = 0; i < npaths; i++) { + if (error) { + free(depends, M_CHKEXEC); + return (error); + } + for (; (ap = strsep(&depends, ":")) != NULL && error == 0;) { + if (strlen(ap) == 0) + continue; mtx_lock(&Giant); NDINIT(&nd, LOOKUP, LOCKLEAF | FOLLOW, UIO_SYSSPACE, - paths[i], curthread); + ap, curthread); if ((error = namei(&nd)) != 0) { free(depends, M_CHKEXEC); mtx_unlock(&Giant); @@ -543,13 +543,9 @@ NDFREE(&nd, NDF_ONLY_PNBUF); vput(nd.ni_vp); mtx_unlock(&Giant); - if (error) { - free(depends, M_CHKEXEC); - return (error); - } } free(depends, M_CHKEXEC); - return (0); + return (error); } static int