Bug 2057130 - Validate principal and filter type properly; r=tschuster
Differential Revision: https://phabricator.services.mozilla.com/D315220
This commit is contained in:
committed by
echen@mozilla.com
parent
c28639085f
commit
0ef4372cc7
@@ -113,6 +113,7 @@
|
||||
#include "mozilla/Span.h"
|
||||
#include "mozilla/StaticAnalysisFunctions.h"
|
||||
#include "mozilla/StaticPrefs_browser.h"
|
||||
#include "mozilla/StaticPrefs_clipboard.h"
|
||||
#include "mozilla/StaticPrefs_dom.h"
|
||||
#include "mozilla/StaticPrefs_network.h"
|
||||
#include "mozilla/dom/ReportDeliver.h"
|
||||
@@ -9819,11 +9820,33 @@ nsresult nsContentUtils::IPCTransferableDataToTransferable(
|
||||
nsresult rv;
|
||||
const nsTArray<IPCTransferableDataItem>& items = aTransferableData.items();
|
||||
for (const auto& item : items) {
|
||||
if (aFilterUnknownFlavors && !IPCTransferableDataItemHasKnownFlavor(item)) {
|
||||
NS_WARNING(
|
||||
"Ignoring unknown flavor in "
|
||||
"nsContentUtils::IPCTransferableDataToTransferable");
|
||||
continue;
|
||||
if (aFilterUnknownFlavors) {
|
||||
if (item.flavor().EqualsLiteral(kFilePromiseDirectoryMime)) {
|
||||
NS_WARNING(
|
||||
"Ignoring unknown flavor in "
|
||||
"nsContentUtils::IPCTransferableDataToTransferable");
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((item.flavor().EqualsLiteral(kFilePromiseMime) ||
|
||||
item.flavor().EqualsLiteral(kFilePromiseURLMime) ||
|
||||
item.flavor().EqualsLiteral(kFilePromiseDestFilename))
|
||||
#ifdef XP_WIN
|
||||
&& !StaticPrefs::clipboard_imageAsFile_enabled()
|
||||
#endif
|
||||
) {
|
||||
NS_WARNING(
|
||||
"Ignoring unknown flavor in "
|
||||
"nsContentUtils::IPCTransferableDataToTransferable");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!IPCTransferableDataItemHasKnownFlavor(item)) {
|
||||
NS_WARNING(
|
||||
"Ignoring unknown flavor in "
|
||||
"nsContentUtils::IPCTransferableDataToTransferable");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (aAddDataFlavor) {
|
||||
|
||||
@@ -3275,9 +3275,7 @@ mozilla::ipc::IPCResult ContentParent::RecvSetClipboard(
|
||||
// aRequestingPrincipal is allowed to be nullptr here.
|
||||
|
||||
if (!ValidatePrincipal(aTransferable.dataPrincipal(),
|
||||
{ValidatePrincipalOptions::AllowNullPtr,
|
||||
ValidatePrincipalOptions::AllowExpanded,
|
||||
ValidatePrincipalOptions::AllowSystem})) {
|
||||
{ValidatePrincipalOptions::AllowNullPtr})) {
|
||||
return PrincipalValidationIpcFail(aTransferable.dataPrincipal(), this,
|
||||
__func__);
|
||||
}
|
||||
|
||||
@@ -59,9 +59,7 @@ IPCResult ClipboardWriteRequestParent::RecvSetData(
|
||||
const IPCTransferable& aTransferable) {
|
||||
if (!mManager->ValidatePrincipal(
|
||||
aTransferable.dataPrincipal(),
|
||||
{dom::ValidatePrincipalOptions::AllowNullPtr,
|
||||
dom::ValidatePrincipalOptions::AllowExpanded,
|
||||
dom::ValidatePrincipalOptions::AllowSystem})) {
|
||||
{dom::ValidatePrincipalOptions::AllowNullPtr})) {
|
||||
return ContentParent::PrincipalValidationIpcFail(
|
||||
aTransferable.dataPrincipal(), this, __func__);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user