From owner-cvs-src@FreeBSD.ORG Tue Jan 6 12:18:12 2004 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 900BB16A4CE; Tue, 6 Jan 2004 12:18:12 -0800 (PST) Received: from fafoe.narf.at (chello212186121237.14.vie.surfer.at [212.186.121.237]) by mx1.FreeBSD.org (Postfix) with ESMTP id E452843D48; Tue, 6 Jan 2004 12:18:10 -0800 (PST) (envelope-from stefan@fafoe.narf.at) Received: from wombat.fafoe.narf.at (wombat.fafoe.narf.at [192.168.1.42]) by fafoe.narf.at (Postfix) with ESMTP id 3124F40B6; Tue, 6 Jan 2004 21:18:06 +0100 (CET) Received: by wombat.fafoe.narf.at (Postfix, from userid 1001) id E1F921D7; Tue, 6 Jan 2004 21:18:04 +0100 (CET) Date: Tue, 6 Jan 2004 21:18:04 +0100 From: Stefan Farfeleder To: Jacques Vidrine Message-ID: <20040106201801.GA1348@wombat.fafoe.narf.at> References: <200401061843.i06IhV2L068324@repoman.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200401061843.i06IhV2L068324@repoman.freebsd.org> User-Agent: Mutt/1.5.5.1i cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/lib/libc/posix1e acl_delete_entry.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Jan 2004 20:18:12 -0000 On Tue, Jan 06, 2004 at 10:43:31AM -0800, Jacques Vidrine wrote: > nectar 2004/01/06 10:43:31 PST > > FreeBSD src repository > > Modified files: > lib/libc/posix1e acl_delete_entry.c > Log: > Avoid undefined behavior: > foo[i] = bar[++i]; /* Which operator [] will be evaluated first? */ > > Revision Changes Path > 1.6 +2 -2 src/lib/libc/posix1e/acl_delete_entry.c @@ -61,9 +61,9 @@ acl_delete_entry(acl_t acl, acl_entry_t if ((acl->ats_acl.acl_entry[i].ae_tag == entry_d->ae_tag) && (acl->ats_acl.acl_entry[i].ae_id == entry_d->ae_id)) { /* ...shift the remaining entries... */ - while (i < acl->ats_acl.acl_cnt - 1) + for (; i < acl->ats_acl.acl_cnt - 1; ++i) acl->ats_acl.acl_entry[i] = - acl->ats_acl.acl_entry[++i]; + acl->ats_acl.acl_entry[i]; I think that last assignment should read: acl->ats_acl.acl_entry[i] = acl->ats_acl.acl_entry[i + 1]; Using memmove() instead might be a good idea too. Cheers, Stefan