diff options
author | Tom Sepez <tsepez@chromium.org> | 2018-10-15 21:57:32 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-10-15 21:57:32 +0000 |
commit | d2e27d660a96080882e43825fb4b5d03e8a4d05a (patch) | |
tree | a4c9b00b34829183d28116059fd48d9650f7b424 /fxjs | |
parent | 1123794330298b00a40ca35e9ada3ac2d6a664f3 (diff) | |
download | pdfium-d2e27d660a96080882e43825fb4b5d03e8a4d05a.tar.xz |
Clone dict before iteration in CJS_Document::get_info
Bug: 895152
Change-Id: I678350841892f88a5d580b58a33a639a1b6ec305
Reviewed-on: https://pdfium-review.googlesource.com/c/44050
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'fxjs')
-rw-r--r-- | fxjs/cjs_document.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fxjs/cjs_document.cpp b/fxjs/cjs_document.cpp index f682ffd636..adf36be403 100644 --- a/fxjs/cjs_document.cpp +++ b/fxjs/cjs_document.cpp @@ -740,8 +740,9 @@ CJS_Result CJS_Document::get_info(CJS_Runtime* pRuntime) { pRuntime->PutObjectProperty(pObj, L"Trapped", pRuntime->NewString(cwTrapped.AsStringView())); - // It's to be compatible to non-standard info dictionary. - for (const auto& it : *pDictionary) { + // PutObjectProperty() calls below may re-enter JS and change info dict. + auto pCopy = pDictionary->Clone(); + for (const auto& it : *ToDictionary(pCopy.get())) { const ByteString& bsKey = it.first; CPDF_Object* pValueObj = it.second.get(); WideString wsKey = WideString::FromUTF8(bsKey.AsStringView()); |