EnvironmentUtilities::stripValuesEndingWithString enters an infinite loop if the...
authormitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 1 Jan 2012 19:44:03 +0000 (19:44 +0000)
committermitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 1 Jan 2012 19:44:03 +0000 (19:44 +0000)
occurs a component other than the first.

Reviewed by Anders Carlsson.

* Platform/unix/EnvironmentUtilities.cpp:
(WebKit::EnvironmentUtilities::stripValuesEndingWithString): Changed to start the search for
the next colon after the current colon.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@103880 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/Platform/unix/EnvironmentUtilities.cpp

index 5e494559c5964a3a21c0b9e672b18aecc820d2a8..3019de3db991b3012c7ad981ddda80bc8874d626 100644 (file)
@@ -1,3 +1,14 @@
+2012-01-01  Dan Bernstein  <mitz@apple.com>
+
+        EnvironmentUtilities::stripValuesEndingWithString enters an infinite loop if the search value
+        occurs a component other than the first.
+
+        Reviewed by Anders Carlsson.
+
+        * Platform/unix/EnvironmentUtilities.cpp:
+        (WebKit::EnvironmentUtilities::stripValuesEndingWithString): Changed to start the search for
+        the next colon after the current colon.
+
 2012-01-01  Dan Bernstein  <mitz@apple.com>
 
         Improved reproting of kernel return codes.
index a78cbd18ed0c8514130a64f8892d60a9a31d3eff..f884c7a86e4d881d82e6b90b21703e5984fc0bbe 100644 (file)
@@ -66,7 +66,7 @@ void stripValuesEndingWithString(const char* environmentVariable, const char* se
         char* nextColon = strstr(componentStart, ":");
         while (nextColon && nextColon < match) {
             componentStart = nextColon;
-            nextColon = strstr(componentStart, ":");
+            nextColon = strstr(componentStart + 1, ":");
         }
                 
         // Copy over everything right of the match to the current component start, and search from there again.
@@ -97,7 +97,7 @@ void stripValuesEndingWithString(const char* environmentVariable, const char* se
         char* nextColon = strstr(componentStart, ":");
         while (nextColon && nextColon < match) {
             componentStart = nextColon;
-            nextColon = strstr(componentStart, ":");
+            nextColon = strstr(componentStart + 1, ":");
         }
         
         // Whether componentStart points to the original string or the last colon, putting the null terminator there will get us the desired result.