[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdelibs/kdecore
From:       Oswald Buddenhagen <ossi () kde ! org>
Date:       2004-06-01 1:22:09
Message-ID: 20040601012209.69FC592A8 () office ! kde ! org
[Download RAW message or body]

CVS commit by ossi: 

whoops. don't hang upon unterminated braced expandos.


  M +6 -2      kmacroexpander.cpp   1.8
  M +3 -0      tests/kmacroexpandertest.cpp   1.6


--- kdelibs/kdecore/kmacroexpander.cpp  #1.7:1.8
@@ -409,5 +409,7 @@ KMacroMapExpander<QString,VT>::expandEsc
     if (str[pos + 1] == '{') {
         rpos = pos + 2;
-        for (sl = 0; str[rpos + sl] != '}'; sl++);
+        for (sl = 0; str[rpos + sl] != '}'; sl++)
+            if (rpos + sl >= str.length())
+                return 0;
         rsl = sl + 3;
     } else {
@@ -473,5 +475,7 @@ KWordMacroExpander::expandEscapedMacro( 
     if (str[pos + 1] == '{') {
         rpos = pos + 2;
-        for (sl = 0; str[rpos + sl] != '}'; sl++);
+        for (sl = 0; str[rpos + sl] != '}'; sl++)
+            if (rpos + sl >= str.length())
+                return 0;
         rsl = sl + 3;
     } else {

--- kdelibs/kdecore/tests/kmacroexpandertest.cpp  #1.5:1.6
@@ -118,4 +118,7 @@ int main(int argc, char *argv[])
   check( "KMacroExpander::expandMacros", s, KMacroExpander::expandMacros(s, smap), \
"Title: %n-filename.txt-http://www.kde.org/index.html-Restaurant \"Chew It\"-%");  
+  s = "Title: %{file} %{url";
+  check( "KMacroExpander::expandMacros", s, KMacroExpander::expandMacros(s, smap), \
"Title: filename.txt %{url"); +
   MyCExpander mx1;
   s = "subst %m but not %n equ %%";


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic