Download: Stable · Snapshot | Docs | Changes | Wishlist
PuTTY 0.69 segfaulted when attempting to print.
This was because, as part of the fix for vuln-indirect-dll-hijack-2, we switched to accessing the Windows printing API by loading DLLs dynamically at run time rather than at load time (i.e. after we lock down the default DLL search path to defend against hijacking attacks).
However, our mistake was to believe the MSDN API when it said that
some of the printing API functions we use should be found in
SPOOLSS.DLL and others in
SPOOLSS.DLL does not exist on all versions of
Windows, so we were failing to load it or any of the functions we
tried to find in it.
If you use those functions in the normal (load-time) way, Visual
Studio's libraries generate a DLL import table that expects to find
all of them in
WINSPOOL.DRV. We think that this is
therefore the de facto right place to look for them, no matter
what the MSDN pages for the individual functions might think, and
that's what we've switched to doing for 0.70.