[BACK]Return to readconf.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/readconf.c between version 1.102 and 1.102.2.2

version 1.102, 2003/02/05 09:02:28 version 1.102.2.2, 2004/03/04 18:18:16
Line 57 
Line 57 
    Host fascist.blob.com     Host fascist.blob.com
      Port 23123       Port 23123
      User tylonen       User tylonen
      RhostsAuthentication no  
      PasswordAuthentication no       PasswordAuthentication no
   
    Host puukko.hut.fi     Host puukko.hut.fi
Line 75 
Line 74 
    Host *     Host *
      ForwardAgent no       ForwardAgent no
      ForwardX11 no       ForwardX11 no
      RhostsAuthentication yes  
      PasswordAuthentication yes       PasswordAuthentication yes
      RSAAuthentication yes       RSAAuthentication yes
      RhostsRSAAuthentication yes       RhostsRSAAuthentication yes
      StrictHostKeyChecking yes       StrictHostKeyChecking yes
      KeepAlives no       TcpKeepAlive no
      IdentityFile ~/.ssh/identity       IdentityFile ~/.ssh/identity
      Port 22       Port 22
      EscapeChar ~       EscapeChar ~
Line 91 
Line 89 
   
 typedef enum {  typedef enum {
         oBadOption,          oBadOption,
         oForwardAgent, oForwardX11, oGatewayPorts, oRhostsAuthentication,          oForwardAgent, oForwardX11, oForwardX11Trusted, oGatewayPorts,
         oPasswordAuthentication, oRSAAuthentication,          oPasswordAuthentication, oRSAAuthentication,
         oChallengeResponseAuthentication, oXAuthLocation,          oChallengeResponseAuthentication, oXAuthLocation,
 #if defined(KRB4) || defined(KRB5)  
         oKerberosAuthentication,  
 #endif  
 #if defined(AFS) || defined(KRB5)  
         oKerberosTgtPassing,  
 #endif  
 #ifdef AFS  
         oAFSTokenPassing,  
 #endif  
         oIdentityFile, oHostName, oPort, oCipher, oRemoteForward, oLocalForward,          oIdentityFile, oHostName, oPort, oCipher, oRemoteForward, oLocalForward,
         oUser, oHost, oEscapeChar, oRhostsRSAAuthentication, oProxyCommand,          oUser, oHost, oEscapeChar, oRhostsRSAAuthentication, oProxyCommand,
         oGlobalKnownHostsFile, oUserKnownHostsFile, oConnectionAttempts,          oGlobalKnownHostsFile, oUserKnownHostsFile, oConnectionAttempts,
         oBatchMode, oCheckHostIP, oStrictHostKeyChecking, oCompression,          oBatchMode, oCheckHostIP, oStrictHostKeyChecking, oCompression,
         oCompressionLevel, oKeepAlives, oNumberOfPasswordPrompts,          oCompressionLevel, oTCPKeepAlive, oNumberOfPasswordPrompts,
         oUsePrivilegedPort, oLogLevel, oCiphers, oProtocol, oMacs,          oUsePrivilegedPort, oLogLevel, oCiphers, oProtocol, oMacs,
         oGlobalKnownHostsFile2, oUserKnownHostsFile2, oPubkeyAuthentication,          oGlobalKnownHostsFile2, oUserKnownHostsFile2, oPubkeyAuthentication,
         oKbdInteractiveAuthentication, oKbdInteractiveDevices, oHostKeyAlias,          oKbdInteractiveAuthentication, oKbdInteractiveDevices, oHostKeyAlias,
         oDynamicForward, oPreferredAuthentications, oHostbasedAuthentication,          oDynamicForward, oPreferredAuthentications, oHostbasedAuthentication,
         oHostKeyAlgorithms, oBindAddress, oSmartcardDevice,          oHostKeyAlgorithms, oBindAddress, oSmartcardDevice,
         oClearAllForwardings, oNoHostAuthenticationForLocalhost,          oClearAllForwardings, oNoHostAuthenticationForLocalhost,
         oEnableSSHKeysign,          oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout,
         oDeprecated          oAddressFamily, oGssAuthentication, oGssDelegateCreds,
           oServerAliveInterval, oServerAliveCountMax,
           oDeprecated, oUnsupported
 } OpCodes;  } OpCodes;
   
 /* Textual representations of the tokens. */  /* Textual representations of the tokens. */
