summaryrefslogtreecommitdiff
path: root/sys/src/cmd/auth/lib/getexpiration.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2016-07-31 20:16:25 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2016-07-31 20:16:25 +0200
commit261e3190929acd3e8e00507894789a5575fb815f (patch)
tree8d877d68090967ed4231c457dabed6d64d8bc002 /sys/src/cmd/auth/lib/getexpiration.c
parenta75f4de5c9f1782b3a7e0a9648e24b360031a0d5 (diff)
auth: various cleanups, use common readcons() from libauthsrv, zero keys after use
Diffstat (limited to 'sys/src/cmd/auth/lib/getexpiration.c')
-rw-r--r--sys/src/cmd/auth/lib/getexpiration.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/sys/src/cmd/auth/lib/getexpiration.c b/sys/src/cmd/auth/lib/getexpiration.c
index ebbd1c24c..dc2f2a610 100644
--- a/sys/src/cmd/auth/lib/getexpiration.c
+++ b/sys/src/cmd/auth/lib/getexpiration.c
@@ -31,8 +31,7 @@ long
getexpiration(char *db, char *u)
{
char buf[Maxpath];
- char prompt[128];
- char cdate[32];
+ char *cdate;
Tm date;
ulong secs, now;
int n, fd;
@@ -57,20 +56,24 @@ getexpiration(char *db, char *u)
buf[5] = 0;
} else
strcpy(buf, "never");
- sprint(prompt, "Expiration date (YYYYMMDD or never)[return = %s]: ", buf);
- now = time(0);
- for(;;){
- readln(prompt, cdate, sizeof cdate, 0);
- if(*cdate == 0)
- return -1;
- if(strcmp(cdate, "never") == 0)
- return 0;
+ for(;;free(cdate)){
+ cdate = readcons("Expiration date (YYYYMMDD or never)", buf, 0);
+ if(cdate == nil || *cdate == 0){
+ secs = -1;
+ break;
+ }
+ if(strcmp(cdate, "never") == 0){
+ secs = 0;
+ break;
+ }
date = getdate(cdate);
secs = tm2sec(&date);
+ now = time(0);
if(secs > now && secs < now + 2*365*24*60*60)
break;
print("expiration time must fall between now and 2 years from now\n");
}
+ free(cdate);
return secs;
}