From: Volker Lendecke Date: Sat, 12 Feb 2011 22:41:48 +0000 (+0100) Subject: s3: Add error checking to asn1_read_OctetString_talloc X-Git-Tag: tevent-0.9.11~699 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f6df16d9d2913db5a0b20ac83cc512c336572877;p=thirdparty%2Fsamba.git s3: Add error checking to asn1_read_OctetString_talloc --- diff --git a/source3/lib/tldap.c b/source3/lib/tldap.c index 71afab9a6e5..8a3da3cdbea 100644 --- a/source3/lib/tldap.c +++ b/source3/lib/tldap.c @@ -734,6 +734,11 @@ static void tldap_save_msg(struct tldap_context *ld, struct tevent_req *req) static char *blob2string_talloc(TALLOC_CTX *mem_ctx, DATA_BLOB blob) { char *result = talloc_array(mem_ctx, char, blob.length+1); + + if (result == NULL) { + return NULL; + } + memcpy(result, blob.data, blob.length); result[blob.length] = '\0'; return result; @@ -741,13 +746,21 @@ static char *blob2string_talloc(TALLOC_CTX *mem_ctx, DATA_BLOB blob) static bool asn1_read_OctetString_talloc(TALLOC_CTX *mem_ctx, struct asn1_data *data, - char **result) + char **presult) { DATA_BLOB string; + char *result; if (!asn1_read_OctetString(data, mem_ctx, &string)) return false; - *result = blob2string_talloc(mem_ctx, string); + + result = blob2string_talloc(mem_ctx, string); + data_blob_free(&string); + + if (result == NULL) { + return false; + } + *presult = result; return true; }