Handle the case where tor-gencert gets a passphrase with no NL

Closes ticket 17443.
This commit is contained in:
Nick Mathewson
2016-02-11 13:21:47 -05:00
parent 5a164d50bb
commit a874d66ea9
2 changed files with 13 additions and 1 deletions
+5
View File
@@ -0,0 +1,5 @@
o Minor bugfixes (tor-gencert):
- Correctly handle the case where an authority operator enters a
passphrase but sends an EOF before sending a newline.
Fixes bug 17443; bugfix on 0.2.0.20-rc. Found by "junglefowl".
+8 -1
View File
@@ -96,14 +96,21 @@ load_passphrase(void)
{
char *cp;
char buf[1024]; /* "Ought to be enough for anybody." */
memset(buf, 0, sizeof(buf)); /* should be needless */
ssize_t n = read_all(passphrase_fd, buf, sizeof(buf), 0);
if (n < 0) {
log_err(LD_GENERAL, "Couldn't read from passphrase fd: %s",
strerror(errno));
return -1;
}
/* We'll take everything from the buffer except for optional terminating
* newline. */
cp = memchr(buf, '\n', n);
passphrase_len = cp-buf;
if (cp == NULL) {
passphrase_len = n;
} else {
passphrase_len = cp-buf;
}
passphrase = tor_strndup(buf, passphrase_len);
memwipe(buf, 0, sizeof(buf));
return 0;