Line 126 
Line 117 
 } keywords[] = {  } keywords[] = {
         { "forwardagent", oForwardAgent },          { "forwardagent", oForwardAgent },
         { "forwardx11", oForwardX11 },          { "forwardx11", oForwardX11 },
           { "forwardx11trusted", oForwardX11Trusted },
         { "xauthlocation", oXAuthLocation },          { "xauthlocation", oXAuthLocation },
         { "gatewayports", oGatewayPorts },          { "gatewayports", oGatewayPorts },
         { "useprivilegedport", oUsePrivilegedPort },          { "useprivilegedport", oUsePrivilegedPort },
         { "rhostsauthentication", oRhostsAuthentication },          { "rhostsauthentication", oDeprecated },
         { "passwordauthentication", oPasswordAuthentication },          { "passwordauthentication", oPasswordAuthentication },
         { "kbdinteractiveauthentication", oKbdInteractiveAuthentication },          { "kbdinteractiveauthentication", oKbdInteractiveAuthentication },
         { "kbdinteractivedevices", oKbdInteractiveDevices },          { "kbdinteractivedevices", oKbdInteractiveDevices },
Line 141 
Line 133 
         { "challengeresponseauthentication", oChallengeResponseAuthentication },          { "challengeresponseauthentication", oChallengeResponseAuthentication },
         { "skeyauthentication", oChallengeResponseAuthentication }, /* alias */          { "skeyauthentication", oChallengeResponseAuthentication }, /* alias */
         { "tisauthentication", oChallengeResponseAuthentication },  /* alias */          { "tisauthentication", oChallengeResponseAuthentication },  /* alias */
 #if defined(KRB4) || defined(KRB5)          { "kerberosauthentication", oUnsupported },
         { "kerberosauthentication", oKerberosAuthentication },          { "kerberostgtpassing", oUnsupported },
           { "afstokenpassing", oUnsupported },
   #if defined(GSSAPI)
           { "gssapiauthentication", oGssAuthentication },
           { "gssapidelegatecredentials", oGssDelegateCreds },
   #else
           { "gssapiauthentication", oUnsupported },
           { "gssapidelegatecredentials", oUnsupported },
 #endif  #endif
 #if defined(AFS) || defined(KRB5)  
         { "kerberostgtpassing", oKerberosTgtPassing },  
 #endif  
 #ifdef AFS  
         { "afstokenpassing", oAFSTokenPassing },  
 #endif  
         { "fallbacktorsh", oDeprecated },          { "fallbacktorsh", oDeprecated },
         { "usersh", oDeprecated },          { "usersh", oDeprecated },
         { "identityfile", oIdentityFile },          { "identityfile", oIdentityFile },
Line 177 
Line 170 
         { "stricthostkeychecking", oStrictHostKeyChecking },          { "stricthostkeychecking", oStrictHostKeyChecking },
         { "compression", oCompression },          { "compression", oCompression },
         { "compressionlevel", oCompressionLevel },          { "compressionlevel", oCompressionLevel },
         { "keepalive", oKeepAlives },          { "tcpkeepalive", oTCPKeepAlive },
           { "keepalive", oTCPKeepAlive },                         /* obsolete */
         { "numberofpasswordprompts", oNumberOfPasswordPrompts },          { "numberofpasswordprompts", oNumberOfPasswordPrompts },
         { "loglevel", oLogLevel },          { "loglevel", oLogLevel },
         { "dynamicforward", oDynamicForward },          { "dynamicforward", oDynamicForward },
         { "preferredauthentications", oPreferredAuthentications },          { "preferredauthentications", oPreferredAuthentications },
         { "hostkeyalgorithms", oHostKeyAlgorithms },          { "hostkeyalgorithms", oHostKeyAlgorithms },
         { "bindaddress", oBindAddress },          { "bindaddress", oBindAddress },
   #ifdef SMARTCARD
         { "smartcarddevice", oSmartcardDevice },          { "smartcarddevice", oSmartcardDevice },
   #else
           { "smartcarddevice", oUnsupported },
   #endif
         { "clearallforwardings", oClearAllForwardings },          { "clearallforwardings", oClearAllForwardings },
         { "enablesshkeysign", oEnableSSHKeysign },          { "enablesshkeysign", oEnableSSHKeysign },
           { "verifyhostkeydns", oVerifyHostKeyDNS },
         { "nohostauthenticationforlocalhost", oNoHostAuthenticationForLocalhost },          { "nohostauthenticationforlocalhost", oNoHostAuthenticationForLocalhost },
           { "rekeylimit", oRekeyLimit },
           { "connecttimeout", oConnectTimeout },
           { "addressfamily", oAddressFamily },
           { "serveraliveinterval", oServerAliveInterval },
           { "serveralivecountmax", oServerAliveCountMax },
         { NULL, oBadOption }          { NULL, oBadOption }
 };  };
   
