foxygit / doom Log in
commit 59bc6523b4869e515aefa9118715cd440b163fc4
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Sun Apr 18 18:48:48 2010 +0000
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Sun Apr 18 18:48:48 2010 +0000

    Fix unsigned integer overflow with calls to M_StrCaseStr where
    strlen(haystack) < strlen(needle)

    Subversion-branch: /branches/raven-branch
    Subversion-revision: 1906
---
 src/m_misc.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/m_misc.c b/src/m_misc.c
index 9d3144b2..ed41b5f1 100644
--- a/src/m_misc.c
+++ b/src/m_misc.c
@@ -263,12 +263,20 @@ void M_ForceUppercase(char *text)

 char *M_StrCaseStr(char *haystack, char *needle)
 {
+    unsigned int haystack_len;
     unsigned int needle_len;
     unsigned int len;
     unsigned int i;

+    haystack_len = strlen(haystack);
     needle_len = strlen(needle);
-    len = strlen(haystack) - needle_len;
+
+    if (haystack_len < needle_len)
+    {
+        return NULL;
+    }
+
+    len = haystack_len - needle_len;

     for (i = 0; i <= len; ++i)
     {