Fix potential memory violation in CJS_PublicMethods::StrRTrim()
authorTom Sepez <tsepez@chromium.org>
Wed, 23 Jul 2014 17:50:06 +0000 (10:50 -0700)
committerTom Sepez <tsepez@chromium.org>
Wed, 23 Jul 2014 17:50:06 +0000 (10:50 -0700)
BUG=395266
R=jun_fang@foxitsoftware.com

Review URL: https://codereview.chromium.org/411713003

fpdfsdk/src/javascript/PublicMethods.cpp

index 08d5cb7..c030d6c 100644 (file)
@@ -222,16 +222,10 @@ CFX_WideString CJS_PublicMethods::StrLTrim(FX_LPCWSTR pStr)
 CFX_WideString CJS_PublicMethods::StrRTrim(FX_LPCWSTR pStr)
 {
        FX_LPCWSTR p = pStr;
-
        while (*p) p++;
-       p--;
-       if (p >= pStr)
-       {               
-               while (*p && *p == L' ') p--;
-               p++;
-               return CFX_WideString(pStr,p-pStr);
-       }
-       return L"";
+       while (p > pStr && *(p - 1) == L' ') p--;
+
+       return CFX_WideString(pStr, p - pStr);
 }
 
 CFX_WideString CJS_PublicMethods::StrTrim(FX_LPCWSTR pStr)
@@ -243,22 +237,16 @@ CFX_ByteString CJS_PublicMethods::StrLTrim(FX_LPCSTR pStr)
 {
        while (*pStr && *pStr == ' ') pStr++;
 
-    return pStr;
+        return pStr;
 }
 
 CFX_ByteString CJS_PublicMethods::StrRTrim(FX_LPCSTR pStr)
 {
        FX_LPCSTR p = pStr;
-
        while (*p) p++;
-       p--;
-       if (p >= pStr)
-       {               
-               while (*p && *p == ' ') p--;
-               p++;
-               return CFX_ByteString(pStr,p-pStr);
-       }
-       return "";
+       while (p > pStr && *(p - 1) == L' ') p--;
+
+       return CFX_ByteString(pStr,p-pStr);
 }
 
 CFX_ByteString CJS_PublicMethods::StrTrim(FX_LPCSTR pStr)