+/* $OpenBSD: ssh-keygen.c,v 1.154 2006/08/03 03:34:42 deraadt Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
#include "includes.h"
#include <sys/types.h>
+#include <sys/socket.h>
#include <sys/stat.h>
+#include <sys/param.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <netdb.h>
+#ifdef HAVE_PATHS_H
+# include <paths.h>
+#endif
+#include <pwd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
#include "xmalloc.h"
#include "key.h"
#include "rsa.h"
#include "authfile.h"
#include "uuencode.h"
#include "buffer.h"
-#include "bufaux.h"
#include "pathnames.h"
#include "log.h"
#include "misc.h"
#include "match.h"
#include "hostfile.h"
+#include "dns.h"
#ifdef SMARTCARD
#include "scard.h"
#endif
-#include "dns.h"
/* Number of bits in the RSA/DSA key. This value can be set on the command line. */
#define DEFAULT_BITS 2048
if (key_type_name == NULL)
name = _PATH_SSH_CLIENT_ID_RSA;
- else
+ else {
switch (key_type_from_name(key_type_name)) {
case KEY_RSA1:
name = _PATH_SSH_CLIENT_IDENTITY;
exit(1);
break;
}
-
+ }
snprintf(identity_file, sizeof(identity_file), "%s/%s", pw->pw_dir, name);
fprintf(stderr, "%s (%s): ", prompt, identity_file);
if (fgets(buf, sizeof(buf), stdin) == NULL)
fprintf(stderr, "input line too long.\n");
exit(1);
}
- switch(c) {
+ switch (c) {
case '\r':
c = fgetc(fp);
if (c != EOF && c != '\n' && ungetc(c, fp) == EOF) {
line[pos++] = c;
line[pos] = '\0';
}
+ if (c == EOF)
+ return -1;
return pos;
}
xfree(fp);
exit(0);
}
- if (comment)
+ if (comment) {
xfree(comment);
+ comment = NULL;
+ }
f = fopen(identity_file, "r");
if (f != NULL) {
"degiqpclBHvxXyF:b:f:t:U:D:P:N:C:r:g:R:T:G:M:S:a:W:")) != -1) {
switch (opt) {
case 'b':
- bits = strtonum(optarg, 768, 32768, &errstr);
+ bits = (u_int32_t)strtonum(optarg, 768, 32768, &errstr);
if (errstr)
fatal("Bits has bad value %s (%s)",
optarg, errstr);
break;
case 'D':
download = 1;
+ /*FALLTHROUGH*/
case 'U':
reader_id = optarg;
break;
rr_hostname = optarg;
break;
case 'W':
- generator_wanted = strtonum(optarg, 1, UINT_MAX, &errstr);
+ generator_wanted = (u_int32_t)strtonum(optarg, 1,
+ UINT_MAX, &errstr);
if (errstr)
fatal("Desired generator has bad value: %s (%s)",
optarg, errstr);
break;
case 'a':
- trials = strtonum(optarg, 1, UINT_MAX, &errstr);
+ trials = (u_int32_t)strtonum(optarg, 1, UINT_MAX, &errstr);
if (errstr)
fatal("Invalid number of trials: %s (%s)",
optarg, errstr);
break;
case 'M':
- memory = strtonum(optarg, 1, UINT_MAX, &errstr);
+ memory = (u_int32_t)strtonum(optarg, 1, UINT_MAX, &errstr);
if (errstr) {
fatal("Memory limit is %s: %s", errstr, optarg);
}