Line 279 
Line 283 
         u_short fwd_port, fwd_host_port;          u_short fwd_port, fwd_host_port;
         char sfwd_host_port[6];          char sfwd_host_port[6];
   
           /* Strip trailing whitespace */
           for(len = strlen(line) - 1; len > 0; len--) {
                   if (strchr(WHITESPACE, line[len]) == NULL)
                           break;
                   line[len] = '\0';
           }
   
         s = line;          s = line;
         /* Get the keyword. (Each line is supposed to begin with a keyword). */          /* Get the keyword. (Each line is supposed to begin with a keyword). */
         keyword = strdelim(&s);          keyword = strdelim(&s);
Line 295 
Line 306 
                 /* don't panic, but count bad options */                  /* don't panic, but count bad options */
                 return -1;                  return -1;
                 /* NOTREACHED */                  /* NOTREACHED */
           case oConnectTimeout:
                   intptr = &options->connection_timeout;
   parse_time:
                   arg = strdelim(&s);
                   if (!arg || *arg == '\0')
                           fatal("%s line %d: missing time value.",
                               filename, linenum);
                   if ((value = convtime(arg)) == -1)
                           fatal("%s line %d: invalid time value.",
                               filename, linenum);
                   if (*intptr == -1)
                           *intptr = value;
                   break;
   
         case oForwardAgent:          case oForwardAgent:
                 intptr = &options->forward_agent;                  intptr = &options->forward_agent;
 parse_flag:  parse_flag:
Line 316 
Line 341 
                 intptr = &options->forward_x11;                  intptr = &options->forward_x11;
                 goto parse_flag;                  goto parse_flag;
   
           case oForwardX11Trusted:
                   intptr = &options->forward_x11_trusted;
                   goto parse_flag;
   
         case oGatewayPorts:          case oGatewayPorts:
                 intptr = &options->gateway_ports;                  intptr = &options->gateway_ports;
                 goto parse_flag;                  goto parse_flag;
Line 324 
Line 353 
                 intptr = &options->use_privileged_port;                  intptr = &options->use_privileged_port;
                 goto parse_flag;                  goto parse_flag;
   
         case oRhostsAuthentication:  
                 intptr = &options->rhosts_authentication;  
                 goto parse_flag;  
   
         case oPasswordAuthentication:          case oPasswordAuthentication:
                 intptr = &options->password_authentication;                  intptr = &options->password_authentication;
                 goto parse_flag;                  goto parse_flag;
Line 359 
Line 384 
         case oChallengeResponseAuthentication:          case oChallengeResponseAuthentication:
                 intptr = &options->challenge_response_authentication;                  intptr = &options->challenge_response_authentication;
                 goto parse_flag;                  goto parse_flag;
 #if defined(KRB4) || defined(KRB5)  
         case oKerberosAuthentication:          case oGssAuthentication:
                 intptr = &options->kerberos_authentication;                  intptr = &options->gss_authentication;
                 goto parse_flag;                  goto parse_flag;
 #endif  
 #if defined(AFS) || defined(KRB5)          case oGssDelegateCreds:
         case oKerberosTgtPassing:                  intptr = &options->gss_deleg_creds;
                 intptr = &options->kerberos_tgt_passing;  
                 goto parse_flag;                  goto parse_flag;
 #endif  
 #ifdef AFS  
         case oAFSTokenPassing:  
                 intptr = &options->afs_token_passing;  
                 goto parse_flag;  
 #endif  
         case oBatchMode:          case oBatchMode:
                 intptr = &options->batch_mode;                  intptr = &options->batch_mode;
                 goto parse_flag;                  goto parse_flag;
