Date: Tue, 28 Apr 2009 17:11:21 +0200 From: Olivier Houchard <mlfbsd@ci0.org> To: "M. Warner Losh" <imp@bsdimp.com> Cc: channa.kad@gmail.com, gavin@freebsd.org, freebsd-arm@freebsd.org Subject: Re: strncmp issue Message-ID: <20090428151121.GA1389@ci0.org> In-Reply-To: <20090428.084207.-1597329356.imp@bsdimp.com> References: <515c64960904280252sc9fe2afy24e8db8ab13b13e4@mail.gmail.com> <1240918262.85945.1.camel@buffy.york.ac.uk> <20090428.084207.-1597329356.imp@bsdimp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Apr 28, 2009 at 08:42:07AM -0600, M. Warner Losh wrote: > In message: <1240918262.85945.1.camel@buffy.york.ac.uk> > Gavin Atkinson <gavin@freebsd.org> writes: > : > : This probably belongs on the -arm list, which I'm CCing. > : > : On Tue, 2009-04-28 at 15:22 +0530, Channa wrote: > : > Hi, > : > > : > I am using the freebsd implementation of strncmp for ARM which is an > : > assembly implementation. > : > I have a small doubt, when i tested the strncmp by passing the third argument: > : > 'n' as -1 the return values is '0' instead it should '-1'. > : > When the third argument to strncmp is as below: > : > > : > ret = strncmp("a","b",-1) > > This is the same as strncnp("a", "b", UMAXINT) because the len > argument is "size_t" which is unsigned. > > : > I think the assembly implementation in > : > src/lib/libc/arm/string/strncmp.S file needs > : > to be modified to take care of the above condition. > : > > : > In the current implementation > : > /* if ((len - 1) < 0) return 0 */ > : > subs r2, r2, #1 > : > movmi r0, #0 > : > RETc(mi) > : > > : > This should be changed to check as below > : > > : > /* if ((len ) < 0) return 0 */ > : > /* Assembly code here */ > : > > : > Could anyone help in solving the above issue.? > > This is a bug in your code not in strncmp. > > Warner > > Still, strncmp("a", "b", UMAXINT) should not return 0, so if it does, it's a bug. Olivier
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090428151121.GA1389>