File kjs-stacklimit.diff of Package kdelibs4.openSUSE_12.3_Update

commit ffc8a6a316cacc8df6a91584653fe2c867a5d489
Author: Bernd Buschinski <b.buschinski@googlemail.com>
Date:   Fri Mar 29 21:26:40 2013 +0100

    kjs: Avoid overflow computing availableStackSize in KJS::RegExp::match
    
    REVIEW:109555
    BUG:316923

diff --git a/kjs/regexp.cpp b/kjs/regexp.cpp
index 5294d62..3622194 100644
--- a/kjs/regexp.cpp
+++ b/kjs/regexp.cpp
@@ -258,7 +258,12 @@ static bool sanitizePatternExtensions(UString &p, WTF::Vector<int>* parenIdx)
 
 bool RegExp::tryGrowingMaxStackSize = true;
 bool RegExp::didIncreaseMaxStackSize = false;
+
+#if HAVE(SYS_TIME_H)
+rlim_t RegExp::availableStackSize = 8*1024*1024;
+#else
 int RegExp::availableStackSize = 8*1024*1024;
+#endif
 
 RegExp::RegExp(const UString &p, char flags)
   : _pat(p), _flags(flags), _valid(true), _numSubPatterns(0)
diff --git a/kjs/regexp.h b/kjs/regexp.h
index f6132e6..67446fc 100644
--- a/kjs/regexp.h
+++ b/kjs/regexp.h
@@ -36,6 +36,13 @@ extern "C" { // bug with some libc5 distributions
 }
 #endif //HAVE_PCREPOSIX
 
+#if defined _WIN32 || defined _WIN64
+#undef HAVE_SYS_TIME_H
+#endif
+#if HAVE(SYS_TIME_H)
+#include <sys/resource.h>
+#endif
+
 #include "ustring.h"
 
 namespace KJS {
@@ -81,7 +88,11 @@ namespace KJS {
 
     static bool tryGrowingMaxStackSize;
     static bool didIncreaseMaxStackSize;
+#if HAVE(SYS_TIME_H)
+    static rlim_t availableStackSize;
+#else
     static int availableStackSize;
+#endif
   private:
 #ifdef HAVE_PCREPOSIX
     pcre *_regex;
openSUSE Build Service is sponsored by