Line 382 
Line 401 
                 intptr = &options->check_host_ip;                  intptr = &options->check_host_ip;
                 goto parse_flag;                  goto parse_flag;
   
           case oVerifyHostKeyDNS:
                   intptr = &options->verify_host_key_dns;
                   goto parse_yesnoask;
   
         case oStrictHostKeyChecking:          case oStrictHostKeyChecking:
                 intptr = &options->strict_host_key_checking;                  intptr = &options->strict_host_key_checking;
   parse_yesnoask:
                 arg = strdelim(&s);                  arg = strdelim(&s);
                 if (!arg || *arg == '\0')                  if (!arg || *arg == '\0')
                         fatal("%.200s line %d: Missing yes/no/ask argument.",                          fatal("%.200s line %d: Missing yes/no/ask argument.",
Line 405 
Line 429 
                 intptr = &options->compression;                  intptr = &options->compression;
                 goto parse_flag;                  goto parse_flag;
   
         case oKeepAlives:          case oTCPKeepAlive:
                 intptr = &options->keepalives;                  intptr = &options->tcp_keep_alive;
                 goto parse_flag;                  goto parse_flag;
   
         case oNoHostAuthenticationForLocalhost:          case oNoHostAuthenticationForLocalhost:
Line 421 
Line 445 
                 intptr = &options->compression_level;                  intptr = &options->compression_level;
                 goto parse_int;                  goto parse_int;
   
           case oRekeyLimit:
                   intptr = &options->rekey_limit;
                   arg = strdelim(&s);
                   if (!arg || *arg == '\0')
                           fatal("%.200s line %d: Missing argument.", filename, linenum);
                   if (arg[0] < '0' || arg[0] > '9')
                           fatal("%.200s line %d: Bad number.", filename, linenum);
                   value = strtol(arg, &endofnumber, 10);
                   if (arg == endofnumber)
                           fatal("%.200s line %d: Bad number.", filename, linenum);
                   switch (toupper(*endofnumber)) {
                   case 'K':
                           value *= 1<<10;
                           break;
                   case 'M':
                           value *= 1<<20;
                           break;
                   case 'G':
                           value *= 1<<30;
                           break;
                   }
                   if (*activep && *intptr == -1)
                           *intptr = value;
                   break;
   
         case oIdentityFile:          case oIdentityFile:
                 arg = strdelim(&s);                  arg = strdelim(&s);
                 if (!arg || *arg == '\0')                  if (!arg || *arg == '\0')
Line 487 
Line 536 
                 goto parse_string;                  goto parse_string;
   
         case oProxyCommand:          case oProxyCommand:
                   if (s == NULL)
                           fatal("%.200s line %d: Missing argument.", filename, linenum);
                 charptr = &options->proxy_command;                  charptr = &options->proxy_command;
                 len = strspn(s, WHITESPACE "=");                  len = strspn(s, WHITESPACE "=");
                 if (*activep && *charptr == NULL)                  if (*activep && *charptr == NULL)
Line 624 
Line 675 
                         fatal("%.200s line %d: Badly formatted port number.",                          fatal("%.200s line %d: Badly formatted port number.",
                             filename, linenum);                              filename, linenum);
                 if (*activep)                  if (*activep)
                         add_local_forward(options, fwd_port, "socks4", 0);                          add_local_forward(options, fwd_port, "socks", 0);
                 break;                  break;
   
         case oClearAllForwardings:          case oClearAllForwardings:
Line 664 
Line 715 
                         *intptr = value;                          *intptr = value;
                 break;                  break;
   
           case oAddressFamily:
                   arg = strdelim(&s);
                   intptr = &options->address_family;
                   if (strcasecmp(arg, "inet") == 0)
                           value = AF_INET;
                   else if (strcasecmp(arg, "inet6") == 0)
                           value = AF_INET6;
                   else if (strcasecmp(arg, "any") == 0)
                           value = AF_UNSPEC;
                   else
                           fatal("Unsupported AddressFamily \"%s\"", arg);
                   if (*activep && *intptr == -1)
                           *intptr = value;
                   break;
   
         case oEnableSSHKeysign:          case oEnableSSHKeysign:
                 intptr = &options->enable_ssh_keysign;                  intptr = &options->enable_ssh_keysign;
                 goto parse_flag;                  goto parse_flag;
   
           case oServerAliveInterval:
                   intptr = &options->server_alive_interval;
                   goto parse_time;
   
           case oServerAliveCountMax:
                   intptr = &options->server_alive_count_max;
                   goto parse_int;
   
         case oDeprecated:          case oDeprecated:
                 debug("%s line %d: Deprecated option \"%s\"",                  debug("%s line %d: Deprecated option \"%s\"",
                     filename, linenum, keyword);                      filename, linenum, keyword);
                 return 0;                  return 0;
   
           case oUnsupported:
                   error("%s line %d: Unsupported option \"%s\"",
                       filename, linenum, keyword);
                   return 0;
   
         default:          default:
                 fatal("process_config_line: Unimplemented opcode %d", opcode);                  fatal("process_config_line: Unimplemented opcode %d", opcode);
         }          }
