Commit Graph

1463 Commits

Author SHA1 Message Date
Toshihito Kikuchi
3694eeda43 Bug 1592486 - Store ModuleLoadFrame::sTopFrame as a global variable if TLS is not ready. r=aklotz
We had a thread-local varialbe `ModuleLoadFrame::sTopFrame` to track the topmost
stack frame of `LdrLoadDll`.  However, our hook function `patched_LdrLoadDll` can
be called even before TLS is initialized.  In such a case, accessing `sTopFrame`
causes AV.

This patch introduces `SafeThreadLocal` to safely access a thread-local varialbe.
If TLS is not initialized, it falls back to a global variable because in that
early stage there is only a single thread running.

Differential Revision: https://phabricator.services.mozilla.com/D55870

--HG--
extra : moz-landing-system : lando
2020-02-07 18:08:11 +00:00
Narcis Beleuzu
614e851352 Backed out changeset 6866be136e53 (bug 1592486) for cppunit failures on TestNativeNt.exe . CLOSED TREE 2020-02-06 11:53:45 +02:00
Toshihito Kikuchi
c531413173 Bug 1592486 - Store ModuleLoadFrame::sTopFrame as a global variable if TLS is not ready. r=aklotz
We had a thread-local varialbe `ModuleLoadFrame::sTopFrame` to track the topmost
stack frame of `LdrLoadDll`.  However, our hook function `patched_LdrLoadDll` can
be called even before TLS is initialized.  In such a case, accessing `sTopFrame`
causes AV.

This patch introduces `SafeThreadLocal` to safely access a thread-local varialbe.
If TLS is not initialized, it falls back to a global variable because in that
early stage there is only a single thread running.

Differential Revision: https://phabricator.services.mozilla.com/D55870

--HG--
extra : moz-landing-system : lando
2020-02-06 03:10:57 +00:00
Emilio Cobos Álvarez
33b4cfe736 Bug 1610702 - Generalize Vector::podResizeToFit into Vector::shrinkStorageToFit(). r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D61337

--HG--
extra : moz-landing-system : lando
2020-02-03 17:32:12 +00:00
Edwin Takahashi
d174b45f2d Bug 1602689 - whitelist RegisteredThread::RegisteredThread r=decoder,gerald
Changes:

Whitelist the `RegisteredThread::RegisteredThread` failures for linux1804-64-asan/opt temporarily while the parent bug is left open, to support `mochitest-browser-chrome` migration to linux1804-64.

Differential Revision: https://phabricator.services.mozilla.com/D61224

--HG--
extra : moz-landing-system : lando
2020-01-30 20:21:31 +00:00
Sylvestre Ledru
1ba4b73c17 Bug 1611635 - TestPrintf.cpp: remove a test - causes a warning with gcc > 9 r=froydnj
The "(null)" printing behavior is a glibc extension and the specified behavior
in the standard is undefined

Differential Revision: https://phabricator.services.mozilla.com/D61071

--HG--
extra : moz-landing-system : lando
2020-01-26 08:23:45 +00:00
David Major
76ce9d96fa Bug 1598119 - Disable Control Flow Guard for WindowsDllInterceptor returns r=handyman
Under the stronger Control Flow Guard scheme coming in clang 10, when a nop-space hook jumps back to the original API, at `ntdll!Whatever+2`, that address is not a registered jump target, so we crash with a CFG failure. Since this is a deliberate violation of the rules, let's disable CFG for these calls.

Based on my testing, this is the only place we need to use this attribute, so I placed its definition close to the use. (Had we needed more of these, I would have put it in mfbt/.)

Differential Revision: https://phabricator.services.mozilla.com/D59728

--HG--
extra : moz-landing-system : lando
2020-01-21 18:50:22 +00:00
Sylvestre Ledru
187e9bafaf Bug 1519636 - Automatically reformat recent changes using clang-format r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D60354

--HG--
extra : moz-landing-system : lando
2020-01-21 09:51:27 +00:00
Toshihito Kikuchi
a172471711 Bug 1608645 - Ensure FindExportAddressTableEntry can handle a modified Export Table. r=aklotz
A third-party application can modify the export directory, the export address/name/ordinal
tables, or an entry in those tables.  If that happens, we will see an RVA is located outside
the mapped image and `RVAToPtr` returns null.  This patch makes sure we don't hit null AV
when modification is detected.

