From: Wouter Wijngaards Date: Tue, 6 Apr 2010 14:17:51 +0000 (+0000) Subject: Fix ldns_native2rdf.. X-Git-Tag: release-1.6.5~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb0cc653c40504b4b7e4938fc0845435137a843f;p=thirdparty%2Fldns.git Fix ldns_native2rdf.. --- diff --git a/Changelog b/Changelog index 318142ea..68572292 100644 --- a/Changelog +++ b/Changelog @@ -18,6 +18,8 @@ ldns_tcp_read_wire_timeout(). * GOST support with correct algorithm numbers. OpenSSL 1.0.0 is necessary (or use --disable-gost). + * Fixed comment in rbtree.h about being first member and data ptr. + * Fixed possibly leak in case of out of memory in ldns_native2rdf... 1.6.4 2010-01-20 * Imported pyldns contribution by Zdenek Vasicek and Karel Slany. diff --git a/rdata.c b/rdata.c index 05f9122b..04bb3b13 100644 --- a/rdata.c +++ b/rdata.c @@ -132,34 +132,46 @@ ldns_rdf * ldns_native2rdf_int16(ldns_rdf_type type, uint16_t value) { uint16_t *rdf_data = LDNS_XMALLOC(uint16_t, 1); + ldns_rdf* rdf; if (!rdf_data) { return NULL; } ldns_write_uint16(rdf_data, value); - return ldns_rdf_new(type, LDNS_RDF_SIZE_WORD, rdf_data); + rdf = ldns_rdf_new(type, LDNS_RDF_SIZE_WORD, rdf_data); + if(!rdf) + LDNS_FREE(rdf_data); + return rdf; } ldns_rdf * ldns_native2rdf_int32(ldns_rdf_type type, uint32_t value) { uint32_t *rdf_data = LDNS_XMALLOC(uint32_t, 1); + ldns_rdf* rdf; if (!rdf_data) { return NULL; } ldns_write_uint32(rdf_data, value); - return ldns_rdf_new(type, LDNS_RDF_SIZE_DOUBLEWORD, rdf_data); + rdf = ldns_rdf_new(type, LDNS_RDF_SIZE_DOUBLEWORD, rdf_data); + if(!rdf) + LDNS_FREE(rdf_data); + return rdf; } ldns_rdf * ldns_native2rdf_int16_data(size_t size, uint8_t *data) { uint8_t *rdf_data = LDNS_XMALLOC(uint8_t, size + 2); + ldns_rdf* rdf; if (!rdf_data) { return NULL; } ldns_write_uint16(rdf_data, size); memcpy(rdf_data + 2, data, size); - return ldns_rdf_new(LDNS_RDF_TYPE_INT16_DATA, size + 2, rdf_data); + rdf = ldns_rdf_new(LDNS_RDF_TYPE_INT16_DATA, size + 2, rdf_data); + if(!rdf) + LDNS_FREE(rdf_data); + return rdf; } /* note: data must be allocated memory */