From 98bad5286975a431e248f82fe967596915b1e2f1 Mon Sep 17 00:00:00 2001 From: cognet Date: Tue, 28 Apr 2009 19:20:13 +0000 Subject: Change the test at the beginning of strncmp(), from being if (len - 1) < 0 to if (len == 0). The length is supposed to be unsigned, so len - 1 < 0 won't happen except if len == 0 anyway, and it would return 0 when it shouldn't, if len was > INT_MAX. Spotted out by: Channa --- lib/libc/arm/string/strncmp.S | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/libc/arm/string/strncmp.S b/lib/libc/arm/string/strncmp.S index d172264..5a2c422 100644 --- a/lib/libc/arm/string/strncmp.S +++ b/lib/libc/arm/string/strncmp.S @@ -33,10 +33,10 @@ __FBSDID("$FreeBSD$"); ENTRY(strncmp) -/* if ((len - 1) < 0) return 0 */ - subs r2, r2, #1 - movmi r0, #0 - movmi pc, lr +/* if (len == 0) return 0 */ + cmp r2, #0 + moveq r0, #0 + RETeq /* ip == last src address to compare */ add ip, r0, r2 -- cgit v1.1