From: Erik Rozendaal Date: Wed, 22 Dec 2004 12:36:32 +0000 (+0000) Subject: host2str.c: Added helper function to convert a buffer to a zero X-Git-Tag: release-0.50~607 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bbf94579864b8785023dfd37db03692d16df75d6;p=thirdparty%2Fldns.git host2str.c: Added helper function to convert a buffer to a zero terminated string. Properly free temporary buffers if RDF conversion fails. --- diff --git a/host2str.c b/host2str.c index bdf35a9e..2bd1c779 100644 --- a/host2str.c +++ b/host2str.c @@ -269,6 +269,22 @@ ldns_pkt2buffer(ldns_buffer *output, ldns_pkt *pkt) return status; } +/* + * Zero terminate the buffer and fix it to the size of the string. + */ +static char * +buffer2str(ldns_buffer *buffer) +{ + if (!ldns_buffer_reserve(buffer, 1)) { + return NULL; + } + ldns_buffer_write_u8(buffer, '\0'); + if (!ldns_buffer_set_capacity(buffer, ldns_buffer_position(buffer))) { + return NULL; + } + return ldns_buffer_export(buffer); +} + char * ldns_rdf2str(ldns_rdf *rdf) { @@ -277,10 +293,10 @@ ldns_rdf2str(ldns_rdf *rdf) if (ldns_rdf2buffer(tmp_buffer, rdf) == LDNS_STATUS_OK) { /* export and return string, destroy rest */ - result = ldns_buffer_export(tmp_buffer); - ldns_buffer_free(tmp_buffer); + result = buffer2str(tmp_buffer); } + ldns_buffer_free(tmp_buffer); return result; } @@ -292,10 +308,10 @@ ldns_rr2str(ldns_rr *rr) if (ldns_rr2buffer(tmp_buffer, rr) == LDNS_STATUS_OK) { /* export and return string, destroy rest */ - result = ldns_buffer_export(tmp_buffer); - ldns_buffer_free(tmp_buffer); + result = buffer2str(tmp_buffer); } + ldns_buffer_free(tmp_buffer); return result; } @@ -307,9 +323,9 @@ ldns_pkt2str(ldns_pkt *pkt) if (ldns_pkt2buffer(tmp_buffer, pkt) == LDNS_STATUS_OK) { /* export and return string, destroy rest */ - result = ldns_buffer_export(tmp_buffer); - ldns_buffer_free(tmp_buffer); + result = buffer2str(tmp_buffer); } + ldns_buffer_free(tmp_buffer); return result; }