=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/readconf.c,v retrieving revision 1.31.2.5 retrieving revision 1.32 diff -u -r1.31.2.5 -r1.32 --- src/usr.bin/ssh/readconf.c 2001/03/21 18:52:57 1.31.2.5 +++ src/usr.bin/ssh/readconf.c 2000/05/22 18:42:01 1.32 @@ -1,30 +1,27 @@ /* + * + * readconf.c + * * Author: Tatu Ylonen + * * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland * All rights reserved + * + * Created: Sat Apr 22 00:03:10 1995 ylo + * * Functions for reading the configuration files. * - * As far as I am concerned, the code I have written for this software - * can be used freely for any purpose. Any derived versions of this - * software must be clearly marked as such, and if the derived work is - * incompatible with the protocol description in the RFC file, it must be - * called by a name other than "ssh" or "Secure Shell". */ #include "includes.h" -RCSID("$OpenBSD: readconf.c,v 1.31.2.5 2001/03/21 18:52:57 jason Exp $"); +RCSID("$Id: readconf.c,v 1.32 2000/05/22 18:42:01 markus Exp $"); #include "ssh.h" -#include "xmalloc.h" -#include "compat.h" #include "cipher.h" -#include "pathnames.h" -#include "log.h" #include "readconf.h" #include "match.h" -#include "misc.h" -#include "kex.h" -#include "mac.h" +#include "xmalloc.h" +#include "compat.h" /* Format of the configuration file: @@ -74,7 +71,7 @@ # Defaults for various options Host * ForwardAgent no - ForwardX11 no + ForwardX11 yes RhostsAuthentication yes PasswordAuthentication yes RSAAuthentication yes @@ -95,7 +92,7 @@ oBadOption, oForwardAgent, oForwardX11, oGatewayPorts, oRhostsAuthentication, oPasswordAuthentication, oRSAAuthentication, oFallBackToRsh, oUseRsh, - oChallengeResponseAuthentication, oXAuthLocation, + oSkeyAuthentication, #ifdef KRB4 oKerberosAuthentication, #endif /* KRB4 */ @@ -106,11 +103,9 @@ oUser, oHost, oEscapeChar, oRhostsRSAAuthentication, oProxyCommand, oGlobalKnownHostsFile, oUserKnownHostsFile, oConnectionAttempts, oBatchMode, oCheckHostIP, oStrictHostKeyChecking, oCompression, - oCompressionLevel, oKeepAlives, oNumberOfPasswordPrompts, - oUsePrivilegedPort, oLogLevel, oCiphers, oProtocol, oMacs, - oGlobalKnownHostsFile2, oUserKnownHostsFile2, oPubkeyAuthentication, - oKbdInteractiveAuthentication, oKbdInteractiveDevices, oHostKeyAlias, - oPreferredAuthentications + oCompressionLevel, oKeepAlives, oNumberOfPasswordPrompts, oTISAuthentication, + oUsePrivilegedPort, oLogLevel, oCiphers, oProtocol, oIdentityFile2, + oGlobalKnownHostsFile2, oUserKnownHostsFile2, oDSAAuthentication } OpCodes; /* Textual representations of the tokens. */ @@ -121,19 +116,13 @@ } keywords[] = { { "forwardagent", oForwardAgent }, { "forwardx11", oForwardX11 }, - { "xauthlocation", oXAuthLocation }, { "gatewayports", oGatewayPorts }, { "useprivilegedport", oUsePrivilegedPort }, { "rhostsauthentication", oRhostsAuthentication }, { "passwordauthentication", oPasswordAuthentication }, - { "kbdinteractiveauthentication", oKbdInteractiveAuthentication }, - { "kbdinteractivedevices", oKbdInteractiveDevices }, { "rsaauthentication", oRSAAuthentication }, - { "pubkeyauthentication", oPubkeyAuthentication }, - { "dsaauthentication", oPubkeyAuthentication }, /* alias */ - { "challengeresponseauthentication", oChallengeResponseAuthentication }, - { "skeyauthentication", oChallengeResponseAuthentication }, /* alias */ - { "tisauthentication", oChallengeResponseAuthentication }, /* alias */ + { "dsaauthentication", oDSAAuthentication }, + { "skeyauthentication", oSkeyAuthentication }, #ifdef KRB4 { "kerberosauthentication", oKerberosAuthentication }, #endif /* KRB4 */ @@ -144,14 +133,12 @@ { "fallbacktorsh", oFallBackToRsh }, { "usersh", oUseRsh }, { "identityfile", oIdentityFile }, - { "identityfile2", oIdentityFile }, /* alias */ + { "identityfile2", oIdentityFile2 }, { "hostname", oHostName }, - { "hostkeyalias", oHostKeyAlias }, { "proxycommand", oProxyCommand }, { "port", oPort }, { "cipher", oCipher }, { "ciphers", oCiphers }, - { "macs", oMacs }, { "protocol", oProtocol }, { "remoteforward", oRemoteForward }, { "localforward", oLocalForward }, @@ -171,11 +158,15 @@ { "compressionlevel", oCompressionLevel }, { "keepalive", oKeepAlives }, { "numberofpasswordprompts", oNumberOfPasswordPrompts }, + { "tisauthentication", oTISAuthentication }, { "loglevel", oLogLevel }, - { "preferredauthentications", oPreferredAuthentications }, { NULL, 0 } }; +/* Characters considered whitespace in strtok calls. */ +#define WHITESPACE " \t\r\n" + + /* * Adds a local TCP/IP port forward to options. Never returns if there is an * error. @@ -188,7 +179,7 @@ Forward *fwd; extern uid_t original_real_uid; if (port < IPPORT_RESERVED && original_real_uid != 0) - fatal("Privileged ports can only be forwarded by root."); + fatal("Privileged ports can only be forwarded by root.\n"); if (options->num_local_forwards >= SSH_MAX_FORWARDS_PER_DIRECTION) fatal("Too many local forwards (max %d).", SSH_MAX_FORWARDS_PER_DIRECTION); fwd = &options->local_forwards[options->num_local_forwards++]; @@ -224,7 +215,7 @@ static OpCodes parse_token(const char *cp, const char *filename, int linenum) { - u_int i; + unsigned int i; for (i = 0; keywords[i].name; i++) if (strcasecmp(cp, keywords[i].name) == 0) @@ -245,20 +236,18 @@ char *line, const char *filename, int linenum, int *activep) { - char buf[256], *s, *string, **charptr, *endofnumber, *keyword, *arg; + char buf[256], *cp, *string, **charptr, *cp2; int opcode, *intptr, value; u_short fwd_port, fwd_host_port; - s = line; - /* Get the keyword. (Each line is supposed to begin with a keyword). */ - keyword = strdelim(&s); - /* Ignore leading whitespace. */ - if (*keyword == '\0') - keyword = strdelim(&s); - if (keyword == NULL || !*keyword || *keyword == '\n' || *keyword == '#') + /* Skip leading whitespace. */ + cp = line + strspn(line, WHITESPACE); + if (!*cp || *cp == '\n' || *cp == '#') return 0; - opcode = parse_token(keyword, filename, linenum); + /* Get the keyword. (Each line is supposed to begin with a keyword). */ + cp = strtok(cp, WHITESPACE); + opcode = parse_token(cp, filename, linenum); switch (opcode) { case oBadOption: @@ -268,13 +257,13 @@ case oForwardAgent: intptr = &options->forward_agent; parse_flag: - arg = strdelim(&s); - if (!arg || *arg == '\0') + cp = strtok(NULL, WHITESPACE); + if (!cp) fatal("%.200s line %d: Missing yes/no argument.", filename, linenum); value = 0; /* To avoid compiler warning... */ - if (strcmp(arg, "yes") == 0 || strcmp(arg, "true") == 0) + if (strcmp(cp, "yes") == 0 || strcmp(cp, "true") == 0) value = 1; - else if (strcmp(arg, "no") == 0 || strcmp(arg, "false") == 0) + else if (strcmp(cp, "no") == 0 || strcmp(cp, "false") == 0) value = 0; else fatal("%.200s line %d: Bad yes/no argument.", filename, linenum); @@ -302,18 +291,10 @@ intptr = &options->password_authentication; goto parse_flag; - case oKbdInteractiveAuthentication: - intptr = &options->kbd_interactive_authentication; + case oDSAAuthentication: + intptr = &options->dsa_authentication; goto parse_flag; - case oKbdInteractiveDevices: - charptr = &options->kbd_interactive_devices; - goto parse_string; - - case oPubkeyAuthentication: - intptr = &options->pubkey_authentication; - goto parse_flag; - case oRSAAuthentication: intptr = &options->rsa_authentication; goto parse_flag; @@ -322,8 +303,10 @@ intptr = &options->rhosts_rsa_authentication; goto parse_flag; - case oChallengeResponseAuthentication: - intptr = &options->challenge_reponse_authentication; + case oTISAuthentication: + /* fallthrough, there is no difference on the client side */ + case oSkeyAuthentication: + intptr = &options->skey_authentication; goto parse_flag; #ifdef KRB4 @@ -360,16 +343,16 @@ case oStrictHostKeyChecking: intptr = &options->strict_host_key_checking; - arg = strdelim(&s); - if (!arg || *arg == '\0') - fatal("%.200s line %d: Missing yes/no/ask argument.", + cp = strtok(NULL, WHITESPACE); + if (!cp) + fatal("%.200s line %d: Missing yes/no argument.", filename, linenum); value = 0; /* To avoid compiler warning... */ - if (strcmp(arg, "yes") == 0 || strcmp(arg, "true") == 0) + if (strcmp(cp, "yes") == 0 || strcmp(cp, "true") == 0) value = 1; - else if (strcmp(arg, "no") == 0 || strcmp(arg, "false") == 0) + else if (strcmp(cp, "no") == 0 || strcmp(cp, "false") == 0) value = 0; - else if (strcmp(arg, "ask") == 0) + else if (strcmp(cp, "ask") == 0) value = 2; else fatal("%.200s line %d: Bad yes/no/ask argument.", filename, linenum); @@ -394,32 +377,33 @@ goto parse_int; case oIdentityFile: - arg = strdelim(&s); - if (!arg || *arg == '\0') + case oIdentityFile2: + cp = strtok(NULL, WHITESPACE); + if (!cp) fatal("%.200s line %d: Missing argument.", filename, linenum); if (*activep) { - intptr = &options->num_identity_files; + intptr = (opcode == oIdentityFile) ? + &options->num_identity_files : + &options->num_identity_files2; if (*intptr >= SSH_MAX_IDENTITY_FILES) fatal("%.200s line %d: Too many identity files specified (max %d).", filename, linenum, SSH_MAX_IDENTITY_FILES); - charptr = &options->identity_files[*intptr]; - *charptr = xstrdup(arg); + charptr = (opcode == oIdentityFile) ? + &options->identity_files[*intptr] : + &options->identity_files2[*intptr]; + *charptr = xstrdup(cp); *intptr = *intptr + 1; } break; - case oXAuthLocation: - charptr=&options->xauth_location; - goto parse_string; - case oUser: charptr = &options->user; parse_string: - arg = strdelim(&s); - if (!arg || *arg == '\0') + cp = strtok(NULL, WHITESPACE); + if (!cp) fatal("%.200s line %d: Missing argument.", filename, linenum); if (*activep && *charptr == NULL) - *charptr = xstrdup(arg); + *charptr = xstrdup(cp); break; case oGlobalKnownHostsFile: @@ -442,21 +426,13 @@ charptr = &options->hostname; goto parse_string; - case oHostKeyAlias: - charptr = &options->host_key_alias; - goto parse_string; - - case oPreferredAuthentications: - charptr = &options->preferred_authentications; - goto parse_string; - case oProxyCommand: charptr = &options->proxy_command; string = xstrdup(""); - while ((arg = strdelim(&s)) != NULL && *arg != '\0') { - string = xrealloc(string, strlen(string) + strlen(arg) + 2); + while ((cp = strtok(NULL, WHITESPACE)) != NULL) { + string = xrealloc(string, strlen(string) + strlen(cp) + 2); strcat(string, " "); - strcat(string, arg); + strcat(string, cp); } if (*activep && *charptr == NULL) *charptr = string; @@ -467,15 +443,15 @@ case oPort: intptr = &options->port; parse_int: - arg = strdelim(&s); - if (!arg || *arg == '\0') + cp = strtok(NULL, WHITESPACE); + if (!cp) fatal("%.200s line %d: Missing argument.", filename, linenum); - if (arg[0] < '0' || arg[0] > '9') + if (cp[0] < '0' || cp[0] > '9') fatal("%.200s line %d: Bad number.", filename, linenum); /* Octal, decimal, or hex format? */ - value = strtol(arg, &endofnumber, 0); - if (arg == endofnumber) + value = strtol(cp, &cp2, 0); + if (cp == cp2) fatal("%.200s line %d: Bad number.", filename, linenum); if (*activep && *intptr == -1) *intptr = value; @@ -487,76 +463,65 @@ case oCipher: intptr = &options->cipher; - arg = strdelim(&s); - if (!arg || *arg == '\0') + cp = strtok(NULL, WHITESPACE); + if (!cp) fatal("%.200s line %d: Missing argument.", filename, linenum); - value = cipher_number(arg); + value = cipher_number(cp); if (value == -1) fatal("%.200s line %d: Bad cipher '%s'.", - filename, linenum, arg ? arg : ""); + filename, linenum, cp ? cp : ""); if (*activep && *intptr == -1) *intptr = value; break; case oCiphers: - arg = strdelim(&s); - if (!arg || *arg == '\0') + cp = strtok(NULL, WHITESPACE); + if (!cp) fatal("%.200s line %d: Missing argument.", filename, linenum); - if (!ciphers_valid(arg)) + if (!ciphers_valid(cp)) fatal("%.200s line %d: Bad SSH2 cipher spec '%s'.", - filename, linenum, arg ? arg : ""); + filename, linenum, cp ? cp : ""); if (*activep && options->ciphers == NULL) - options->ciphers = xstrdup(arg); + options->ciphers = xstrdup(cp); break; - case oMacs: - arg = strdelim(&s); - if (!arg || *arg == '\0') - fatal("%.200s line %d: Missing argument.", filename, linenum); - if (!mac_valid(arg)) - fatal("%.200s line %d: Bad SSH2 Mac spec '%s'.", - filename, linenum, arg ? arg : ""); - if (*activep && options->macs == NULL) - options->macs = xstrdup(arg); - break; - case oProtocol: intptr = &options->protocol; - arg = strdelim(&s); - if (!arg || *arg == '\0') + cp = strtok(NULL, WHITESPACE); + if (!cp) fatal("%.200s line %d: Missing argument.", filename, linenum); - value = proto_spec(arg); + value = proto_spec(cp); if (value == SSH_PROTO_UNKNOWN) fatal("%.200s line %d: Bad protocol spec '%s'.", - filename, linenum, arg ? arg : ""); + filename, linenum, cp ? cp : ""); if (*activep && *intptr == SSH_PROTO_UNKNOWN) *intptr = value; break; case oLogLevel: intptr = (int *) &options->log_level; - arg = strdelim(&s); - value = log_level_number(arg); + cp = strtok(NULL, WHITESPACE); + value = log_level_number(cp); if (value == (LogLevel) - 1) - fatal("%.200s line %d: unsupported log level '%s'", - filename, linenum, arg ? arg : ""); + fatal("%.200s line %d: unsupported log level '%s'\n", + filename, linenum, cp ? cp : ""); if (*activep && (LogLevel) * intptr == -1) *intptr = (LogLevel) value; break; case oRemoteForward: - arg = strdelim(&s); - if (!arg || *arg == '\0') + cp = strtok(NULL, WHITESPACE); + if (!cp) fatal("%.200s line %d: Missing argument.", filename, linenum); - if (arg[0] < '0' || arg[0] > '9') + if (cp[0] < '0' || cp[0] > '9') fatal("%.200s line %d: Badly formatted port number.", filename, linenum); - fwd_port = atoi(arg); - arg = strdelim(&s); - if (!arg || *arg == '\0') + fwd_port = atoi(cp); + cp = strtok(NULL, WHITESPACE); + if (!cp) fatal("%.200s line %d: Missing second argument.", filename, linenum); - if (sscanf(arg, "%255[^:]:%hu", buf, &fwd_host_port) != 2) + if (sscanf(cp, "%255[^:]:%hu", buf, &fwd_host_port) != 2) fatal("%.200s line %d: Badly formatted host:port.", filename, linenum); if (*activep) @@ -564,18 +529,18 @@ break; case oLocalForward: - arg = strdelim(&s); - if (!arg || *arg == '\0') + cp = strtok(NULL, WHITESPACE); + if (!cp) fatal("%.200s line %d: Missing argument.", filename, linenum); - if (arg[0] < '0' || arg[0] > '9') + if (cp[0] < '0' || cp[0] > '9') fatal("%.200s line %d: Badly formatted port number.", filename, linenum); - fwd_port = atoi(arg); - arg = strdelim(&s); - if (!arg || *arg == '\0') + fwd_port = atoi(cp); + cp = strtok(NULL, WHITESPACE); + if (!cp) fatal("%.200s line %d: Missing second argument.", filename, linenum); - if (sscanf(arg, "%255[^:]:%hu", buf, &fwd_host_port) != 2) + if (sscanf(cp, "%255[^:]:%hu", buf, &fwd_host_port) != 2) fatal("%.200s line %d: Badly formatted host:port.", filename, linenum); if (*activep) @@ -584,26 +549,26 @@ case oHost: *activep = 0; - while ((arg = strdelim(&s)) != NULL && *arg != '\0') - if (match_pattern(host, arg)) { - debug("Applying options for %.100s", arg); + while ((cp = strtok(NULL, WHITESPACE)) != NULL) + if (match_pattern(host, cp)) { + debug("Applying options for %.100s", cp); *activep = 1; break; } - /* Avoid garbage check below, as strdelim is done. */ + /* Avoid garbage check below, as strtok already returned NULL. */ return 0; case oEscapeChar: intptr = &options->escape_char; - arg = strdelim(&s); - if (!arg || *arg == '\0') + cp = strtok(NULL, WHITESPACE); + if (!cp) fatal("%.200s line %d: Missing argument.", filename, linenum); - if (arg[0] == '^' && arg[2] == 0 && - (u_char) arg[1] >= 64 && (u_char) arg[1] < 128) - value = (u_char) arg[1] & 31; - else if (strlen(arg) == 1) - value = (u_char) arg[0]; - else if (strcmp(arg, "none") == 0) + if (cp[0] == '^' && cp[2] == 0 && + (unsigned char) cp[1] >= 64 && (unsigned char) cp[1] < 128) + value = (unsigned char) cp[1] & 31; + else if (strlen(cp) == 1) + value = (unsigned char) cp[0]; + else if (strcmp(cp, "none") == 0) value = -2; else { fatal("%.200s line %d: Bad escape character.", @@ -620,10 +585,9 @@ } /* Check that there is no garbage at end of line. */ - if ((arg = strdelim(&s)) != NULL && *arg != '\0') { - fatal("%.200s line %d: garbage at end of line; \"%.200s\".", - filename, linenum, arg); - } + if (strtok(NULL, WHITESPACE) != NULL) + fatal("%.200s line %d: garbage at end of line.", + filename, linenum); return 0; } @@ -663,7 +627,7 @@ } fclose(f); if (bad_options > 0) - fatal("%s: terminating, %d bad configuration options", + fatal("%s: terminating, %d bad configuration options\n", filename, bad_options); } @@ -680,13 +644,12 @@ memset(options, 'X', sizeof(*options)); options->forward_agent = -1; options->forward_x11 = -1; - options->xauth_location = NULL; options->gateway_ports = -1; options->use_privileged_port = -1; options->rhosts_authentication = -1; options->rsa_authentication = -1; - options->pubkey_authentication = -1; - options->challenge_reponse_authentication = -1; + options->dsa_authentication = -1; + options->skey_authentication = -1; #ifdef KRB4 options->kerberos_authentication = -1; #endif @@ -695,8 +658,6 @@ options->afs_token_passing = -1; #endif options->password_authentication = -1; - options->kbd_interactive_authentication = -1; - options->kbd_interactive_devices = NULL; options->rhosts_rsa_authentication = -1; options->fallback_to_rsh = -1; options->use_rsh = -1; @@ -711,11 +672,10 @@ options->number_of_password_prompts = -1; options->cipher = -1; options->ciphers = NULL; - options->macs = NULL; options->protocol = SSH_PROTO_UNKNOWN; options->num_identity_files = 0; + options->num_identity_files2 = 0; options->hostname = NULL; - options->host_key_alias = NULL; options->proxy_command = NULL; options->user = NULL; options->escape_char = -1; @@ -726,7 +686,6 @@ options->num_local_forwards = 0; options->num_remote_forwards = 0; options->log_level = (LogLevel) - 1; - options->preferred_authentications = NULL; } /* @@ -737,28 +696,22 @@ void fill_default_options(Options * options) { - int len; - if (options->forward_agent == -1) - options->forward_agent = 0; + options->forward_agent = 1; if (options->forward_x11 == -1) options->forward_x11 = 0; -#ifdef XAUTH_PATH - if (options->xauth_location == NULL) - options->xauth_location = XAUTH_PATH; -#endif /* XAUTH_PATH */ if (options->gateway_ports == -1) options->gateway_ports = 0; if (options->use_privileged_port == -1) - options->use_privileged_port = 0; + options->use_privileged_port = 1; if (options->rhosts_authentication == -1) options->rhosts_authentication = 1; if (options->rsa_authentication == -1) options->rsa_authentication = 1; - if (options->pubkey_authentication == -1) - options->pubkey_authentication = 1; - if (options->challenge_reponse_authentication == -1) - options->challenge_reponse_authentication = 0; + if (options->dsa_authentication == -1) + options->dsa_authentication = 1; + if (options->skey_authentication == -1) + options->skey_authentication = 0; #ifdef KRB4 if (options->kerberos_authentication == -1) options->kerberos_authentication = 1; @@ -771,12 +724,10 @@ #endif /* AFS */ if (options->password_authentication == -1) options->password_authentication = 1; - if (options->kbd_interactive_authentication == -1) - options->kbd_interactive_authentication = 1; if (options->rhosts_rsa_authentication == -1) options->rhosts_rsa_authentication = 1; if (options->fallback_to_rsh == -1) - options->fallback_to_rsh = 0; + options->fallback_to_rsh = 1; if (options->use_rsh == -1) options->use_rsh = 0; if (options->batch_mode == -1) @@ -801,46 +752,33 @@ if (options->cipher == -1) options->cipher = SSH_CIPHER_NOT_SET; /* options->ciphers, default set in myproposals.h */ - /* options->macs, default set in myproposals.h */ if (options->protocol == SSH_PROTO_UNKNOWN) options->protocol = SSH_PROTO_1|SSH_PROTO_2|SSH_PROTO_1_PREFERRED; if (options->num_identity_files == 0) { - if (options->protocol & SSH_PROTO_1) { - len = 2 + strlen(_PATH_SSH_CLIENT_IDENTITY) + 1; - options->identity_files[options->num_identity_files] = - xmalloc(len); - snprintf(options->identity_files[options->num_identity_files++], - len, "~/%.100s", _PATH_SSH_CLIENT_IDENTITY); - } - if (options->protocol & SSH_PROTO_2) { - len = 2 + strlen(_PATH_SSH_CLIENT_ID_RSA) + 1; - options->identity_files[options->num_identity_files] = - xmalloc(len); - snprintf(options->identity_files[options->num_identity_files++], - len, "~/%.100s", _PATH_SSH_CLIENT_ID_RSA); - - len = 2 + strlen(_PATH_SSH_CLIENT_ID_DSA) + 1; - options->identity_files[options->num_identity_files] = - xmalloc(len); - snprintf(options->identity_files[options->num_identity_files++], - len, "~/%.100s", _PATH_SSH_CLIENT_ID_DSA); - } + options->identity_files[0] = + xmalloc(2 + strlen(SSH_CLIENT_IDENTITY) + 1); + sprintf(options->identity_files[0], "~/%.100s", SSH_CLIENT_IDENTITY); + options->num_identity_files = 1; } + if (options->num_identity_files2 == 0) { + options->identity_files2[0] = + xmalloc(2 + strlen(SSH_CLIENT_ID_DSA) + 1); + sprintf(options->identity_files2[0], "~/%.100s", SSH_CLIENT_ID_DSA); + options->num_identity_files2 = 1; + } if (options->escape_char == -1) options->escape_char = '~'; if (options->system_hostfile == NULL) - options->system_hostfile = _PATH_SSH_SYSTEM_HOSTFILE; + options->system_hostfile = SSH_SYSTEM_HOSTFILE; if (options->user_hostfile == NULL) - options->user_hostfile = _PATH_SSH_USER_HOSTFILE; + options->user_hostfile = SSH_USER_HOSTFILE; if (options->system_hostfile2 == NULL) - options->system_hostfile2 = _PATH_SSH_SYSTEM_HOSTFILE2; + options->system_hostfile2 = SSH_SYSTEM_HOSTFILE2; if (options->user_hostfile2 == NULL) - options->user_hostfile2 = _PATH_SSH_USER_HOSTFILE2; + options->user_hostfile2 = SSH_USER_HOSTFILE2; if (options->log_level == (LogLevel) - 1) options->log_level = SYSLOG_LEVEL_INFO; /* options->proxy_command should not be set by default */ /* options->user will be set in the main program if appropriate */ /* options->hostname will be set in the main program if appropriate */ - /* options->host_key_alias should not be set by default */ - /* options->preferred_authentications will be set in ssh */ }