Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Side by Side Diff: fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp

Issue 1651193005: Fix heap-use-after-free in V8::Initialize() (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "fpdfsdk/include/fsdk_define.h" 7 #include "fpdfsdk/include/fsdk_define.h"
8 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h" 8 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h"
9 #include "fpdfsdk/include/fsdk_mgr.h" 9 #include "fpdfsdk/include/fsdk_mgr.h"
10 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_app.h" 10 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_app.h"
(...skipping 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after
1102 srcURL = srcURL.Right(csURL.GetLength() - (pos + 1)); 1102 srcURL = srcURL.Right(csURL.GetLength() - (pos + 1));
1103 } 1103 }
1104 csToAddress.Replace(L",", L";"); 1104 csToAddress.Replace(L",", L";");
1105 csCCAddress.Replace(L",", L";"); 1105 csCCAddress.Replace(L",", L";");
1106 csBCCAddress.Replace(L",", L";"); 1106 csBCCAddress.Replace(L",", L";");
1107 return TRUE; 1107 return TRUE;
1108 } 1108 }
1109 1109
1110 FX_BOOL CPDFXFA_Document::_SubmitData(IXFA_Doc* hDoc, CXFA_Submit submit) { 1110 FX_BOOL CPDFXFA_Document::_SubmitData(IXFA_Doc* hDoc, CXFA_Submit submit) {
1111 #ifdef PDF_ENABLE_XFA 1111 #ifdef PDF_ENABLE_XFA
1112 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
1113 if (!pEnv)
1114 return FALSE;
1112 CFX_WideStringC csURLC; 1115 CFX_WideStringC csURLC;
1113 submit.GetSubmitTarget(csURLC); 1116 submit.GetSubmitTarget(csURLC);
1114 CFX_WideString csURL = csURLC; 1117 CFX_WideString csURL = csURLC;
1115 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
1116 if (pEnv == NULL)
1117 return FALSE;
1118 if (csURL.IsEmpty()) { 1118 if (csURL.IsEmpty()) {
1119 CFX_WideString ws; 1119 CFX_WideString ws;
1120 ws.FromLocal("Submit cancelled."); 1120 ws.FromLocal("Submit cancelled.");
1121 CFX_ByteString bs = ws.UTF16LE_Encode(); 1121 CFX_ByteString bs = ws.UTF16LE_Encode();
1122 int len = bs.GetLength() / sizeof(unsigned short); 1122 int len = bs.GetLength() / sizeof(unsigned short);
1123 pEnv->FFI_Alert((FPDF_WIDESTRING)bs.GetBuffer(len * sizeof(unsigned short)), 1123 pEnv->FFI_Alert((FPDF_WIDESTRING)bs.GetBuffer(len * sizeof(unsigned short)),
1124 (FPDF_WIDESTRING)L"", 0, 4); 1124 (FPDF_WIDESTRING)L"", 0, 4);
1125 bs.ReleaseBuffer(len * sizeof(unsigned short)); 1125 bs.ReleaseBuffer(len * sizeof(unsigned short));
1126 return FALSE; 1126 return FALSE;
1127 } 1127 }
1128
1129 FPDF_BOOL bRet = TRUE; 1128 FPDF_BOOL bRet = TRUE;
1130 FPDF_FILEHANDLER* pFileHandler = NULL; 1129 FPDF_FILEHANDLER* pFileHandler = nullptr;
1131 int fileFlag = -1; 1130 int fileFlag = -1;
1132 1131 switch (submit.GetSubmitFormat()) {
1133 if (submit.GetSubmitFormat() == XFA_ATTRIBUTEENUM_Xdp) { 1132 case XFA_ATTRIBUTEENUM_Xdp: {
1134 CFX_WideStringC csContentC; 1133 CFX_WideStringC csContentC;
1135 submit.GetSubmitXDPContent(csContentC); 1134 submit.GetSubmitXDPContent(csContentC);
1136 CFX_WideString csContent; 1135 CFX_WideString csContent;
1137 csContent = csContentC.GetPtr(); 1136 csContent = csContentC;
jun_fang 2016/02/02 12:06:09 Here is the crashed point. FXSYS_wcslen was used
1138 csContent.TrimLeft(); 1137 csContent.TrimLeft();
1139 csContent.TrimRight(); 1138 csContent.TrimRight();
1140 CFX_WideString space; 1139 CFX_WideString space;
1141 space.FromLocal(" "); 1140 space.FromLocal(" ");
1142 csContent = space + csContent + space; 1141 csContent = space + csContent + space;
1143 FPDF_DWORD flag = 0; 1142 FPDF_DWORD flag = 0;
1144 if (submit.IsSubmitEmbedPDF()) 1143 if (submit.IsSubmitEmbedPDF())
1145 flag |= FXFA_PDF; 1144 flag |= FXFA_PDF;
1146 _ToXFAContentFlags(csContent, flag); 1145 _ToXFAContentFlags(csContent, flag);
1147 pFileHandler = pEnv->FFI_OpenFile(FXFA_SAVEAS_XDP, NULL, "wb"); 1146 pFileHandler = pEnv->FFI_OpenFile(FXFA_SAVEAS_XDP, nullptr, "wb");
1148 fileFlag = FXFA_SAVEAS_XDP; 1147 fileFlag = FXFA_SAVEAS_XDP;
1149 _ExportSubmitFile(pFileHandler, FXFA_SAVEAS_XDP, 0, flag); 1148 _ExportSubmitFile(pFileHandler, FXFA_SAVEAS_XDP, 0, flag);
1150 } else if (submit.GetSubmitFormat() == XFA_ATTRIBUTEENUM_Xml) { 1149 break;
1151 pFileHandler = pEnv->FFI_OpenFile(FXFA_SAVEAS_XML, NULL, "wb"); 1150 }
1152 fileFlag = FXFA_SAVEAS_XML; 1151 case XFA_ATTRIBUTEENUM_Xml:
1153 _ExportSubmitFile(pFileHandler, FXFA_SAVEAS_XML, 0); 1152 pFileHandler = pEnv->FFI_OpenFile(FXFA_SAVEAS_XML, nullptr, "wb");
1154 } else if (submit.GetSubmitFormat() == XFA_ATTRIBUTEENUM_Pdf) { 1153 fileFlag = FXFA_SAVEAS_XML;
1155 // csfilename = csDocName; 1154 _ExportSubmitFile(pFileHandler, FXFA_SAVEAS_XML, 0);
1156 } else if (submit.GetSubmitFormat() == XFA_ATTRIBUTEENUM_Formdata) { 1155 break;
1157 return FALSE; 1156 case XFA_ATTRIBUTEENUM_Pdf:
1158 } else if (submit.GetSubmitFormat() == XFA_ATTRIBUTEENUM_Urlencoded) { 1157 break;
1159 pFileHandler = pEnv->FFI_OpenFile(FXFA_SAVEAS_XML, NULL, "wb"); 1158 case XFA_ATTRIBUTEENUM_Urlencoded:
1160 fileFlag = FXFA_SAVEAS_XML; 1159 pFileHandler = pEnv->FFI_OpenFile(FXFA_SAVEAS_XML, nullptr, "wb");
1161 _ExportSubmitFile(pFileHandler, FXFA_SAVEAS_XML, 0); 1160 fileFlag = FXFA_SAVEAS_XML;
1162 } else if (submit.GetSubmitFormat() == XFA_ATTRIBUTEENUM_Xfd) { 1161 _ExportSubmitFile(pFileHandler, FXFA_SAVEAS_XML, 0);
1163 return FALSE; 1162 break;
1164 } else { 1163 default:
1165 return FALSE; 1164 return false;
1166 } 1165 }
1167 if (pFileHandler == NULL) 1166 if (!pFileHandler)
1168 return FALSE; 1167 return FALSE;
1169 if (0 == csURL.Left(7).CompareNoCase(L"mailto:")) { 1168 if (0 == csURL.Left(7).CompareNoCase(L"mailto:")) {
1170 CFX_WideString csToAddress; 1169 CFX_WideString csToAddress;
1171 CFX_WideString csCCAddress; 1170 CFX_WideString csCCAddress;
1172 CFX_WideString csBCCAddress; 1171 CFX_WideString csBCCAddress;
1173 CFX_WideString csSubject; 1172 CFX_WideString csSubject;
1174 CFX_WideString csMsg; 1173 CFX_WideString csMsg;
1175
1176 bRet = _MailToInfo(csURL, csToAddress, csCCAddress, csBCCAddress, csSubject, 1174 bRet = _MailToInfo(csURL, csToAddress, csCCAddress, csBCCAddress, csSubject,
1177 csMsg); 1175 csMsg);
1178 if (FALSE == bRet) 1176 if (!bRet)
1179 return FALSE; 1177 return FALSE;
1180
1181 CFX_ByteString bsTo = CFX_WideString(csToAddress).UTF16LE_Encode(); 1178 CFX_ByteString bsTo = CFX_WideString(csToAddress).UTF16LE_Encode();
1182 CFX_ByteString bsCC = CFX_WideString(csCCAddress).UTF16LE_Encode(); 1179 CFX_ByteString bsCC = CFX_WideString(csCCAddress).UTF16LE_Encode();
1183 CFX_ByteString bsBcc = CFX_WideString(csBCCAddress).UTF16LE_Encode(); 1180 CFX_ByteString bsBcc = CFX_WideString(csBCCAddress).UTF16LE_Encode();
1184 CFX_ByteString bsSubject = CFX_WideString(csSubject).UTF16LE_Encode(); 1181 CFX_ByteString bsSubject = CFX_WideString(csSubject).UTF16LE_Encode();
1185 CFX_ByteString bsMsg = CFX_WideString(csMsg).UTF16LE_Encode(); 1182 CFX_ByteString bsMsg = CFX_WideString(csMsg).UTF16LE_Encode();
1186
1187 FPDF_WIDESTRING pTo = (FPDF_WIDESTRING)bsTo.GetBuffer(bsTo.GetLength()); 1183 FPDF_WIDESTRING pTo = (FPDF_WIDESTRING)bsTo.GetBuffer(bsTo.GetLength());
1188 FPDF_WIDESTRING pCC = (FPDF_WIDESTRING)bsCC.GetBuffer(bsCC.GetLength()); 1184 FPDF_WIDESTRING pCC = (FPDF_WIDESTRING)bsCC.GetBuffer(bsCC.GetLength());
1189 FPDF_WIDESTRING pBcc = (FPDF_WIDESTRING)bsBcc.GetBuffer(bsBcc.GetLength()); 1185 FPDF_WIDESTRING pBcc = (FPDF_WIDESTRING)bsBcc.GetBuffer(bsBcc.GetLength());
1190 FPDF_WIDESTRING pSubject = 1186 FPDF_WIDESTRING pSubject =
1191 (FPDF_WIDESTRING)bsSubject.GetBuffer(bsSubject.GetLength()); 1187 (FPDF_WIDESTRING)bsSubject.GetBuffer(bsSubject.GetLength());
1192 FPDF_WIDESTRING pMsg = (FPDF_WIDESTRING)bsMsg.GetBuffer(bsMsg.GetLength()); 1188 FPDF_WIDESTRING pMsg = (FPDF_WIDESTRING)bsMsg.GetBuffer(bsMsg.GetLength());
1193
1194 pEnv->FFI_EmailTo(pFileHandler, pTo, pSubject, pCC, pBcc, pMsg); 1189 pEnv->FFI_EmailTo(pFileHandler, pTo, pSubject, pCC, pBcc, pMsg);
1195 bsTo.ReleaseBuffer(); 1190 bsTo.ReleaseBuffer();
1196 bsCC.ReleaseBuffer(); 1191 bsCC.ReleaseBuffer();
1197 bsBcc.ReleaseBuffer(); 1192 bsBcc.ReleaseBuffer();
1198 bsSubject.ReleaseBuffer(); 1193 bsSubject.ReleaseBuffer();
1199 bsMsg.ReleaseBuffer(); 1194 bsMsg.ReleaseBuffer();
1200 } else { 1195 } else {
1201 // http¡¢ftp 1196 // http¡¢ftp
1202 CFX_WideString ws; 1197 CFX_WideString ws;
1203 CFX_ByteString bs = csURL.UTF16LE_Encode(); 1198 CFX_ByteString bs = csURL.UTF16LE_Encode();
1204 int len = bs.GetLength() / sizeof(unsigned short); 1199 int len = bs.GetLength() / sizeof(unsigned short);
1205 pEnv->FFI_UploadTo( 1200 pEnv->FFI_UploadTo(
1206 pFileHandler, fileFlag, 1201 pFileHandler, fileFlag,
1207 (FPDF_WIDESTRING)bs.GetBuffer(len * sizeof(unsigned short))); 1202 (FPDF_WIDESTRING)bs.GetBuffer(len * sizeof(unsigned short)));
1208 bs.ReleaseBuffer(len * sizeof(unsigned short)); 1203 bs.ReleaseBuffer(len * sizeof(unsigned short));
1209 } 1204 }
1210
1211 return bRet; 1205 return bRet;
1212 #else 1206 #else
1213 return TRUE; 1207 return TRUE;
1214 #endif 1208 #endif
1215 } 1209 }
1216 1210
1217 FX_BOOL CPDFXFA_Document::SetGlobalProperty(IXFA_Doc* hDoc, 1211 FX_BOOL CPDFXFA_Document::SetGlobalProperty(IXFA_Doc* hDoc,
1218 const CFX_ByteStringC& szPropName, 1212 const CFX_ByteStringC& szPropName,
1219 FXJSE_HVALUE hValue) { 1213 FXJSE_HVALUE hValue) {
1220 if (hDoc != m_pXFADoc) 1214 if (hDoc != m_pXFADoc)
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1256 } 1250 }
1257 1251
1258 return _GetHValueByName(szPropName, hValue, 1252 return _GetHValueByName(szPropName, hValue,
1259 m_pSDKDoc->GetEnv()->GetJSRuntime()); 1253 m_pSDKDoc->GetEnv()->GetJSRuntime());
1260 } 1254 }
1261 FX_BOOL CPDFXFA_Document::_GetHValueByName(const CFX_ByteStringC& utf8Name, 1255 FX_BOOL CPDFXFA_Document::_GetHValueByName(const CFX_ByteStringC& utf8Name,
1262 FXJSE_HVALUE hValue, 1256 FXJSE_HVALUE hValue,
1263 IJS_Runtime* runTime) { 1257 IJS_Runtime* runTime) {
1264 return runTime->GetHValueByName(utf8Name, hValue); 1258 return runTime->GetHValueByName(utf8Name, hValue);
1265 } 1259 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698