- (dtucker) [openbsd-compat/getrrsetbyname.c] Don't attempt to calloc

an array for signatures when there are none since "calloc(0, n) returns
   NULL on some platforms (eg Tru64), which is explicitly permitted by
   POSIX.  Diagnosis and patch by svallet genoscope.cns.fr.
This commit is contained in:
Darren Tucker 2007-02-19 22:56:55 +11:00
parent 53ced25d61
commit 89ee69e3c6
2 changed files with 11 additions and 5 deletions

View File

@ -43,6 +43,10 @@
offsite. ok djm@, man page bits ok jmc@ offsite. ok djm@, man page bits ok jmc@
- (dtucker) [contrib/findssl.sh] Add "which" as a shell function since some - (dtucker) [contrib/findssl.sh] Add "which" as a shell function since some
platforms don't have it. Patch from dleonard at vintela.com. platforms don't have it. Patch from dleonard at vintela.com.
- (dtucker) [openbsd-compat/getrrsetbyname.c] Don't attempt to calloc
an array for signatures when there are none since "calloc(0, n) returns
NULL on some platforms (eg Tru64), which is explicitly permitted by
POSIX. Diagnosis and patch by svallet genoscope.cns.fr.
20070128 20070128
- (djm) [channels.c serverloop.c] Fix so-called "hang on exit" (bz #52) - (djm) [channels.c serverloop.c] Fix so-called "hang on exit" (bz #52)
@ -2738,4 +2742,4 @@
OpenServer 6 and add osr5bigcrypt support so when someone migrates OpenServer 6 and add osr5bigcrypt support so when someone migrates
passwords between UnixWare and OpenServer they will still work. OK dtucker@ passwords between UnixWare and OpenServer they will still work. OK dtucker@
$Id: ChangeLog,v 1.4618 2007/02/19 11:44:25 dtucker Exp $ $Id: ChangeLog,v 1.4619 2007/02/19 11:56:55 dtucker Exp $

View File

@ -303,11 +303,13 @@ getrrsetbyname(const char *hostname, unsigned int rdclass,
} }
/* allocate memory for signatures */ /* allocate memory for signatures */
if (rrset->rri_nsigs > 0) {
rrset->rri_sigs = calloc(rrset->rri_nsigs, sizeof(struct rdatainfo)); rrset->rri_sigs = calloc(rrset->rri_nsigs, sizeof(struct rdatainfo));
if (rrset->rri_sigs == NULL) { if (rrset->rri_sigs == NULL) {
result = ERRSET_NOMEMORY; result = ERRSET_NOMEMORY;
goto fail; goto fail;
} }
}
/* copy answers & signatures */ /* copy answers & signatures */
for (rr = response->answer, index_ans = 0, index_sig = 0; for (rr = response->answer, index_ans = 0, index_sig = 0;