Open Bug 1247969 Opened 9 years ago Updated 2 years ago

Consolidate Windows API Interception Initialization to a safe time during startup

Categories

(Core :: DLL Services, defect)

Unspecified
Windows
defect

Tracking

()

Tracking Status
firefox47 --- affected

People

(Reporter: bugzilla, Unassigned)

References

Details

While we typically only call AddHook() for a particular function once, the caller may be initializing lazily. Between the fact that sometimes we can't safely do Nop space patching (see bug 1218473) and the fact that there may be other unintended consequences, we should move as much of this stuff as possible to a safe point during startup. Note that during startup we might not yet have access to the DLL that we want to patch, so we need to be smart about that as well. AddHook loads DLLs if they're not present yet, but during startup we need to be careful about adversely affecting startup time or loading a DLL too early (we need to have the DLL blocklist hooked *before* loading user32.dll, for example).
I've got a WIP that runs as long as I have a patch for bug 1249849 in the queue.
Status: NEW → ASSIGNED
Depends on: 1249849

If anybody is interested in taking this up again, my idea was that, unlike pretty much everything else in Gecko, static initializers are the perfect place to initiate interceptor hooks. The gist of the idea is that every hook would be a static object declared at the top of the each source file.

Assignee: bugzilla → nobody
Status: ASSIGNED → NEW
Component: General → DLL Services
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.