Fix strcmp and strncmp. They failed in several important scenarios
authorPatrick Georgi <patrick.georgi@coresystems.de>
Mon, 16 Aug 2010 18:04:13 +0000 (18:04 +0000)
committerPatrick Georgi <patrick.georgi@coresystems.de>
Mon, 16 Aug 2010 18:04:13 +0000 (18:04 +0000)
Signed-off-by: Patrick Georgi <patrick.georgi@coresystems.de>
Acked-by: Patrick Georgi <patrick.georgi@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5700 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

payloads/libpayload/libc/string.c

index 1ca8bc12e828e7eab4c1d090837d045ce383fd11..7bf19ace375bceaf545c1f7f87fb085d8c88ee26 100644 (file)
@@ -91,7 +91,7 @@ int strcasecmp(const char *s1, const char *s2)
 {
        int i;
 
-       for (i = 0; 1; i++) {
+       for (i = 0; s1[i] != '\0'; i++) {
                if (tolower(s1[i]) != tolower(s2[i]))
                        return s1[i] - s2[i];
        }
@@ -116,7 +116,7 @@ int strncasecmp(const char *s1, const char *s2, size_t maxlen)
                        return s1[i] - s2[i];
        }
 
-       return 0;
+       return s1[i] - s2[i];
 }
 
 /**
@@ -132,12 +132,12 @@ int strcmp(const char *s1, const char *s2)
 {
        int i;
 
-       for (i = 0; 1; i++) {
+       for (i = 0; s1[i] != '\0'; i++) {
                if (s1[i] != s2[i])
                        return s1[i] - s2[i];
        }
 
-       return 0;
+       return s1[i] - s2[i];
 }
 
 /**