summaryrefslogtreecommitdiffstats
path: root/usr.bin
diff options
context:
space:
mode:
authorcharnier <charnier@FreeBSD.org>2002-08-27 19:06:44 +0000
committercharnier <charnier@FreeBSD.org>2002-08-27 19:06:44 +0000
commit47d7dbef221bdeb70f96b5923591847e6b7e1434 (patch)
tree4829fe000d46d674d1a866c8e2643d30baafa714 /usr.bin
parent8515b5df478657a8378e1cc3ed5c174b8710b385 (diff)
downloadFreeBSD-src-47d7dbef221bdeb70f96b5923591847e6b7e1434.zip
FreeBSD-src-47d7dbef221bdeb70f96b5923591847e6b7e1434.tar.gz
Use strchr() instead of index(). Use getopt(). Use err().
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/chkey/chkey.c109
1 files changed, 41 insertions, 68 deletions
diff --git a/usr.bin/chkey/chkey.c b/usr.bin/chkey/chkey.c
index c65fb05..db0b743 100644
--- a/usr.bin/chkey/chkey.c
+++ b/usr.bin/chkey/chkey.c
@@ -8,7 +8,7 @@
* Sun Microsystems, Inc.
*
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
*
* Sun RPC is provided with no support and without any obligation on the
@@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$");
#define YPOP_STORE 4
#endif
#include <sys/fcntl.h>
+#include <err.h>
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
@@ -61,7 +62,6 @@ __FBSDID("$FreeBSD$");
#include "extern.h"
-#define index strchr
#ifdef YPPASSWD
struct passwd *ypgetpwuid(uid_t);
#endif
@@ -74,7 +74,7 @@ static char PKFILE[] = "/etc/publickey";
#endif /* YP */
static char ROOTKEY[] = "/etc/.rootkey";
-static void usage(char *);
+static void usage(void);
extern int yp_update(char *, char *, int, char *, size_t, char *, size_t);
int
@@ -90,49 +90,37 @@ main(int argc, char **argv)
struct passwd *pw;
uid_t uid;
int force = 0;
- char *self;
+ int ch;
#ifdef YP
char *master;
#endif
- self = argv[0];
- for (argc--, argv++; argc > 0 && **argv == '-'; argc--, argv++) {
- if (argv[0][2] != 0) {
- usage(self);
- }
- switch (argv[0][1]) {
+ while ((ch = getopt(argc, argv, "f")) != -1)
+ switch(ch) {
case 'f':
force = 1;
break;
default:
- usage(self);
+ usage();
}
- }
- if (argc != 0) {
- usage(self);
- }
+ argc -= optind;
+ argv += optind;
+
+ if (argc != 0)
+ usage();
#ifdef YP
(void)yp_get_default_domain(&domain);
- if (yp_master(domain, PKMAP, &master) != 0) {
- (void)fprintf(stderr,
- "can't find master of publickey database\n");
- exit(1);
- }
+ if (yp_master(domain, PKMAP, &master) != 0)
+ errx(1, "can't find master of publickey database");
#endif
uid = getuid() /*geteuid()*/;
if (uid == 0) {
- if (host2netname(name, NULL, NULL) == 0) {
- (void)fprintf(stderr,
- "chkey: cannot convert hostname to netname\n");
- exit(1);
- }
+ if (host2netname(name, NULL, NULL) == 0)
+ errx(1, "cannot convert hostname to netname");
} else {
- if (user2netname(name, uid, NULL) == 0) {
- (void)fprintf(stderr,
- "chkey: cannot convert username to netname\n");
- exit(1);
- }
+ if (user2netname(name, uid, NULL) == 0)
+ errx(1, "cannot convert username to netname");
}
(void)printf("Generating new key for %s.\n", name);
@@ -145,30 +133,24 @@ main(int argc, char **argv)
#endif
if (pw == NULL) {
#ifdef YPPASSWD
- (void)fprintf(stderr,
- "No NIS password entry found: can't change key.\n");
+ errx(1,
+ "no NIS password entry found: can't change key");
#else
- (void)fprintf(stderr,
- "No password entry found: can't change key.\n");
+ errx(1,
+ "no password entry found: can't change key");
#endif
- exit(1);
}
} else {
pw = getpwuid(0);
- if (pw == NULL) {
- (void)fprintf(stderr,
- "No password entry found: can't change key.\n");
- exit(1);
- }
+ if (pw == NULL)
+ errx(1, "no password entry found: can't change key");
}
}
pass = getpass("Password:");
#ifdef YPPASSWD
if (!force) {
- if (strcmp(crypt(pass, pw->pw_passwd), pw->pw_passwd) != 0) {
- (void)fprintf(stderr, "Invalid password.\n");
- exit(1);
- }
+ if (strcmp(crypt(pass, pw->pw_passwd), pw->pw_passwd) != 0)
+ errx(1, "invalid password");
}
#else
force = 1; /* Make this mandatory */
@@ -183,11 +165,9 @@ main(int argc, char **argv)
if (force) {
memcpy(crypt2, crypt1, HEXKEYBYTES + KEYCHECKSUMSIZE + 1);
xdecrypt(crypt2, getpass("Retype password:"));
- if (memcmp(crypt2, crypt2 + HEXKEYBYTES, KEYCHECKSUMSIZE) != 0 ||
- memcmp(crypt2, secret, HEXKEYBYTES) != 0) {
- (void)fprintf(stderr, "Password incorrect.\n");
- exit(1);
- }
+ if (memcmp(crypt2, crypt2 + HEXKEYBYTES, KEYCHECKSUMSIZE) != 0
+ || memcmp(crypt2, secret, HEXKEYBYTES) != 0)
+ errx(1, "password incorrect");
}
#ifdef YP
@@ -196,14 +176,11 @@ main(int argc, char **argv)
status = setpublicmap(name, public, crypt1);
if (status != 0) {
#ifdef YP
- (void)fprintf(stderr,
- "%s: unable to update NIS database (%u): %s\n",
- self, status, yperr_string(status));
+ errx(1, "unable to update NIS database (%u): %s",
+ status, yperr_string(status));
#else
- (void)fprintf(stderr,
- "%s: unable to update publickey database\n", self);
+ errx(1, "unable to update publickey database");
#endif
- exit(1);
}
if (uid == 0) {
@@ -218,31 +195,27 @@ main(int argc, char **argv)
fd = open(ROOTKEY, O_WRONLY|O_TRUNC|O_CREAT, 0);
if (fd < 0) {
- perror(ROOTKEY);
+ warn("%s", ROOTKEY);
} else {
char newline = '\n';
if (write(fd, secret, strlen(secret)) < 0 ||
- write(fd, &newline, sizeof(newline)) < 0) {
- (void)fprintf(stderr, "%s: ", ROOTKEY);
- perror("write");
- }
+ write(fd, &newline, sizeof(newline)) < 0)
+ warn("%s: write", ROOTKEY);
}
}
- if (key_setsecret(secret) < 0) {
- (void)printf("Unable to login with new secret key.\n");
- exit(1);
- }
+ if (key_setsecret(secret) < 0)
+ errx(1, "unable to login with new secret key");
(void)printf("Done.\n");
exit(0);
/* NOTREACHED */
}
static void
-usage(char *name)
+usage(void)
{
- (void)fprintf(stderr, "usage: %s [-f]\n", name);
+ (void)fprintf(stderr, "usage: chkey [-f]\n");
exit(1);
/* NOTREACHED */
}
@@ -281,12 +254,12 @@ ypgetpwuid(uid_t uid)
&val, &vallen) != 0) {
return (NULL);
}
- p = index(val, ':');
+ p = strchr(val, ':');
if (p == NULL) {
return (NULL);
}
pw.pw_passwd = p + 1;
- p = index(pw.pw_passwd, ':');
+ p = strchr(pw.pw_passwd, ':');
if (p == NULL) {
return (NULL);
}
OpenPOWER on IntegriCloud