mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-10 01:48:00 +00:00
0fc2d3b455
During last week's work, I made a mistake in which I got the arguments backwards in one of the key-blob-generating functions - mistakenly swapped the 'void *' key instance with the 'BinarySink *' output destination - and I didn't spot the mistake until run time, because in C you can implicitly convert both to and from void * and so there was no compile-time failure of type checking. Now that I've introduced the FROMFIELD macro that downcasts a pointer to one field of a structure to retrieve a pointer to the whole structure, I think I might start using that more widely to indicate this kind of polymorphic subtyping. So now all the public-key functions in the struct ssh_signkey vtable handle their data instance in the form of a pointer to a subfield of a new zero-sized structure type 'ssh_key', which outside the key implementations indicates 'this is some kind of key instance but it could be of any type'; they downcast that pointer internally using FROMFIELD in place of the previous ordinary C cast, and return one by returning &foo->sshk for whatever foo they've just made up. The sshk member is not at the beginning of the structure, which means all those FROMFIELDs and &key->sshk are actually adding and subtracting an offset. Of course I could have put the member at the start anyway, but I had the idea that it's actually a feature _not_ to have the two types start at the same address, because it means you should notice earlier rather than later if you absentmindedly cast from one to the other directly rather than by the approved method (in particular, if you accidentally assign one through a void * and back without even _noticing_ you perpetrated a cast). In particular, this enforces that you can't sfree() the thing even once without realising you should instead of called the right freekey function. (I found several bugs by this method during initial testing, so I think it's already proved its worth!) While I'm here, I've also renamed the vtable structure ssh_signkey to ssh_keyalg, because it was a confusing name anyway - it describes the _algorithm_ for handling all keys of that type, not a specific key. So ssh_keyalg is the collection of code, and ssh_key is one instance of the data it handles. |
||
---|---|---|
.. | ||
installer.wxs | ||
pageant.ico | ||
pageant.mft | ||
pageant.rc | ||
pageants.ico | ||
plink.rc | ||
pscp.ico | ||
pscp.rc | ||
psftp.rc | ||
putty.ico | ||
putty.iss | ||
putty.mft | ||
putty.rc | ||
puttycfg.ico | ||
puttygen.ico | ||
puttygen.mft | ||
puttygen.rc | ||
puttyins.ico | ||
puttytel.rc | ||
rcstuff.h | ||
README-msi.txt | ||
README.txt | ||
sizetip.c | ||
version.rc2 | ||
website.url | ||
win_res.h | ||
win_res.rc2 | ||
wincapi.c | ||
wincapi.h | ||
wincfg.c | ||
wincons.c | ||
winctrls.c | ||
windefs.c | ||
windlg.c | ||
window.c | ||
wingss.c | ||
winhandl.c | ||
winhelp.c | ||
winhelp.h | ||
winhsock.c | ||
winjump.c | ||
winmisc.c | ||
winnet.c | ||
winnoise.c | ||
winnojmp.c | ||
winnpc.c | ||
winnps.c | ||
winpgen.c | ||
winpgnt.c | ||
winpgntc.c | ||
winplink.c | ||
winprint.c | ||
winproxy.c | ||
winsecur.c | ||
winsecur.h | ||
winser.c | ||
winsftp.c | ||
winshare.c | ||
winstore.c | ||
winstuff.h | ||
wintime.c | ||
winucs.c | ||
winutils.c | ||
winx11.c |
PuTTY README ============ This is the README file for the PuTTY installer distribution. If you're reading this, you've probably just run our installer and installed PuTTY on your system. What should I do next? ---------------------- If you want to use PuTTY to connect to other computers, or use PSFTP to transfer files, you should just be able to run them from the Start menu. If you want to use the command-line-only file transfer utility PSCP, you will probably want to put the PuTTY installation directory on your PATH. On Windows 7 and similar versions, you can do this at Control Panel > System and Security > System > Advanced system settings > Environment Variables. Some versions of Windows will refuse to run HTML Help files (.CHM) if they are installed on a network drive. If you have installed PuTTY on a network drive, you might want to check that the help file works properly. If not, see http://support.microsoft.com/kb/896054 for information on how to solve this problem. What do I do if it doesn't work? -------------------------------- The PuTTY home web site is https://www.chiark.greenend.org.uk/~sgtatham/putty/ Here you will find our list of known bugs and pending feature requests. If your problem is not listed in there, or in the FAQ, or in the manuals, read the Feedback page to find out how to report bugs to us. PLEASE read the Feedback page carefully: it is there to save you time as well as us. Do not send us one-line bug reports telling us `it doesn't work'.