1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 17:38:00 +00:00
Go to file
Simon Tatham c14f079863 windows/utils/registry.c: allow opening reg keys RO.
These handy wrappers on the verbose underlying Win32 registry API have
to lose some expressiveness, and one thing they lost was the ability
to open a registry key without asking for both read and write access.
This meant they couldn't be used for accessing keys not owned by the
calling user.

So far, I've only used them for accessing PuTTY's own saved data,
which means that hasn't been a problem. But I want to use them
elsewhere in an upcoming commit, so I need to fix that.

The obvious thing would be to change the meaning of the existing
'create' boolean flag so that if it's false, we also don't request
write access. The rationale would be that you're either reading or
writing, and if you're writing you want both RW access and to create
keys that don't already exist. But in fact that's not true: you do
want to set create==false and have write access in the case where
you're _deleting_ things from the key (or the whole key). So we really
do need three ways to call the wrapper function.

Rather than add another boolean field to every call site or mess about
with an 'access type' enum, I've taken an in-between route: the
underlying open_regkey_fn *function* takes a 'create' and a 'write'
flag, but at call sites, it's wrapped with a macro anyway (to append
NULL to the variadic argument list), so I've just made three macros
whose names request different access. That makes call sites marginally
_less_ verbose, while still

(cherry picked from commit 7339e00f4a)
2023-12-16 13:06:49 +00:00
charset sbcsgen.pl: handle \r\n line endings. 2022-09-01 20:43:23 +01:00
cmake Build option to disable scrollback compression. 2023-04-19 14:28:36 +01:00
contrib authplugin-example.py: Flush stderr. 2023-04-19 14:18:58 +01:00
crypto Add missing flags to AES selector vtables. 2023-12-13 18:47:08 +00:00
doc Update version number for 0.79 release. 2023-08-26 08:39:42 +01:00
icons New script to draw the icons as SVG. 2022-03-18 12:55:01 +00:00
keygen Add some missing #includes. 2022-09-03 11:59:12 +01:00
otherbackends Prevent sending double-EOF in raw backend. 2023-04-19 14:28:36 +01:00
proxy Refactor confirm_weak to use SeatDialogText. 2023-11-29 07:29:29 +00:00
ssh Terrapin warning: say if reconfiguration can help. 2023-12-13 18:49:17 +00:00
stubs Refactor confirm_weak to use SeatDialogText. 2023-11-29 07:29:29 +00:00
terminal Recognise and discard the APC terminal escape sequence. 2023-11-18 09:11:33 +00:00
test Add support for HMAC-SHA512. 2023-04-23 13:24:19 +01:00
unix Refactor confirm_weak to use SeatDialogText. 2023-11-29 07:29:29 +00:00
utils Refactor confirm_weak to use SeatDialogText. 2023-11-29 07:29:29 +00:00
windows windows/utils/registry.c: allow opening reg keys RO. 2023-12-16 13:06:49 +00:00
.gitignore Add .gitignore rules for in-tree builds. 2021-04-19 18:26:56 +01:00
aqsync.c Build outgoing SSH agent requests in a strbuf. 2018-05-25 14:36:16 +01:00
be_list.c Merge be_*.c into one ifdef-controlled module. 2021-11-26 17:58:55 +00:00
Buildscr Update version number for 0.79 release. 2023-08-26 08:39:42 +01:00
Buildscr.cv Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
callback.c Add lots of missing 'static' keywords. 2020-01-29 06:44:18 +00:00
cgtest.c Richer data type for interactive prompt results. 2021-12-28 18:08:31 +00:00
CHECKLST.txt CHECKLST.txt: suggest writing Windows Store blurb ahead of time. 2023-11-18 09:09:55 +00:00
clicons.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
CMakeLists.txt CMakeLists.txt: explicitly ask for C99. 2023-11-18 09:09:55 +00:00
cmdgen.c cmdgen: Fix docs and usage messages. 2022-10-20 23:55:19 +01:00
cmdline.c Restrict -pwfile / -pw to apply to server prompts only. 2022-10-23 14:13:55 +01:00
config.c Make it clearer that detached SSH cert is optional. 2023-07-19 17:15:23 +01:00
console.c Refactor confirm_weak to use SeatDialogText. 2023-11-29 07:29:29 +00:00
console.h Mention the host name in host-key prompts. 2021-09-16 14:33:59 +01:00
defs.h Centralise most details of host-key prompting. 2022-07-07 18:05:32 +01:00
dialog.c Fix uninitialised field in ctrl_fileselect. 2022-07-24 14:08:56 +01:00
dialog.h Replace integer context2 encoding in conf_editbox_handler. 2022-09-01 20:43:23 +01:00
errsock.c Change vtable defs to use C99 designated initialisers. 2020-03-10 21:06:29 +00:00
import.c Add a batch of missing 'static's. 2022-09-03 12:02:48 +01:00
LATEST.VER Update version number for 0.79 release. 2023-08-26 08:39:42 +01:00
ldisc.c ldisc: fix unwanted double-action of ^U. 2023-04-19 14:28:36 +01:00
LICENCE It's a new year. 2023-04-19 14:28:36 +01:00
licence.pl Separate the functions of licence.pl. 2021-04-17 13:52:27 +01:00
logging.c logging: allow &H to expand to serial line. 2023-07-16 16:05:48 +01:00
marshal.h Formatting: realign run-on parenthesised stuff. 2022-08-03 20:48:46 +01:00
misc.h Add a missing prototype. 2022-09-03 11:59:12 +01:00
mksrcarc.sh Updates to mksrcarc.sh. 2022-09-01 20:43:23 +01:00
mkunxarc.sh Integrate the 'doc' subdir into the CMake system. 2021-05-03 17:01:55 +01:00
mpint.h Utility function mp_resize. 2022-04-15 17:46:06 +01:00
network.h New facility, platform_start_subprocess. 2022-09-01 20:43:23 +01:00
pageant.c Formatting: another handful of mis-indented labels. 2022-08-07 18:44:11 +01:00
pageant.h winpgnt: menu options to delete/reencrypt everything. 2021-04-04 10:02:24 +01:00
pinger.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pscp.c Formatting: miscellaneous. 2022-08-03 20:48:46 +01:00
psftp.c PSFTP: fix memory leak opening two consecutive sessions. 2023-06-07 07:29:26 +01:00
psftp.h Remove FLAG_VERBOSE. 2020-01-30 06:40:21 +00:00
psftpcommon.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00
psocks.c Add some missing #includes. 2022-09-03 11:59:12 +01:00
psocks.h Remove a couple of double-typedefs. 2023-11-18 09:09:55 +00:00
putty.h Refactor confirm_weak to use SeatDialogText. 2023-11-29 07:29:29 +00:00
puttymem.h Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
README README: remove mention of doc/Makefile. 2022-10-23 12:37:20 +01:00
release.pl Remove FTP from release machinery. 2022-09-12 09:34:01 +01:00
settings.c settings.c: missing 'const' in gppfont(). 2023-11-18 09:11:33 +00:00
sign.sh GPG key rollover. 2023-07-31 20:01:24 +01:00
ssh.h Terrapin warning: say if reconfiguration can help. 2023-12-13 18:49:17 +00:00
sshcr.h Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
sshkeygen.h Side-channel-safe rewrite of the Miller-Rabin test. 2021-08-27 18:04:49 +01:00
sshpubk.c Remove a pointless allocation. 2023-04-19 14:18:58 +01:00
sshrand.c Remove dependency of sshrand.c on SHA-512. 2020-09-13 09:11:31 +01:00
storage.h Certificate trust scope: change to a boolean-expression system. 2022-06-25 14:32:23 +01:00
timing.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
tree234.h Formatting: remove spurious spaces in 'type * var'. 2022-08-03 20:48:46 +01:00
version.h Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
x11disp.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00

