- deraadt@cvs.openbsd.org 2002/07/06 01:01:26
     [ssh-keyscan.c]
     KNF, realloc fix, and clean usage
diff --git a/ssh-keyscan.c b/ssh-keyscan.c
index cd8b634..7210aa3 100644
--- a/ssh-keyscan.c
+++ b/ssh-keyscan.c
@@ -7,7 +7,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: ssh-keyscan.c,v 1.38 2002/06/27 19:49:08 stevesk Exp $");
+RCSID("$OpenBSD: ssh-keyscan.c,v 1.39 2002/07/06 01:01:26 deraadt Exp $");
 
 #include "openbsd-compat/fake-queue.h"
 
@@ -171,14 +171,16 @@
 static char *
 Linebuf_getline(Linebuf * lb)
 {
+	u_int size;
 	int n = 0;
+	void *p;
 
 	lb->lineno++;
 	for (;;) {
 		/* Read a line */
 		if (!fgets(&lb->buf[n], lb->size - n, lb->stream)) {
 			if (ferror(lb->stream) && lb->errfun)
-				(*lb->errfun) ("%s: %s\n", lb->filename,
+				(*lb->errfun)("%s: %s\n", lb->filename,
 				    strerror(errno));
 			return (NULL);
 		}
@@ -191,17 +193,20 @@
 		}
 		if (n != lb->size - 1) {
 			if (lb->errfun)
-				(*lb->errfun) ("%s: skipping incomplete last line\n",
+				(*lb->errfun)("%s: skipping incomplete last line\n",
 				    lb->filename);
 			return (NULL);
 		}
 		/* Double the buffer if we need more space */
-		if (!(lb->buf = realloc(lb->buf, (lb->size *= 2)))) {
+		lb->size *= 2;
+		if ((p = realloc(lb->buf, lb->size)) == NULL) {
+			lb->size /= 2;
 			if (lb->errfun)
-				(*lb->errfun) ("linebuf (%s): realloc failed\n",
+				(*lb->errfun)("linebuf (%s): realloc failed\n",
 				    lb->filename);
 			return (NULL);
 		}
+		lb->buf = p;
 	}
 }
 
@@ -412,8 +417,8 @@
 static int
 conalloc(char *iname, char *oname, int keytype)
 {
-	int s;
 	char *namebase, *name, *namelist;
+	int s;
 
 	namebase = namelist = xstrdup(iname);
 
@@ -477,8 +482,8 @@
 static int
 conrecycle(int s)
 {
-	int ret;
 	con *c = &fdcon[s];
+	int ret;
 
 	ret = conalloc(c->c_namelist, c->c_output_name, c->c_keytype);
 	confree(s);
@@ -488,10 +493,10 @@
 static void
 congreet(int s)
 {
+	int remote_major, remote_minor, n = 0;
 	char buf[256], *cp;
 	char remote_version[sizeof buf];
 	size_t bufsiz;
-	int remote_major, remote_minor, n = 0;
 	con *c = &fdcon[s];
 
 	bufsiz = sizeof(buf);
@@ -555,8 +560,8 @@
 static void
 conread(int s)
 {
-	int n;
 	con *c = &fdcon[s];
+	int n;
 
 	if (c->c_status == CS_CON) {
 		congreet(s);
@@ -595,10 +600,10 @@
 static void
 conloop(void)
 {
-	fd_set *r, *e;
 	struct timeval seltime, now;
-	int i;
+	fd_set *r, *e;
 	con *c;
+	int i;
 
 	gettimeofday(&now, NULL);
 	c = TAILQ_FIRST(&tq);
@@ -665,6 +670,7 @@
 fatal(const char *fmt,...)
 {
 	va_list args;
+
 	va_start(args, fmt);
 	do_log(SYSLOG_LEVEL_FATAL, fmt, args);
 	va_end(args);
@@ -677,16 +683,9 @@
 static void
 usage(void)
 {
-	fprintf(stderr, "Usage: %s [options] host ...\n",
+	fprintf(stderr, "usage: %s [-v46] [-p port] [-T timeout] [-f file]\n"
+	    "\t\t   [host | addrlist namelist] [...]\n",
 	    __progname);
-	fprintf(stderr, "Options:\n");
-	fprintf(stderr, "  -f file     Read hosts or addresses from file.\n");
-	fprintf(stderr, "  -p port     Connect to the specified port.\n");
-	fprintf(stderr, "  -t keytype  Specify the host key type.\n");
-	fprintf(stderr, "  -T timeout  Set connection timeout.\n");
-	fprintf(stderr, "  -v          Verbose; display verbose debugging messages.\n");
-	fprintf(stderr, "  -4          Use IPv4 only.\n");
-	fprintf(stderr, "  -6          Use IPv6 only.\n");
 	exit(1);
 }