Bug 1462100 Add the 'cast to void*' MinGW sandbox patch to the chromium patchlist r?bobowen draft
authorTom Ritter <tom@mozilla.com>
Thu, 17 May 2018 10:10:50 -0500
changeset 796358 cc82d4d30e5b490ee394fdfc7edd5c332e2a6be0
parent 796357 94cfd05ce44b9c7dd384e9e38dbe057d53641301
push id110231
push userbmo:tom@mozilla.com
push dateThu, 17 May 2018 15:54:15 +0000
reviewersbobowen
bugs1462100
milestone62.0a1
Bug 1462100 Add the 'cast to void*' MinGW sandbox patch to the chromium patchlist r?bobowen MozReview-Commit-ID: 457xxFsnjTL
security/sandbox/chromium-shim/patches/with_update/mingw_noexports_casts.patch
security/sandbox/chromium-shim/patches/with_update/patch_order.txt
new file mode 100644
--- /dev/null
+++ b/security/sandbox/chromium-shim/patches/with_update/mingw_noexports_casts.patch
@@ -0,0 +1,41 @@
+# HG changeset patch
+# User Tom Ritter <tom@mozilla.com>
+# Date 1526498300 18000
+#      Wed May 16 14:18:20 2018 -0500
+# Node ID dd3f4940aeb0c4e00e8bcf1c238f2355ad793489
+# Parent  cf646c80b9545db7ab548f88a482378734ee2f78
+Bug 1462100 Cast to void* to avoid conversion errors on MinGW, which does not do the automatic conversion like msvc r?bobowen
+
+MozReview-Commit-ID: 8fO9Nu9gaxh
+
+diff --git a/security/sandbox/chromium/sandbox/win/src/interception.h b/security/sandbox/chromium/sandbox/win/src/interception.h
+--- a/security/sandbox/chromium/sandbox/win/src/interception.h
++++ b/security/sandbox/chromium/sandbox/win/src/interception.h
+@@ -264,25 +264,25 @@ class InterceptionManager {
+ #define MAKE_SERVICE_NAME(service) &Target##service##64
+ #else
+ #define MAKE_SERVICE_NAME(service) &Target##service
+ #endif
+ 
+ #define ADD_NT_INTERCEPTION(service, id, num_params) \
+   AddToPatchedFunctions(kNtdllName, #service, \
+                         sandbox::INTERCEPTION_SERVICE_CALL, \
+-                        MAKE_SERVICE_NAME(service), id)
++                        (void*)MAKE_SERVICE_NAME(service), id)
+ 
+ #define INTERCEPT_NT(manager, service, id, num_params) \
+   manager->ADD_NT_INTERCEPTION(service, id, num_params)
+ 
+ // When intercepting the EAT it is important that the patched version of the
+ // function not call any functions imported from system libraries unless
+ // |TargetServices::InitCalled()| returns true, because it is only then that
+ // we are guaranteed that our IAT has been initialized.
+ #define INTERCEPT_EAT(manager, dll, function, id, num_params) \
+   manager->AddToPatchedFunctions(dll, #function, sandbox::INTERCEPTION_EAT, \
+-                                 MAKE_SERVICE_NAME(function), id)
++                                 (void*)MAKE_SERVICE_NAME(function), id)
+ #endif  // SANDBOX_EXPORTS
+ 
+ }  // namespace sandbox
+ 
+ #endif  // SANDBOX_SRC_INTERCEPTION_H_
--- a/security/sandbox/chromium-shim/patches/with_update/patch_order.txt
+++ b/security/sandbox/chromium-shim/patches/with_update/patch_order.txt
@@ -13,9 +13,10 @@ allow_read_only_all_paths_rule.patch
 revert_TargetNtSetInformationThread_change.patch
 mingw_base_win_get_caller.patch
 mingw_duplicate_instatinations.patch
 mingw_msvc_requirement_error.patch
 mingw_copy_s.patch
 mingw_operator_new.patch
 mingw_cast_getprocaddress.patch
 mingw_capitalization.patch
-mingw_disable_one_try.patch
\ No newline at end of file
+mingw_disable_one_try.patch
+mingw_noexports_casts.patch
\ No newline at end of file