fixed buffer overflow when calling pcp_scrypt(), used invalid passwd size

This commit is contained in:
git@daemon.de
2014-03-10 16:57:01 +01:00
parent 71faa88592
commit 5e82b7ec7b

View File

@@ -70,10 +70,10 @@ int pcpdecrypt(char *id, int useid, char *infile, char *outfile, char *passwd, i
}
else {
passphrase = ucmalloc(strlen(passwd)+1);
strncpy(passphrase, passwd, strlen(passwd)+1);
strncpy(passphrase, passwd, strlen(passwd));
}
symkey = pcp_scrypt(passphrase, crypto_secretbox_KEYBYTES, salt, 90);
symkey = pcp_scrypt(passphrase, strlen(passphrase), salt, 90);
free(salt);
}
else {
@@ -159,12 +159,12 @@ int pcpencrypt(char *id, char *infile, char *outfile, char *passwd, plist_t *rec
}
else {
passphrase = ucmalloc(strlen(passwd)+1);
strncpy(passphrase, passwd, strlen(passwd)+1);
strncpy(passphrase, passwd, strlen(passwd));
}
byte *salt = ucmalloc(90); /* FIXME: use random salt, concat it with result afterwards */
char stsalt[] = PBP_COMPAT_SALT;
memcpy(salt, stsalt, 90);
symkey = pcp_scrypt(passphrase, crypto_secretbox_KEYBYTES, salt, 90);
symkey = pcp_scrypt(passphrase, strlen(passphrase), salt, 90);
free(salt);
}
else if(id != NULL && recipient == NULL) {