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

Diff for /src/usr.bin/ssh/hostfile.c between version 1.29 and 1.30

version 1.29, 2001/12/18 10:04:21 version 1.30, 2002/07/24 16:11:18
Line 91 
Line 91 
  * in the list of our known hosts. Returns HOST_OK if the host is known and   * in the list of our known hosts. Returns HOST_OK if the host is known and
  * has the specified key, HOST_NEW if the host is not known, and HOST_CHANGED   * has the specified key, HOST_NEW if the host is not known, and HOST_CHANGED
  * if the host is known but used to have a different host key.   * if the host is known but used to have a different host key.
    *
    * If no 'key' has been specified and a key of type 'keytype' is known
    * for the specified host, then HOST_FOUND is returned.
  */   */
   
 HostStatus  static HostStatus
 check_host_in_hostfile(const char *filename, const char *host, Key *key,  check_host_in_hostfile_by_key_or_type(const char *filename,
     Key *found, int *numret)      const char *host, Key *key, int keytype, Key *found, int *numret)
 {  {
         FILE *f;          FILE *f;
         char line[8192];          char line[8192];
Line 105 
Line 108 
         HostStatus end_return;          HostStatus end_return;
   
         debug3("check_host_in_hostfile: filename %s", filename);          debug3("check_host_in_hostfile: filename %s", filename);
         if (key == NULL)  
                 fatal("no key to look up");  
         /* Open the file containing the list of known hosts. */          /* Open the file containing the list of known hosts. */
         f = fopen(filename, "r");          f = fopen(filename, "r");
         if (!f)          if (!f)
Line 147 
Line 149 
                  */                   */
                 if (!hostfile_read_key(&cp, &kbits, found))                  if (!hostfile_read_key(&cp, &kbits, found))
                         continue;                          continue;
                 if (!hostfile_check_key(kbits, found, host, filename, linenum))  
                         continue;  
   
                 if (numret != NULL)                  if (numret != NULL)
                         *numret = linenum;                          *numret = linenum;
   
                   if (key == NULL) {
                           /* we found a key of the requested type */
                           if (found->type == keytype)
                                   return HOST_FOUND;
                           continue;
                   }
   
                   if (!hostfile_check_key(kbits, found, host, filename, linenum))
                           continue;
   
                 /* Check if the current key is the same as the given key. */                  /* Check if the current key is the same as the given key. */
                 if (key_equal(key, found)) {                  if (key_equal(key, found)) {
                         /* Ok, they match. */                          /* Ok, they match. */
Line 175 
Line 185 
          * saw a different key for the host.           * saw a different key for the host.
          */           */
         return end_return;          return end_return;
   }
   
   HostStatus
   check_host_in_hostfile(const char *filename, const char *host, Key *key,
       Key *found, int *numret)
   {
           if (key == NULL)
                   fatal("no key to look up");
           return (check_host_in_hostfile_by_key_or_type(filename, host, key, 0,
               found, numret));
   }
   
   int
   lookup_key_in_hostfile_by_type(const char *filename, const char *host,
       int keytype, Key *found, int *numret)
   {
           return (check_host_in_hostfile_by_key_or_type(filename, host, NULL,
               keytype, found, numret) == HOST_FOUND);
 }  }
   
 /*  /*

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.30