`FindExportAddressTableEntry` should not return a pointer to the modified table entry because
we dereference it in another process to cross-process detour.

Differential Revision: https://phabricator.services.mozilla.com/D59738

--HG--
extra : moz-landing-system : lando
2020-01-21 00:44:28 +00:00
Emilio Cobos Álvarez
256c124f94 Bug 1609996 - Reorder some includes affected by the previous patches. r=froydnj
This was done by:

This was done by applying:

```
diff --git a/python/mozbuild/mozbuild/code-analysis/mach_commands.py b/python/mozbuild/mozbuild/code-analysis/mach_commands.py
index 789affde7bbf..fe33c4c7d4d1 100644
--- a/python/mozbuild/mozbuild/code-analysis/mach_commands.py
+++ b/python/mozbuild/mozbuild/code-analysis/mach_commands.py
@@ -2007,7 +2007,7 @@ class StaticAnalysis(MachCommandBase):
         from subprocess import Popen, PIPE, check_output, CalledProcessError

         diff_process = Popen(self._get_clang_format_diff_command(commit), stdout=PIPE)
-        args = [sys.executable, clang_format_diff, "-p1", "-binary=%s" % clang_format]
+        args = [sys.executable, clang_format_diff, "-p1", "-binary=%s" % clang_format, '-sort-includes']

         if not output_file:
             args.append("-i")
```

Then running `./mach clang-format -c <commit-hash>`

Then undoing that patch.

Then running check_spidermonkey_style.py --fixup

Then running `./mach clang-format`

I had to fix four things:

 * I needed to move <utility> back down in GuardObjects.h because I was hitting
   obscure problems with our system include wrappers like this:

0:03.94 /usr/include/stdlib.h:550:14: error: exception specification in declaration does not match previous declaration
0:03.94 extern void *realloc (void *__ptr, size_t __size)
0:03.94              ^
0:03.94 /home/emilio/src/moz/gecko-2/obj-debug/dist/include/malloc_decls.h:53:1: note: previous declaration is here
0:03.94 MALLOC_DECL(realloc, void*, void*, size_t)
0:03.94 ^
0:03.94 /home/emilio/src/moz/gecko-2/obj-debug/dist/include/mozilla/mozalloc.h:22:32: note: expanded from macro 'MALLOC_DECL'
0:03.94     MOZ_MEMORY_API return_type name##_impl(__VA_ARGS__);
0:03.94                                ^
0:03.94 <scratch space>:178:1: note: expanded from here
0:03.94 realloc_impl
0:03.94 ^
0:03.94 /home/emilio/src/moz/gecko-2/obj-debug/dist/include/mozmemory_wrap.h:142:41: note: expanded from macro 'realloc_impl'
0:03.94 #define realloc_impl mozmem_malloc_impl(realloc)

   Which I really didn't feel like digging into.

 * I had to restore the order of TrustOverrideUtils.h and related files in nss
   because the .inc files depend on TrustOverrideUtils.h being included earlier.

 * I had to add a missing include to RollingNumber.h

 * Also had to partially restore include order in JsepSessionImpl.cpp to avoid
   some -WError issues due to some static inline functions being defined in a
   header but not used in the rest of the compilation unit.

Differential Revision: https://phabricator.services.mozilla.com/D60327

--HG--
extra : moz-landing-system : lando
2020-01-20 16:19:48 +00:00
Emilio Cobos Álvarez
4f0e8086f2 Bug 1609996 - Fix some things that the automated replacement didn't catch. r=froydnj
This makes Gecko build again. I'll squash this into the previous commit anyhow.

Differential Revision: https://phabricator.services.mozilla.com/D60324

--HG--
extra : moz-landing-system : lando
2020-01-20 16:18:28 +00:00
Emilio Cobos Álvarez
aa3a695712 Bug 1609996 - Remove mozilla/Move.h. r=froydnj
rg -l 'mozilla/Move.h' | xargs sed -i 's/#include "mozilla\/Move.h"/#include <utility>/g'

Further manual fixups and cleanups to the include order incoming.

Differential Revision: https://phabricator.services.mozilla.com/D60323

