diff --git a/hphp/runtime/ext/wddx/ext_wddx.cpp b/hphp/runtime/ext/wddx/ext_wddx.cpp index be49b776f187e..9d249de0d7be1 100644 --- a/hphp/runtime/ext/wddx/ext_wddx.cpp +++ b/hphp/runtime/ext/wddx/ext_wddx.cpp @@ -126,9 +126,13 @@ bool WddxPacket::recursiveAddVar(const String& varName, std::string varType = getDataTypeString(varVariant.getType()).data(); if (!getWddxEncoded(varType, "", varName, false).empty()) { - std::string varValue = varVariant.toString().data(); + std::string varValue; if (varType.compare("boolean") == 0) { varValue = varVariant.toBoolean() ? "true" : "false"; + } else { + varValue = StringUtil::HtmlEncode(varVariant.toString(), + StringUtil::QuoteStyle::Double, + "UTF-8", false, false).toCppString(); } m_packetString += getWddxEncoded(varType, varValue, varName, hasVarTag); return true; diff --git a/hphp/test/slow/ext_wddx/htmlent.php b/hphp/test/slow/ext_wddx/htmlent.php new file mode 100644 index 0000000000000..c87d13db3dfa9 --- /dev/null +++ b/hphp/test/slow/ext_wddx/htmlent.php @@ -0,0 +1,5 @@ +
Test for &" +string(10) "Test for &"