mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-01 11:32:48 -05:00
Merge the 0.74 release branch back to master.
Two minor memory-leak fixes on 0.74 seem not to be needed on master: the fix in an early exit path of pageant_add_keyfile is done already on master in a different way, and the missing sfree(fdlist) in uxsftp.c is in code that's been completely rewritten in the uxcliloop refactoring. Other minor conflicts: the rework in commit b52641644905 of ssh1login.c collided with the change from FLAG_VERBOSE to seat_verbose(), and master and 0.74 each added an unrelated extra field to the end of struct SshServerConfig.
This commit is contained in:
@ -315,22 +315,25 @@ bool do_cmdline(int argc, char **argv, bool do_everything, Conf *conf)
|
||||
char *val;
|
||||
|
||||
/*
|
||||
* Macros to make argument handling easier. Note that because
|
||||
* they need to call `continue', they cannot be contained in
|
||||
* the usual do {...} while (0) wrapper to make them
|
||||
* syntactically single statements; hence it is not legal to
|
||||
* use one of these macros as an unbraced statement between
|
||||
* `if' and `else'.
|
||||
* Macros to make argument handling easier.
|
||||
*
|
||||
* Note that because they need to call `continue', they cannot be
|
||||
* contained in the usual do {...} while (0) wrapper to make them
|
||||
* syntactically single statements. I use the alternative if (1)
|
||||
* {...} else ((void)0).
|
||||
*/
|
||||
#define EXPECTS_ARG { \
|
||||
if (--argc <= 0) { \
|
||||
err = true; \
|
||||
fprintf(stderr, "%s: %s expects an argument\n", appname, p); \
|
||||
continue; \
|
||||
} else \
|
||||
val = *++argv; \
|
||||
}
|
||||
#define SECOND_PASS_ONLY do { if (!do_everything) continue; } while (0)
|
||||
#define EXPECTS_ARG if (1) { \
|
||||
if (--argc <= 0) { \
|
||||
err = true; \
|
||||
fprintf(stderr, "%s: %s expects an argument\n", appname, p); \
|
||||
continue; \
|
||||
} else \
|
||||
val = *++argv; \
|
||||
} else ((void)0)
|
||||
#define SECOND_PASS_ONLY if (1) { \
|
||||
if (!do_everything) \
|
||||
continue; \
|
||||
} else ((void)0)
|
||||
|
||||
while (--argc > 0) {
|
||||
const char *p = *++argv;
|
||||
|
@ -29,6 +29,7 @@ Socket *platform_make_agent_socket(
|
||||
if ((errw = make_dir_and_check_ours(socketdir)) != NULL) {
|
||||
*error = dupprintf("%s: %s\n", socketdir, errw);
|
||||
sfree(errw);
|
||||
sfree(socketdir);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -206,6 +206,8 @@ static void setup_utmp(char *ttyname, char *location)
|
||||
struct timeval tv;
|
||||
|
||||
pw = getpwuid(getuid());
|
||||
if (!pw)
|
||||
return; /* can't stamp utmp if we don't have a username */
|
||||
memset(&utmp_entry, 0, sizeof(utmp_entry));
|
||||
utmp_entry.ut_type = USER_PROCESS;
|
||||
utmp_entry.ut_pid = getpid();
|
||||
|
@ -775,6 +775,8 @@ int main(int argc, char **argv)
|
||||
filename_free(logfile);
|
||||
conf_set_int(conf, CONF_logtype, LGTYP_SSHRAW);
|
||||
conf_set_int(conf, CONF_logxfovr, LGXF_OVR);
|
||||
} else if (!strcmp(arg, "--pretend-to-accept-any-pubkey")) {
|
||||
ssc.stunt_pretend_to_accept_any_pubkey = true;
|
||||
} else {
|
||||
fprintf(stderr, "%s: unrecognised option '%s'\n", appname, arg);
|
||||
exit(1);
|
||||
|
Reference in New Issue
Block a user