--HG--
extra : moz-landing-system : lando
2020-01-20 16:18:20 +00:00
Nazım Can Altınova
d8afe0647a Bug 1609708 - Rename PROFILER_TRACING to PROFILER_TRACING_MARKER. r=gerald
Depends on D60229

Differential Revision: https://phabricator.services.mozilla.com/D60231

--HG--
extra : moz-landing-system : lando
2020-01-17 21:29:15 +00:00
shindli
c52d5f8025 Backed out 2 changesets (bug 1586939) for causing perma bc failures in automation.py CLOSED TREE
Backed out changeset 922243345807 (bug 1586939)
Backed out changeset b5aac83f7f4f (bug 1586939)
2020-01-16 09:51:49 +02:00
Gerald Squelart
50efb05c6b Bug 1586939 - Remove "_BASE" from most Base Profiler env-vars - r=gregtatum
Now both profilers are controlled by the same environment variables, e.g.
"MOZ_PROFILER_STARTUP" to run both profilers at startup.

The only remaining Base Profiler-specific commands are:
- MOZ_BASE_PROFILER_HELP, because the Base Profiler doesn't have the same
  capabilities as Gecko, so it may display different available features.
- MOZ_BASE_PROFILER_LOGGING, because the Base Profiler doesn't have access to
  MOZ_LOG (both the env-var and the C++ macros).

Differential Revision: https://phabricator.services.mozilla.com/D54449

--HG--
extra : moz-landing-system : lando
2020-01-15 01:57:35 +00:00
Gerald Squelart
407454a9e0 Bug 1586939 - Re-enable MOZ_BASE_PROFILER_STARTUP_DURATION and _INTERVAL - r=gregtatum
This env-vars were not processed because of some needed special processing, and
they were not critical.
But now we want them to be correctly read, to match the Gecko Profiler features.

Differential Revision: https://phabricator.services.mozilla.com/D54448

--HG--
extra : moz-landing-system : lando
2020-01-15 01:57:13 +00:00
Andrew McCreight
b50a606c57 Bug 1608533 - Whitelist libX11.so for LSan. r=decoder
Differential Revision: https://phabricator.services.mozilla.com/D59576

--HG--
extra : moz-landing-system : lando
2020-01-12 10:09:58 +00:00
Toshihito Kikuchi
eb086eb295 Bug 1604008 - Use a target process's export table to cross-process detour. r=aklotz
When `WindowsDllInterceptor` detours a function in a remote process, it calculates
a target address via `GetProcAddress` in the caller's process first, and detours
that address in the target process.  If the caller's export table was modified, the
target address might be invalid in the target process.

With this patch, `WindowsDllInterceptor` uses the target process's export table to
calculate a target function address.

Differential Revision: https://phabricator.services.mozilla.com/D58305

--HG--
extra : moz-landing-system : lando
2020-01-11 00:34:21 +00:00
Sylvestre Ledru
c521758c5e Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D58175

--HG--
extra : moz-landing-system : lando
2020-01-09 21:50:11 +00:00
Toshihito Kikuchi
db6fc91531 Bug 1601796 - Use GetSystemTimePreciseAsFileTime instead of GetSystemTime+SystemTimeToFileTime. r=mayhemer,aklotz
`GetProcessTimes` is based on QPC, while `GetSystemTime` is based on clock
interruption whose accuracy is lower than QPC.  This means in a process's early
stage, `GetSystemTime` may return a timestamp earlier than creation timestamp.
If this happens we'll keep a negative process uptime which causes overflow in
telemetry processing.

Win8+ has a handy API `GetSystemTimePreciseAsFileTime` that solves everything.

On Win7, `GetSystemTimeAsFileTime` still solves this issue.  In the worst case,
it returns the exact same timestamp as process creation, but it's ok.

Because the system time is stored as a `FILETIME` in `KUSER`, converting it to
a `SYSTEMTIME` with `GetSystemTime` drops accuracy.  We should avoid it unless
needed.

This patch also moves the call to `GetProcessTimes` before getting the current
timestamp in case clock interruption happens in between those two function calls.

Differential Revision: https://phabricator.services.mozilla.com/D56273