Line 739 
Line 818 
         memset(options, 'X', sizeof(*options));          memset(options, 'X', sizeof(*options));
         options->forward_agent = -1;          options->forward_agent = -1;
         options->forward_x11 = -1;          options->forward_x11 = -1;
           options->forward_x11_trusted = -1;
         options->xauth_location = NULL;          options->xauth_location = NULL;
         options->gateway_ports = -1;          options->gateway_ports = -1;
         options->use_privileged_port = -1;          options->use_privileged_port = -1;
         options->rhosts_authentication = -1;  
         options->rsa_authentication = -1;          options->rsa_authentication = -1;
         options->pubkey_authentication = -1;          options->pubkey_authentication = -1;
         options->challenge_response_authentication = -1;          options->challenge_response_authentication = -1;
 #if defined(KRB4) || defined(KRB5)          options->gss_authentication = -1;
         options->kerberos_authentication = -1;          options->gss_deleg_creds = -1;
 #endif  
 #if defined(AFS) || defined(KRB5)  
         options->kerberos_tgt_passing = -1;  
 #endif  
 #ifdef AFS  
         options->afs_token_passing = -1;  
 #endif  
         options->password_authentication = -1;          options->password_authentication = -1;
         options->kbd_interactive_authentication = -1;          options->kbd_interactive_authentication = -1;
         options->kbd_interactive_devices = NULL;          options->kbd_interactive_devices = NULL;
Line 764 
Line 836 
         options->check_host_ip = -1;          options->check_host_ip = -1;
         options->strict_host_key_checking = -1;          options->strict_host_key_checking = -1;
         options->compression = -1;          options->compression = -1;
         options->keepalives = -1;          options->tcp_keep_alive = -1;
         options->compression_level = -1;          options->compression_level = -1;
         options->port = -1;          options->port = -1;
           options->address_family = -1;
         options->connection_attempts = -1;          options->connection_attempts = -1;
           options->connection_timeout = -1;
         options->number_of_password_prompts = -1;          options->number_of_password_prompts = -1;
         options->cipher = -1;          options->cipher = -1;
         options->ciphers = NULL;          options->ciphers = NULL;
