summaryrefslogtreecommitdiffstats
path: root/pw/pw_group.c
diff options
context:
space:
mode:
authorIan Dowse <iedowse@FreeBSD.org>2004-01-11 18:28:08 +0000
committerIan Dowse <iedowse@FreeBSD.org>2004-01-11 18:28:08 +0000
commitf015270b002b6686a3eaeb3af8327e64fea8230d (patch)
tree48275e17b207b988f32f1ef4aac17025d1edb5a4 /pw/pw_group.c
parent0a6734e331d26f587416a8cfb2d1296845b67864 (diff)
downloadpw-darwin-f015270b002b6686a3eaeb3af8327e64fea8230d.tar.gz
pw-darwin-f015270b002b6686a3eaeb3af8327e64fea8230d.zip
Add a `-H <fd>' option that is like `-h <fd>', but accepts an already
encrypted password on the specified file descriptor. PR: bin/22033 MFC after: 2 weeks
Diffstat (limited to 'pw/pw_group.c')
-rw-r--r--pw/pw_group.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/pw/pw_group.c b/pw/pw_group.c
index c9af998..1c63a11 100644
--- a/pw/pw_group.c
+++ b/pw/pw_group.c
@@ -158,11 +158,13 @@ pw_group(struct userconf * cnf, int mode, struct cargs * args)
* software.
*/
- if ((arg = getarg(args, 'h')) != NULL) {
+ if ((arg = getarg(args, 'h')) != NULL ||
+ (arg = getarg(args, 'H')) != NULL) {
if (strcmp(arg->val, "-") == 0)
grp->gr_passwd = "*"; /* No access */
else {
int fd = atoi(arg->val);
+ int precrypt = (arg->ch == 'H');
int b;
int istty = isatty(fd);
struct termios t;
@@ -196,7 +198,12 @@ pw_group(struct userconf * cnf, int mode, struct cargs * args)
*p = '\0';
if (!*line)
errx(EX_DATAERR, "empty password read on file descriptor %d", fd);
- grp->gr_passwd = pw_pwcrypt(line);
+ if (precrypt) {
+ if (strchr(line, ':') != NULL)
+ return EX_DATAERR;
+ grp->gr_passwd = line;
+ } else
+ grp->gr_passwd = pw_pwcrypt(line);
}
}