--HG--
extra : moz-landing-system : lando
2020-01-08 16:53:17 +00:00
Gerald Squelart
1484f8824a Bug 1600644 - Don't count ActivePS::mProfileBuffer's own size twice - r=canaltinova
In bug 1587332, ActivePS::mProfileBuffer was changed from
`const UniquePtr<ProfileBuffer>` to just `ProfileBuffer`, so its own object size
is now counted as part of `sizeof(ActivePS)`, and we should only count its
dependencies with `SizeOfExcludingThis`.

Differential Revision: https://phabricator.services.mozilla.com/D58288

--HG--
extra : moz-landing-system : lando
2020-01-02 12:21:58 +00:00
Toshihito Kikuchi
3518bfb5e3 Bug 1599015 - Graciously return a failure if we fail to change the attribute of a trampoline. r=handyman,dmajor
Our detour allocates a trampoline with `PAGE_EXECUTE_READ` first, and then makes
it writable before use.  If the dynamic code policy is enabled after allocation,
we fail to change the attribute, and crash the process because we try to write
data into a readonly page.  We need to check the validity of a trampoline before
writing data.

Differential Revision: https://phabricator.services.mozilla.com/D56983

--HG--
extra : moz-landing-system : lando
2020-01-02 17:08:33 +00:00
Aaron Klotz
ea529fe28c Bug 1598703: Part 2 - Add IAT Patching capabilities to the Windows DLL Interceptor; r=mhowell
This is a pretty straightforward patch; we add `WindowsIATPatcher` to
implement the actual IAT patching, and use a partial specialization of
`FuncHook` to account for the underlying differences in implementation vs our
existing interceptor code.

Differential Revision: https://phabricator.services.mozilla.com/D57831

--HG--
extra : moz-landing-system : lando
2019-12-23 23:11:35 +00:00
Aaron Klotz
88b936e379 Bug 1598703: Part 1 - Rename PEHeaders::GetIATForModule to PEHeaders::GetImportDescriptor; r=mhowell
Strictly speaking, the import descriptor includes more than just the IAT,
so renaming this method to reflect that.

Differential Revision: https://phabricator.services.mozilla.com/D57830

--HG--
extra : moz-landing-system : lando
2019-12-23 23:11:07 +00:00
Gurzau Raul
e014bf8778 Backed out 2 changesets (bug 1598703) for bustage at WindowsDllBlocklist.obj on a CLOSED TREE.
Backed out changeset b9c2e8b94733 (bug 1598703)
Backed out changeset 6d7358a0e785 (bug 1598703)
2019-12-23 22:53:32 +02:00
Aaron Klotz
21fed2ab5e Bug 1603714: Follow-up: also add move constructor and move assignment operator to MemorySectionNameBuf; r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D58142

--HG--
extra : moz-landing-system : lando
2019-12-23 20:27:38 +00:00
Aaron Klotz
1a8cc2849d Bug 1598703: Part 2 - Add IAT Patching capabilities to the Windows DLL Interceptor; r=mhowell
This is a pretty straightforward patch; we add `WindowsIATPatcher` to
implement the actual IAT patching, and use a partial specialization of
`FuncHook` to account for the underlying differences in implementation vs our
existing interceptor code.

Differential Revision: https://phabricator.services.mozilla.com/D57831

--HG--
extra : moz-landing-system : lando
2019-12-23 20:13:31 +00:00
Aaron Klotz
68eee2c6ab Bug 1598703: Part 1 - Rename PEHeaders::GetIATForModule to PEHeaders::GetImportDescriptor; r=mhowell
Strictly speaking, the import descriptor includes more than just the IAT,
so renaming this method to reflect that.

Differential Revision: https://phabricator.services.mozilla.com/D57830

--HG--
extra : moz-landing-system : lando
2019-12-23 20:11:26 +00:00
Chris Peterson
406763af7f Bug 1570499 - Part 1: Replace MOZ_FALLTHROUGH macro with C++17's [[fallthrough]] attribute. r=froydnj
This changeset is a simple find and replace of `MOZ_FALLTHROUGH` and `[[fallthrough]]`.

Unfortunately, the MOZ_FALLTHROUGH_ASSERT macro (to assert on case fallthrough in debug builds) is still necessary after switching from [[clang::fallthrough]] to [[fallthrough]] because:

* MOZ_ASSERT(false) followed by [[fallthrough]] triggers a -Wunreachable-code warning in DEBUG builds
* but MOZ_ASSERT(false) without [[fallthrough]] triggers a -Wimplicit-fallthrough warning in NDEBUG builds.

