PuTTY bug windows-printing-crash

This is a mirror. Follow this link to find the primary PuTTY web site.

Home | FAQ | Feedback | Licence | Updates | Mirrors | Keys | Links | Team
Download: Stable · Pre-release · Snapshot | Docs | Changes | Wishlist

summary: Printing on Windows causes a crash
class: bug: This is clearly an actual problem we want fixed.
difficulty: fun: Just needs tuits, and not many of them.
priority: high: This should be fixed in the next release.
absent-in: 73039b7831aa863fabba1e6ff06471643303ae09
present-in: 793ac872757667a87df4636b5b3eed61302dd837
fixed-in: 892d4a0188ffd8aa60dc11b4bace30dfb0f9d50e (0.70)

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 WINSPOOL.DRV. In fact, 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.


If you want to comment on this web site, see the Feedback page.
Audit trail for this bug.
(last revision of this bug record was at 2017-07-08 07:45:18 +0100)