From: Stefan Metzmacher Date: Mon, 9 May 2016 14:14:31 +0000 (+0200) Subject: libcli/auth: let msrpc_parse() return talloc'ed empty strings X-Git-Tag: samba-4.2.13~8 X-Git-Url: http://git.samba.org/?a=commitdiff_plain;ds=sidebyside;h=e410d79f15e6d12738e33186444e85e74ad00814;p=samba.git libcli/auth: let msrpc_parse() return talloc'ed empty strings This make it more predictable for the callers. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11912 BUG: https://bugzilla.redhat.com/show_bug.cgi?id=1334356 BUG: https://launchpad.net/bugs/1578576 Signed-off-by: Stefan Metzmacher Autobuild-User(master): Stefan Metzmacher Autobuild-Date(master): Mon May 9 22:27:21 CEST 2016 on sn-devel-144 (cherry picked from commit 58a83236294117d32d9883ac3024f81fa1730a87) Autobuild-User(v4-2-test): Karolin Seeger Autobuild-Date(v4-2-test): Tue May 17 13:47:41 CEST 2016 on sn-devel-104 --- diff --git a/libcli/auth/msrpc_parse.c b/libcli/auth/msrpc_parse.c index d499d9eb7a1..74a7bcc27a8 100644 --- a/libcli/auth/msrpc_parse.c +++ b/libcli/auth/msrpc_parse.c @@ -262,7 +262,11 @@ bool msrpc_parse(TALLOC_CTX *mem_ctx, ps = va_arg(ap, char **); if (len1 == 0 && len2 == 0) { - *ps = (char *)discard_const(""); + *ps = talloc_strdup(mem_ctx, ""); + if (*ps == NULL) { + ret = false; + goto cleanup; + } } else { /* make sure its in the right format - be strict */ if ((len1 != len2) || (ptr + len1 < ptr) || (ptr + len1 < len1) || (ptr + len1 > blob->length)) { @@ -289,7 +293,11 @@ bool msrpc_parse(TALLOC_CTX *mem_ctx, goto cleanup; } } else { - (*ps) = (char *)discard_const(""); + *ps = talloc_strdup(mem_ctx, ""); + if (*ps == NULL) { + ret = false; + goto cleanup; + } } } break; @@ -302,7 +310,11 @@ bool msrpc_parse(TALLOC_CTX *mem_ctx, ps = (char **)va_arg(ap, char **); /* make sure its in the right format - be strict */ if (len1 == 0 && len2 == 0) { - *ps = (char *)discard_const(""); + *ps = talloc_strdup(mem_ctx, ""); + if (*ps == NULL) { + ret = false; + goto cleanup; + } } else { if ((len1 != len2) || (ptr + len1 < ptr) || (ptr + len1 < len1) || (ptr + len1 > blob->length)) { ret = false; @@ -325,7 +337,11 @@ bool msrpc_parse(TALLOC_CTX *mem_ctx, goto cleanup; } } else { - (*ps) = (char *)discard_const(""); + *ps = talloc_strdup(mem_ctx, ""); + if (*ps == NULL) { + ret = false; + goto cleanup; + } } } break;