Differential Revision: https://phabricator.services.mozilla.com/D56440

--HG--
extra : moz-landing-system : lando
2019-12-20 07:16:43 +00:00
Aaron Klotz
844739bc32 Bug 1605248: Convert LoaderObserver::Clear to LoaderObserver::Disable; r=mhowell
We rename `LoaderObserver::Clear` to `LoaderObserver::Disable` to more accurately
reflect the following behaviour change:

Not only does the `Disable` call free any enqueued module load events, it also
ensures that no further module loads will be saved in the future. This reflects
the reality that any `mozglue` client that calls `Disable` has no intention of
ever processing these events.

Differential Revision: https://phabricator.services.mozilla.com/D57897

--HG--
extra : moz-landing-system : lando
2019-12-19 22:20:37 +00:00
Aaron Klotz
72918a2e58 Bug 1603714: Add explicit copy constructor and copy assignment operators to nt::MemorySectionNameBuf; r=mhowell
Differential Revision: https://phabricator.services.mozilla.com/D57889

--HG--
extra : moz-landing-system : lando
2019-12-19 22:11:24 +00:00
Gerald Squelart
7a41d8998c Bug 1604661 - Gecko Profiler filter "*" selects all registered threads - r=gregtatum
The only way to select all registered threads was to have an empty entry in the
filter list, usually by just having "," (a single comma).
The popup removes spurious empty items, making this impossible for most users.

It is now possible to just have "*" (as the whole filter string, or at least one
item in the list) to select all registered threads.

Differential Revision: https://phabricator.services.mozilla.com/D57594

--HG--
extra : moz-landing-system : lando
2019-12-18 20:38:59 +00:00
Jeff Walden
e57173377f Bug 1439659 - Make |MOZ_{LITTLE,BIG}_ENDIAN| into function macros so that invoking them inside |#if| conditions when they haven't been defined yet is a compile error. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D57038

--HG--
extra : moz-landing-system : lando
2019-12-13 20:51:04 +00:00
Tom Ritter
37f89d5a1d Bug 1590624 - mingw-clang cannot use _xgetbv without -mavx, work around it r=lsalzman,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D54531

--HG--
extra : moz-landing-system : lando
2019-12-12 06:38:39 +00:00
Andreea Pavel
a533b175dd Backed out 4 changesets (bug 1590624) for breaking gecko decision task on a CLOSED TREE
Backed out changeset 2ac8dd1d709d (bug 1590624)
Backed out changeset 8432398c212a (bug 1590624)
Backed out changeset 2b28154aacdb (bug 1590624)
Backed out changeset d305e4160ee4 (bug 1590624)

--HG--
rename : build/build-clang/clang-9-mingw.json => build/build-clang/clang-8-mingw.json
rename : taskcluster/scripts/misc/build-clang-mingw.sh => taskcluster/scripts/misc/build-clang-8-mingw.sh
2019-12-12 08:35:11 +02:00
Tom Ritter
d536ec53bb Bug 1590624 - mingw-clang cannot use _xgetbv without -mavx, work around it r=lsalzman,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D54531

--HG--
extra : moz-landing-system : lando
2019-12-10 18:41:41 +00:00
Andrew McCreight
e53b07137d Bug 1602645 - Add leak suppression for libfreetype.so. r=decoder
Changing the OS we run Linux ASan on from ubuntu1604 to ubuntu1804
causes 820800 bytes of leaks with libfreetype.so in the stack in
almost every test suite. Presumably this is just a variation on
existing leaks we get because we don't shut down fonts properly, so
just whitelist it.

Differential Revision: https://phabricator.services.mozilla.com/D56511

--HG--
extra : moz-landing-system : lando
2019-12-10 12:37:15 +00:00
Aaron Klotz
23e61114cf Bug 1522830: Part 8 - Update UntrustedModulesProcessor to support processing child processes; r=mhowell
This patch contains the core changes to make this all work across e10s:

* We clarify the naming of path variables to be more specific as to whether they are NT paths or DOS paths;
* We add IPC `ParamTraits` that are necessary for `UntrustedModulesData` types;
* We implement `ProcessModuleLoadQueue` for child processes. Because of sandboxing, we need to split this sequence into multiple async operations:
  ** Initial queue processing;
  ** Sending the list of modules to the parent process to determine trustworthiness (via `GetModulesTrust`);
  ** Receiving the results from the parent process and producing a final result (via `CompleteProcessing`).
