summaryrefslogtreecommitdiff
path: root/hostfile.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>1999-11-25 11:54:57 +1100
committerDamien Miller <djm@mindrot.org>1999-11-25 11:54:57 +1100
commit5428f646ad32da88ddd04a8c287d595524674fbf (patch)
treecc1f1e5d7852e1f44d41077f776abf7dab7ac06d /hostfile.c
parent9072e1889648988da38b7b81bce95291c1dc3a23 (diff)
- More reformatting merged from OpenBSD CVS
- Merged OpenBSD CVS changes: - [channels.c] report from mrwizard@psu.edu via djm@ibs.com.au - [channels.c] set SO_REUSEADDR and SO_LINGER for forwarded ports. chip@valinux.com via damien@ibs.com.au - [nchan.c] it's not an error() if shutdown_write failes in nchan. - [readconf.c] remove dead #ifdef-0-code - [readconf.c servconf.c] strcasecmp instead of tolower - [scp.c] progress meter overflow fix from damien@ibs.com.au - [ssh-add.1 ssh-add.c] SSH_ASKPASS support - [ssh.1 ssh.c] postpone fork_after_authentication until command execution, request/patch from jahakala@cc.jyu.fi via damien@ibs.com.au plus: use daemon() for backgrounding
Diffstat (limited to 'hostfile.c')
-rw-r--r--hostfile.c119
1 files changed, 70 insertions, 49 deletions
diff --git a/hostfile.c b/hostfile.c
index 61046f07..cdfb48f3 100644
--- a/hostfile.c
+++ b/hostfile.c
@@ -14,16 +14,18 @@
*/
#include "includes.h"
-RCSID("$Id: hostfile.c,v 1.5 1999/11/24 13:26:22 damien Exp $");
+RCSID("$Id: hostfile.c,v 1.6 1999/11/25 00:54:59 damien Exp $");
#include "packet.h"
#include "ssh.h"
-/* Reads a multiple-precision integer in hex from the buffer, and advances the
- pointer. The integer must already be initialized. This function is
- permitted to modify the buffer. This leaves *cpp to point just beyond
- the last processed (and maybe modified) character. Note that this may
- modify the buffer containing the number. */
+/*
+ * Reads a multiple-precision integer in hex from the buffer, and advances
+ * the pointer. The integer must already be initialized. This function is
+ * permitted to modify the buffer. This leaves *cpp to point just beyond the
+ * last processed (and maybe modified) character. Note that this may modify
+ * the buffer containing the number.
+ */
int
auth_rsa_read_bignum(char **cpp, BIGNUM * value)
@@ -32,7 +34,8 @@ auth_rsa_read_bignum(char **cpp, BIGNUM * value)
int len, old;
/* Skip any leading whitespace. */
- for (; *cp == ' ' || *cp == '\t'; cp++);
+ for (; *cp == ' ' || *cp == '\t'; cp++)
+ ;
/* Check that it begins with a hex digit. */
if (*cp < '0' || *cp > '9')
@@ -42,7 +45,8 @@ auth_rsa_read_bignum(char **cpp, BIGNUM * value)
*cpp = cp;
/* Move forward until all hex digits skipped. */
- for (; *cp >= '0' && *cp <= '9'; cp++);
+ for (; *cp >= '0' && *cp <= '9'; cp++)
+ ;
/* Compute the length of the hex number. */
len = cp - *cpp;
@@ -51,7 +55,6 @@ auth_rsa_read_bignum(char **cpp, BIGNUM * value)
old = *cp;
*cp = 0;
-
/* Parse the number. */
if (BN_dec2bn(&value, *cpp) == 0)
return 0;
@@ -64,8 +67,10 @@ auth_rsa_read_bignum(char **cpp, BIGNUM * value)
return 1;
}
-/* Parses an RSA key (number of bits, e, n) from a string. Moves the pointer
- over the key. Skips any whitespace at the beginning and at end. */
+/*
+ * Parses an RSA key (number of bits, e, n) from a string. Moves the pointer
+ * over the key. Skips any whitespace at the beginning and at end.
+ */
int
auth_rsa_read_key(char **cpp, unsigned int *bitsp, BIGNUM * e, BIGNUM * n)
@@ -74,7 +79,8 @@ auth_rsa_read_key(char **cpp, unsigned int *bitsp, BIGNUM * e, BIGNUM * n)
char *cp;
/* Skip leading whitespace. */
- for (cp = *cpp; *cp == ' ' || *cp == '\t'; cp++);
+ for (cp = *cpp; *cp == ' ' || *cp == '\t'; cp++)
+ ;
/* Get number of bits. */
if (*cp < '0' || *cp > '9')
@@ -91,7 +97,8 @@ auth_rsa_read_key(char **cpp, unsigned int *bitsp, BIGNUM * e, BIGNUM * n)
return 0;
/* Skip trailing whitespace. */
- for (; *cp == ' ' || *cp == '\t'; cp++);
+ for (; *cp == ' ' || *cp == '\t'; cp++)
+ ;
/* Return results. */
*cpp = cp;
@@ -99,10 +106,12 @@ auth_rsa_read_key(char **cpp, unsigned int *bitsp, BIGNUM * e, BIGNUM * n)
return 1;
}
-/* Tries to match the host name (which must be in all lowercase) against the
- comma-separated sequence of subpatterns (each possibly preceded by ! to
- indicate negation). Returns true if there is a positive match; zero
- otherwise. */
+/*
+ * Tries to match the host name (which must be in all lowercase) against the
+ * comma-separated sequence of subpatterns (each possibly preceded by ! to
+ * indicate negation). Returns true if there is a positive match; zero
+ * otherwise.
+ */
int
match_hostname(const char *host, const char *pattern, unsigned int len)
@@ -121,18 +130,19 @@ match_hostname(const char *host, const char *pattern, unsigned int len)
} else
negated = 0;
- /* Extract the subpattern up to a comma or end. Convert
- the subpattern to lowercase. */
+ /*
+ * Extract the subpattern up to a comma or end. Convert the
+ * subpattern to lowercase.
+ */
for (subi = 0;
- i < len && subi < sizeof(sub) - 1 && pattern[i] != ',';
+ i < len && subi < sizeof(sub) - 1 && pattern[i] != ',';
subi++, i++)
sub[subi] = isupper(pattern[i]) ? tolower(pattern[i]) : pattern[i];
/* If subpattern too long, return failure (no match). */
if (subi >= sizeof(sub) - 1)
return 0;
- /* If the subpattern was terminated by a comma, skip the
- comma. */
+ /* If the subpattern was terminated by a comma, skip the comma. */
if (i < len && pattern[i] == ',')
i++;
@@ -142,24 +152,25 @@ match_hostname(const char *host, const char *pattern, unsigned int len)
/* Try to match the subpattern against the host name. */
if (match_pattern(host, sub)) {
if (negated)
- return 0; /* Fail if host matches
- any negated subpattern. */
+ return 0; /* Fail */
else
got_positive = 1;
}
}
- /* Return success if got a positive match. If there was a
- negative match, we have already returned zero and never get
- here. */
+ /*
+ * Return success if got a positive match. If there was a negative
+ * match, we have already returned zero and never get here.
+ */
return got_positive;
}
-/* Checks whether the given host (which must be in all lowercase) is
- already 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 if the host is known
- but used to have a different host key. */
+/*
+ * Checks whether the given host (which must be in all lowercase) is already
+ * 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
+ * if the host is known but used to have a different host key.
+ */
HostStatus
check_host_in_hostfile(const char *filename, const char *host,
@@ -180,9 +191,11 @@ check_host_in_hostfile(const char *filename, const char *host,
/* Cache the length of the host name. */
hostlen = strlen(host);
- /* Return value when the loop terminates. This is set to
- HOST_CHANGED if we have seen a different key for the host and
- have not found the proper one. */
+ /*
+ * Return value when the loop terminates. This is set to
+ * HOST_CHANGED if we have seen a different key for the host and have
+ * not found the proper one.
+ */
end_return = HOST_NEW;
/* size of modulus 'n' */
@@ -193,15 +206,15 @@ check_host_in_hostfile(const char *filename, const char *host,
cp = line;
linenum++;
- /* Skip any leading whitespace. */
- for (; *cp == ' ' || *cp == '\t'; cp++);
-
- /* Ignore comment lines and empty lines. */
+ /* Skip any leading whitespace, comments and empty lines. */
+ for (; *cp == ' ' || *cp == '\t'; cp++)
+ ;
if (!*cp || *cp == '#' || *cp == '\n')
continue;
/* Find the end of the host name portion. */
- for (cp2 = cp; *cp2 && *cp2 != ' ' && *cp2 != '\t'; cp2++);
+ for (cp2 = cp; *cp2 && *cp2 != ' ' && *cp2 != '\t'; cp2++)
+ ;
/* Check if the host name matches. */
if (!match_hostname(host, cp, (unsigned int) (cp2 - cp)))
@@ -210,8 +223,10 @@ check_host_in_hostfile(const char *filename, const char *host,
/* Got a match. Skip host name. */
cp = cp2;
- /* Extract the key from the line. This will skip any
- leading whitespace. Ignore badly formatted lines. */
+ /*
+ * Extract the key from the line. This will skip any leading
+ * whitespace. Ignore badly formatted lines.
+ */
if (!auth_rsa_read_key(&cp, &kbits, ke, kn))
continue;
@@ -228,21 +243,27 @@ check_host_in_hostfile(const char *filename, const char *host,
fclose(f);
return HOST_OK;
}
- /* They do not match. We will continue to go through the
- file; however, we note that we will not return that it
- is new. */
+ /*
+ * They do not match. We will continue to go through the
+ * file; however, we note that we will not return that it is
+ * new.
+ */
end_return = HOST_CHANGED;
}
/* Clear variables and close the file. */
fclose(f);
- /* Return either HOST_NEW or HOST_CHANGED, depending on whether we
- saw a different key for the host. */
+ /*
+ * Return either HOST_NEW or HOST_CHANGED, depending on whether we
+ * saw a different key for the host.
+ */
return end_return;
}
-/* Appends an entry to the host file. Returns false if the entry
- could not be appended. */
+/*
+ * Appends an entry to the host file. Returns false if the entry could not
+ * be appended.
+ */
int
add_host_to_hostfile(const char *filename, const char *host,