authsrv: handle short reads in initkeyseed()
This commit is contained in:
parent
6de804b578
commit
394af5a216
|
@ -1008,16 +1008,22 @@ initkeyseed(void)
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
genrandom(keyseed, sizeof(keyseed));
|
genrandom(keyseed, sizeof(keyseed));
|
||||||
if((fd = create("/adm/keyseed", OWRITE|OEXCL, 0600)) >= 0){
|
if((fd = open("/adm/keyseed", OREAD)) >= 0){
|
||||||
write(fd, keyseed, sizeof(keyseed));
|
werrstr("file truncated");
|
||||||
} else if((fd = open("/adm/keyseed", OREAD)) >= 0){
|
if(read(fd, keyseed, sizeof(keyseed)) == sizeof(keyseed)){
|
||||||
read(fd, keyseed, sizeof(keyseed));
|
close(fd);
|
||||||
} else{
|
|
||||||
syslog(0, AUTHLOG, "initkeyseed: no seed file: %r");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
|
syslog(0, AUTHLOG, "initkeyseed: no keyseed: %r");
|
||||||
|
if((fd = create("/adm/keyseed", OWRITE, 0600)) < 0){
|
||||||
|
syslog(0, AUTHLOG, "initkeyseed: can't create: %r");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
write(fd, keyseed, sizeof(keyseed));
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
mkkey(char *id, Authkey *a)
|
mkkey(char *id, Authkey *a)
|
||||||
|
|
Loading…
Reference in a new issue