* We implement the `GetModulesTrust` function for the parent process, which evaluates the trust of child process modules;
* We change all hash tables to be keyed using NT paths. Because resolving DOS paths may not be permitted in sandboxed processes,
  we need to standardize on NT paths as the "universal path" across processes.
* We add `WinDllServices::StartUntrustedModulesProcessor` to separate untrusted modules startup from `WinDllServices` construction:
  ** While we now start `WinDllServices` across all child process types, only specific process types will support untrusted modules.
  ** Furthermore, untrusted modules must be started at a very specific point that is dependent on the type of child process.
  ** We add those calls to `StartUntrustedModulesProcessor` in subsequent patches.

Differential Revision: https://phabricator.services.mozilla.com/D53680

--HG--
extra : moz-landing-system : lando
2019-12-06 22:06:26 +00:00
Aaron Klotz
78b5fd3fbf Bug 1522830: Part 6 - Add API to be able to initialize launcher dll blocklist during spawning of child process; r=mhowell
We need a way for the sandbox broker to be able to initialize the launcher
DLL blocklist when starting a new content process.

This patch adds the ability to resolve the initialization function through
DLL services.

Differential Revision: https://phabricator.services.mozilla.com/D53678

--HG--
extra : moz-landing-system : lando
2019-12-06 22:03:45 +00:00
Aaron Klotz
ddf3168d35 Bug 1522830: Part 3 - Change launcher blocklist generation to include child processes; r=bytesized
Now that the launcher blocklist will support child processes, we need to add
them to the launcher blocklist. The revised criteria the `Launcher` blocklist
matches the criteria already in use by the `Legacy` blocklist.

Differential Revision: https://phabricator.services.mozilla.com/D53675

--HG--
extra : moz-landing-system : lando
2019-12-06 22:01:02 +00:00
Aaron Klotz
b43c0975e4 Bug 1522830: Part 2 - Make launcher blocklist work in child processes; r=mhowell
* We change `InitializeDllBlocklistOOP` to be able to set the correct flags
  when initializing a sandbox child process.
* We change the freestanding DLL blocklist code to be sensitive to the
  `CHILD_PROCESSES_ONLY` flag;
* We move the declaration of `gBlocklistInitFlags` to `WindowsDllBlocklist.h`
  so that it is visible to more code.

Differential Revision: https://phabricator.services.mozilla.com/D53674

--HG--
extra : moz-landing-system : lando
2019-12-06 22:00:18 +00:00
shindli
83be0128f4 Backed out 13 changesets (bug 1522830) for causing xpc shell failures in test_ThirdPartyModulesPing.js CLOSED TREE
Backed out changeset a3e44bbc9ce3 (bug 1522830)
Backed out changeset 11078767a246 (bug 1522830)
Backed out changeset c7ee156830cf (bug 1522830)
Backed out changeset 810f0cb2308d (bug 1522830)
Backed out changeset f8ab75219387 (bug 1522830)
Backed out changeset ec293f9a5e32 (bug 1522830)
Backed out changeset 4bfc013c3d79 (bug 1522830)
Backed out changeset f4ae67f2f231 (bug 1522830)
Backed out changeset 2737350b7d40 (bug 1522830)
Backed out changeset 52931597c652 (bug 1522830)
Backed out changeset bc8985a34539 (bug 1522830)
Backed out changeset 09cbbbc5c802 (bug 1522830)
Backed out changeset d5e366ea4657 (bug 1522830)
2019-12-06 02:07:16 +02:00
Aaron Klotz
4204671639 Bug 1522830: Part 8 - Update UntrustedModulesProcessor to support processing child processes; r=mhowell
This patch contains the core changes to make this all work across e10s:

* We clarify the naming of path variables to be more specific as to whether they are NT paths or DOS paths;
* We add IPC `ParamTraits` that are necessary for `UntrustedModulesData` types;
* We implement `ProcessModuleLoadQueue` for child processes. Because of sandboxing, we need to split this sequence into multiple async operations:
  ** Initial queue processing;
  ** Sending the list of modules to the parent process to determine trustworthiness (via `GetModulesTrust`);
  ** Receiving the results from the parent process and producing a final result (via `CompleteProcessing`).