This is the README for PuTTY, a free Windows and Unix Telnet and SSH
client.

PuTTY is built using CMake <https://cmake.org/>. To compile in the
simplest way (on any of Linux, Windows or Mac), run these commands in
the source directory:

  cmake .
  cmake --build .

Then, to install in the simplest way on Linux or Mac:

  cmake --build . --target install

On Unix, pterm would like to be setuid or setgid, as appropriate, to
permit it to write records of user logins to /var/run/utmp and
/var/log/wtmp. (Of course it will not use this privilege for
anything else, and in particular it will drop all privileges before
starting up complex subsystems like GTK.) The cmake install step
doesn't attempt to add these privileges, so if you want user login
recording to work, you should manually ch{own,grp} and chmod the
pterm binary yourself after installation. If you don't do this,
pterm will still work, but not update the user login databases.

Documentation (in various formats including Windows Help and Unix
`man' pages) is built from the Halibut (`.but') files in the `doc'
subdirectory. If you aren't using one of our source snapshots,
you'll need to do this yourself. Halibut can be found at
<https://www.chiark.greenend.org.uk/~sgtatham/halibut/>.

The PuTTY home web site is

    https://www.chiark.greenend.org.uk/~sgtatham/putty/

If you want to send bug reports or feature requests, please read the
Feedback section of the web site before doing so. Sending one-line
reports saying `it doesn't work' will waste your time as much as
ours.

See the file LICENCE for the licence conditions.