- review fix for libnss, check hash prefix allocation size.

git-svn-id: file:///svn/unbound/trunk@2723 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
Wouter Wijngaards 2012-07-25 14:32:37 +00:00
parent 3c55073799
commit f82edc1b64
2 changed files with 10 additions and 1 deletions

View file

@ -1,3 +1,6 @@
25 July 2012: Wouter
- review fix for libnss, check hash prefix allocation size.
23 July 2012: Wouter 23 July 2012: Wouter
- fix missing break for GOST DS hash function. - fix missing break for GOST DS hash function.
- implemented forward_first for the root. - implemented forward_first for the root.

View file

@ -973,6 +973,7 @@ verify_canonrrset(ldns_buffer* buf, int algo, unsigned char* sigblock,
/* uses libNSS */ /* uses libNSS */
/* large enough for the different hashes */ /* large enough for the different hashes */
unsigned char hash[HASH_LENGTH_MAX]; unsigned char hash[HASH_LENGTH_MAX];
unsigned char hash2[HASH_LENGTH_MAX*2];
HASH_HashType htype = 0; HASH_HashType htype = 0;
SECKEYPublicKey* pubkey = NULL; SECKEYPublicKey* pubkey = NULL;
SECItem secsig = {siBuffer, sigblock, sigblock_len}; SECItem secsig = {siBuffer, sigblock, sigblock_len};
@ -1029,7 +1030,12 @@ verify_canonrrset(ldns_buffer* buf, int algo, unsigned char* sigblock,
} }
if(prefix) { if(prefix) {
int hashlen = sechash.len; int hashlen = sechash.len;
sechash.data = PORT_ArenaAlloc(pubkey->arena, prefixlen+hashlen); if(prefixlen+hashlen > sizeof(hash2)) {
verbose(VERB_QUERY, "verify: hashprefix too large");
SECKEY_DestroyPublicKey(pubkey);
return sec_status_unchecked;
}
sechash.data = hash2;
sechash.len = prefixlen+hashlen; sechash.len = prefixlen+hashlen;
memcpy(sechash.data, prefix, prefixlen); memcpy(sechash.data, prefix, prefixlen);
memmove(sechash.data+prefixlen, hash, hashlen); memmove(sechash.data+prefixlen, hash, hashlen);