strncmp issue

Channa channa.kad at gmail.com
Tue Apr 28 12:32:13 UTC 2009


2009/4/28 Olivier Houchard <mlfbsd at ci0.org>:
>> 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)
>> >
>> > 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.?
>> >
>
> Hi,
>
> This shouldn't be an issue, as the second argument of strncmp is unsigned,
> -1 is not a valid value.
>
> Regards,
>
> Olivier
>
Hi,
Thanks for the reply.
True the third argument of strncmp is unsigned but the return value in
the below call to strncmp

ret = strncmp("a","b",-1)

is '0' but it should be -1 i suppose.

Please let me know if anything is wrong.

Thanks & Regards,
Channagoud


More information about the freebsd-arm mailing list