strncmp issue
Olivier Houchard
mlfbsd at ci0.org
Tue Apr 28 15:02:31 UTC 2009
On Tue, Apr 28, 2009 at 08:42:07AM -0600, M. Warner Losh wrote:
> In message: <1240918262.85945.1.camel at buffy.york.ac.uk>
> Gavin Atkinson <gavin at 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
More information about the freebsd-arm
mailing list