summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2016-05-09 16:14:31 +0200
committerKarolin Seeger <kseeger@samba.org>2016-05-17 13:47:41 +0200
commite410d79f15e6d12738e33186444e85e74ad00814 (patch)
tree1f490230cbd83f3e5fbeb11212160bd5f0cf7c4e
parent0ef06ee71454b34c205096628df8b53aec9263d6 (diff)
downloadsamba-e410d79f15e6d12738e33186444e85e74ad00814.tar.gz
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 <metze@samba.org> Autobuild-User(master): Stefan Metzmacher <metze@samba.org> 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 <kseeger@samba.org> Autobuild-Date(v4-2-test): Tue May 17 13:47:41 CEST 2016 on sn-devel-104
-rw-r--r--libcli/auth/msrpc_parse.c24
1 files changed, 20 insertions, 4 deletions
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;