Line 793 
Line 867 
         options->smartcard_device = NULL;          options->smartcard_device = NULL;
         options->enable_ssh_keysign = - 1;          options->enable_ssh_keysign = - 1;
         options->no_host_authentication_for_localhost = - 1;          options->no_host_authentication_for_localhost = - 1;
           options->rekey_limit = - 1;
           options->verify_host_key_dns = -1;
           options->server_alive_interval = -1;
           options->server_alive_count_max = -1;
 }  }
   
 /*  /*
Line 809 
Line 887 
                 options->forward_agent = 0;                  options->forward_agent = 0;
         if (options->forward_x11 == -1)          if (options->forward_x11 == -1)
                 options->forward_x11 = 0;                  options->forward_x11 = 0;
           if (options->forward_x11_trusted == -1)
                   options->forward_x11_trusted = 0;
         if (options->xauth_location == NULL)          if (options->xauth_location == NULL)
                 options->xauth_location = _PATH_XAUTH;                  options->xauth_location = _PATH_XAUTH;
         if (options->gateway_ports == -1)          if (options->gateway_ports == -1)
                 options->gateway_ports = 0;                  options->gateway_ports = 0;
         if (options->use_privileged_port == -1)          if (options->use_privileged_port == -1)
                 options->use_privileged_port = 0;                  options->use_privileged_port = 0;
         if (options->rhosts_authentication == -1)  
                 options->rhosts_authentication = 0;  
         if (options->rsa_authentication == -1)          if (options->rsa_authentication == -1)
                 options->rsa_authentication = 1;                  options->rsa_authentication = 1;
         if (options->pubkey_authentication == -1)          if (options->pubkey_authentication == -1)
                 options->pubkey_authentication = 1;                  options->pubkey_authentication = 1;
         if (options->challenge_response_authentication == -1)          if (options->challenge_response_authentication == -1)
                 options->challenge_response_authentication = 1;                  options->challenge_response_authentication = 1;
 #if defined(KRB4) || defined(KRB5)          if (options->gss_authentication == -1)
         if (options->kerberos_authentication == -1)                  options->gss_authentication = 0;
                 options->kerberos_authentication = 1;          if (options->gss_deleg_creds == -1)
 #endif                  options->gss_deleg_creds = 0;
 #if defined(AFS) || defined(KRB5)  
         if (options->kerberos_tgt_passing == -1)  
                 options->kerberos_tgt_passing = 1;  
 #endif  
 #ifdef AFS  
         if (options->afs_token_passing == -1)  
                 options->afs_token_passing = 1;  
 #endif  
         if (options->password_authentication == -1)          if (options->password_authentication == -1)
                 options->password_authentication = 1;                  options->password_authentication = 1;
         if (options->kbd_interactive_authentication == -1)          if (options->kbd_interactive_authentication == -1)
Line 851 
Line 921 
                 options->strict_host_key_checking = 2;  /* 2 is default */                  options->strict_host_key_checking = 2;  /* 2 is default */
         if (options->compression == -1)          if (options->compression == -1)
                 options->compression = 0;                  options->compression = 0;
         if (options->keepalives == -1)          if (options->tcp_keep_alive == -1)
                 options->keepalives = 1;                  options->tcp_keep_alive = 1;
         if (options->compression_level == -1)          if (options->compression_level == -1)
                 options->compression_level = 6;                  options->compression_level = 6;
         if (options->port == -1)          if (options->port == -1)
                 options->port = 0;      /* Filled in ssh_connect. */                  options->port = 0;      /* Filled in ssh_connect. */
           if (options->address_family == -1)
                   options->address_family = AF_UNSPEC;
         if (options->connection_attempts == -1)          if (options->connection_attempts == -1)
                 options->connection_attempts = 1;                  options->connection_attempts = 1;
         if (options->number_of_password_prompts == -1)          if (options->number_of_password_prompts == -1)
Line 909 
Line 981 
                 options->no_host_authentication_for_localhost = 0;                  options->no_host_authentication_for_localhost = 0;
         if (options->enable_ssh_keysign == -1)          if (options->enable_ssh_keysign == -1)
                 options->enable_ssh_keysign = 0;                  options->enable_ssh_keysign = 0;
           if (options->rekey_limit == -1)
                   options->rekey_limit = 0;
           if (options->verify_host_key_dns == -1)
                   options->verify_host_key_dns = 0;
           if (options->server_alive_interval == -1)
                   options->server_alive_interval = 0;
           if (options->server_alive_count_max == -1)
                   options->server_alive_count_max = 3;
         /* options->proxy_command should not be set by default */          /* options->proxy_command should not be set by default */
         /* options->user will be set in the main program if appropriate */          /* options->user will be set in the main program if appropriate */
         /* options->hostname will be set in the main program if appropriate */          /* options->hostname will be set in the main program if appropriate */

Legend:
Removed from v.1.102  
changed lines
  Added in v.1.102.2.2