* We implement the `GetModulesTrust` function for the parent process, which evaluates the trust of child process modules;
* We change all hash tables to be keyed using NT paths. Because resolving DOS paths may not be permitted in sandboxed processes,
  we need to standardize on NT paths as the "universal path" across processes.
* We add `WinDllServices::StartUntrustedModulesProcessor` to separate untrusted modules startup from `WinDllServices` construction:
  ** While we now start `WinDllServices` across all child process types, only specific process types will support untrusted modules.
  ** Furthermore, untrusted modules must be started at a very specific point that is dependent on the type of child process.
  ** We add those calls to `StartUntrustedModulesProcessor` in subsequent patches.

Differential Revision: https://phabricator.services.mozilla.com/D53680

--HG--
extra : moz-landing-system : lando
2019-12-05 21:57:29 +00:00
Aaron Klotz
a62a0441c9 Bug 1522830: Part 6 - Add API to be able to initialize launcher dll blocklist during spawning of child process; r=mhowell
We need a way for the sandbox broker to be able to initialize the launcher
DLL blocklist when starting a new content process.

This patch adds the ability to resolve the initialization function through
DLL services.

Differential Revision: https://phabricator.services.mozilla.com/D53678

--HG--
extra : moz-landing-system : lando
2019-12-05 21:55:02 +00:00
Aaron Klotz
21f179a116 Bug 1522830: Part 3 - Change launcher blocklist generation to include child processes; r=bytesized
Now that the launcher blocklist will support child processes, we need to add
them to the launcher blocklist. The revised criteria the `Launcher` blocklist
matches the criteria already in use by the `Legacy` blocklist.

Differential Revision: https://phabricator.services.mozilla.com/D53675

--HG--
extra : moz-landing-system : lando
2019-12-05 21:52:13 +00:00
Aaron Klotz
1faa66d3d6 Bug 1522830: Part 2 - Make launcher blocklist work in child processes; r=mhowell
* We change `InitializeDllBlocklistOOP` to be able to set the correct flags
  when initializing a sandbox child process.
* We change the freestanding DLL blocklist code to be sensitive to the
  `CHILD_PROCESSES_ONLY` flag;
* We move the declaration of `gBlocklistInitFlags` to `WindowsDllBlocklist.h`
  so that it is visible to more code.

Differential Revision: https://phabricator.services.mozilla.com/D53674

--HG--
extra : moz-landing-system : lando
2019-12-05 21:51:35 +00:00
David Parks
3100db960f Bug 1598650: Copy operand for mov byte ptr, imm8 in DLL interceptor r=aklotz
mov byte ptr support was added in bug 1382251 but did not properly count the instruction size.  It was missing the 1-byte operand, which causes the rest of the trampoline to be garbage.

Differential Revision: https://phabricator.services.mozilla.com/D55744

--HG--
extra : moz-landing-system : lando
2019-12-03 22:47:58 +00:00
David Parks
e3cb2950f2 Bug 1489391: Part 2 - Remove SetWindowLong*/SetWindowLongPtr* from TestDllInterceptor r=aklotz
SetWindowLong*/SetWindowLongPtr* was being intercepted so that we could override windowprocs in windowed plugins on Windows.  We no longer support windowed plugins so these functions are never intercepted.

Differential Revision: https://phabricator.services.mozilla.com/D55536

--HG--
extra : moz-landing-system : lando
2019-12-05 00:41:32 +00:00
David Parks
8310e7a2d9 Bug 1489391: Part 1 - Use 10-byte patch in DLL interceptor for CloseHandle on Win8/8.1 r=aklotz
CloseHandle has a jump followed by enough `nop`s to fit a 10-byte patch but not enough to fit the default 13-byte patch when running Windows 8 or 8.1.  This patch tells the interceptor to use a 10-byte patch on those OSs.

Differential Revision: https://phabricator.services.mozilla.com/D55535

--HG--
extra : moz-landing-system : lando
2019-12-05 00:41:23 +00:00
Jesse Schwartzentruber
81870fa7c5 Bug 1482167 - Create --enable-fuzzing ASAN build job for Android x86-64 firefox. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D3027

--HG--
extra : moz-landing-system : lando
2019-12-04 21:44:06 +00:00