Bug 2057130 - Validate principal and filter type properly; r=tschuster

Differential Revision: https://phabricator.services.mozilla.com/D315220
This commit is contained in:
Edgar Chen
2026-07-31 03:17:12 +00:00
committed by echen@mozilla.com
parent c28639085f
commit 0ef4372cc7
3 changed files with 30 additions and 11 deletions
+28 -5
View File
@@ -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) {
+1 -3
View File
@@ -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__);
}
+1 -3
View File
@@ -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__);
}