From owner-svn-src-user@freebsd.org Mon Jan 18 04:41:13 2016 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1589FA8687D for ; Mon, 18 Jan 2016 04:41:13 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C810F181F; Mon, 18 Jan 2016 04:41:12 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u0I4fBC2011009; Mon, 18 Jan 2016 04:41:11 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u0I4fBs9011008; Mon, 18 Jan 2016 04:41:11 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201601180441.u0I4fBs9011008@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Mon, 18 Jan 2016 04:41:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r294247 - user/ngie/socket-tests/tools/regression/sockets/unix_cmsg X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jan 2016 04:41:13 -0000 Author: ngie Date: Mon Jan 18 04:41:11 2016 New Revision: 294247 URL: https://svnweb.freebsd.org/changeset/base/294247 Log: Don't return immediately in check_xucred, check_scm_creds_cmsgcred, and check_scm_creds_sockcred after initial != NULL checks have been done This will provide potentially helpful data as to what all failed when compared, not just the first thing that failed. Modified: user/ngie/socket-tests/tools/regression/sockets/unix_cmsg/unix_cmsg.c Modified: user/ngie/socket-tests/tools/regression/sockets/unix_cmsg/unix_cmsg.c ============================================================================== --- user/ngie/socket-tests/tools/regression/sockets/unix_cmsg/unix_cmsg.c Mon Jan 18 04:32:19 2016 (r294246) +++ user/ngie/socket-tests/tools/regression/sockets/unix_cmsg/unix_cmsg.c Mon Jan 18 04:41:11 2016 (r294247) @@ -980,6 +980,8 @@ check_groups(const char *gid_arr_str, co static int check_xucred(const struct xucred *xucred, socklen_t len) { + int rc; + if (len != sizeof(*xucred)) { logmsgx("option value size %zu != %zu", (size_t)len, sizeof(*xucred)); @@ -990,44 +992,47 @@ check_xucred(const struct xucred *xucred dbgmsg("xucred.cr_uid %lu", (u_long)xucred->cr_uid); dbgmsg("xucred.cr_ngroups %d", xucred->cr_ngroups); + rc = 0; + if (xucred->cr_version != XUCRED_VERSION) { logmsgx("xucred.cr_version %u != %d", xucred->cr_version, XUCRED_VERSION); - return (-1); + rc = -1; } if (xucred->cr_uid != proc_cred.euid) { logmsgx("xucred.cr_uid %lu != %lu (EUID)", (u_long)xucred->cr_uid, (u_long)proc_cred.euid); - return (-1); + rc = -1; } if (xucred->cr_ngroups == 0) { logmsgx("xucred.cr_ngroups == 0"); - return (-1); + rc = -1; } if (xucred->cr_ngroups < 0) { logmsgx("xucred.cr_ngroups < 0"); - return (-1); + rc = -1; } if (xucred->cr_ngroups > XU_NGROUPS) { logmsgx("xucred.cr_ngroups %hu > %u (max)", xucred->cr_ngroups, XU_NGROUPS); - return (-1); + rc = -1; } if (xucred->cr_groups[0] != proc_cred.egid) { logmsgx("xucred.cr_groups[0] %lu != %lu (EGID)", (u_long)xucred->cr_groups[0], (u_long)proc_cred.egid); - return (-1); + rc = -1; } if (check_groups("xucred.cr_groups", xucred->cr_groups, "xucred.cr_ngroups", xucred->cr_ngroups, false) < 0) - return (-1); - return (0); + rc = -1; + return (rc); } static int check_scm_creds_cmsgcred(struct cmsghdr *cmsghdr) { struct cmsgcred cmsgcred; + int rc; if (check_cmsghdr(cmsghdr, SCM_CREDS, sizeof(cmsgcred)) < 0) return (-1); @@ -1040,55 +1045,58 @@ check_scm_creds_cmsgcred(struct cmsghdr dbgmsg("cmsgcred.cmcred_gid %lu", (u_long)cmsgcred.cmcred_gid); dbgmsg("cmsgcred.cmcred_ngroups %d", cmsgcred.cmcred_ngroups); + rc = 0; + if (cmsgcred.cmcred_pid != client_pid) { logmsgx("cmsgcred.cmcred_pid %ld != %ld", (long)cmsgcred.cmcred_pid, (long)client_pid); - return (-1); + rc = -1; } if (cmsgcred.cmcred_uid != proc_cred.uid) { logmsgx("cmsgcred.cmcred_uid %lu != %lu", (u_long)cmsgcred.cmcred_uid, (u_long)proc_cred.uid); - return (-1); + rc = -1; } if (cmsgcred.cmcred_euid != proc_cred.euid) { logmsgx("cmsgcred.cmcred_euid %lu != %lu", (u_long)cmsgcred.cmcred_euid, (u_long)proc_cred.euid); - return (-1); + rc = -1; } if (cmsgcred.cmcred_gid != proc_cred.gid) { logmsgx("cmsgcred.cmcred_gid %lu != %lu", (u_long)cmsgcred.cmcred_gid, (u_long)proc_cred.gid); - return (-1); + rc = -1; } if (cmsgcred.cmcred_ngroups == 0) { logmsgx("cmsgcred.cmcred_ngroups == 0"); - return (-1); + rc = -1; } if (cmsgcred.cmcred_ngroups < 0) { logmsgx("cmsgcred.cmcred_ngroups %d < 0", cmsgcred.cmcred_ngroups); - return (-1); + rc = -1; } if (cmsgcred.cmcred_ngroups > CMGROUP_MAX) { logmsgx("cmsgcred.cmcred_ngroups %d > %d", cmsgcred.cmcred_ngroups, CMGROUP_MAX); - return (-1); + rc = -1; } if (cmsgcred.cmcred_groups[0] != proc_cred.egid) { logmsgx("cmsgcred.cmcred_groups[0] %lu != %lu (EGID)", (u_long)cmsgcred.cmcred_groups[0], (u_long)proc_cred.egid); - return (-1); + rc = -1; } if (check_groups("cmsgcred.cmcred_groups", cmsgcred.cmcred_groups, "cmsgcred.cmcred_ngroups", cmsgcred.cmcred_ngroups, false) < 0) - return (-1); - return (0); + rc = -1; + return (rc); } static int check_scm_creds_sockcred(struct cmsghdr *cmsghdr) { struct sockcred sockcred; + int rc; if (check_cmsghdr(cmsghdr, SCM_CREDS, SOCKCREDSIZE(proc_cred.gid_num)) < 0) @@ -1102,44 +1110,46 @@ check_scm_creds_sockcred(struct cmsghdr dbgmsg("sockcred.sc_egid %lu", (u_long)sockcred.sc_egid); dbgmsg("sockcred.sc_ngroups %d", sockcred.sc_ngroups); + rc = 0; + if (sockcred.sc_uid != proc_cred.uid) { logmsgx("sockcred.sc_uid %lu != %lu", (u_long)sockcred.sc_uid, (u_long)proc_cred.uid); - return (-1); + rc = -1; } if (sockcred.sc_euid != proc_cred.euid) { logmsgx("sockcred.sc_euid %lu != %lu", (u_long)sockcred.sc_euid, (u_long)proc_cred.euid); - return (-1); + rc = -1; } if (sockcred.sc_gid != proc_cred.gid) { logmsgx("sockcred.sc_gid %lu != %lu", (u_long)sockcred.sc_gid, (u_long)proc_cred.gid); - return (-1); + rc = -1; } if (sockcred.sc_egid != proc_cred.egid) { logmsgx("sockcred.sc_egid %lu != %lu", (u_long)sockcred.sc_egid, (u_long)proc_cred.egid); - return (-1); + rc = -1; } if (sockcred.sc_ngroups == 0) { logmsgx("sockcred.sc_ngroups == 0"); - return (-1); + rc = -1; } if (sockcred.sc_ngroups < 0) { logmsgx("sockcred.sc_ngroups %d < 0", sockcred.sc_ngroups); - return (-1); + rc = -1; } if (sockcred.sc_ngroups != proc_cred.gid_num) { logmsgx("sockcred.sc_ngroups %d != %u", sockcred.sc_ngroups, proc_cred.gid_num); - return (-1); + rc = -1; } if (check_groups("sockcred.sc_groups", sockcred.sc_groups, "sockcred.sc_ngroups", sockcred.sc_ngroups, true) < 0) - return (-1); - return (0); + rc = -1; + return (rc); } static int