git.samba.org
/
abartlet
/
samba.git
/
.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
98e143c
)
libndr: change subcontext buffer allocation to allocate on subcontext_start.
author
Günther Deschner
<gd@samba.org>
Wed, 16 Dec 2009 21:54:02 +0000
(22:54 +0100)
committer
Stefan Metzmacher
<metze@samba.org>
Thu, 18 Feb 2010 12:44:01 +0000
(13:44 +0100)
Guenther
librpc/ndr/ndr.c
patch
|
blob
|
history
diff --git
a/librpc/ndr/ndr.c
b/librpc/ndr/ndr.c
index 90ecdb158405a7c05d6c4e6cc7ba1adca2ba1d85..80025d71f07d0f1022e4a1bf5b27095de3a2183c 100644
(file)
--- a/
librpc/ndr/ndr.c
+++ b/
librpc/ndr/ndr.c
@@
-590,6
+590,11
@@
_PUBLIC_ enum ndr_err_code ndr_push_subcontext_start(struct ndr_push *ndr,
NDR_ERR_HAVE_NO_MEMORY(subndr);
subndr->flags = ndr->flags & ~LIBNDR_FLAG_NDR64;
NDR_ERR_HAVE_NO_MEMORY(subndr);
subndr->flags = ndr->flags & ~LIBNDR_FLAG_NDR64;
+ if (size_is > 0) {
+ NDR_CHECK(ndr_push_zero(subndr, size_is));
+ subndr->offset = 0;
+ }
+
*_subndr = subndr;
return NDR_ERR_SUCCESS;
}
*_subndr = subndr;
return NDR_ERR_SUCCESS;
}
@@
-606,12
+611,11
@@
_PUBLIC_ enum ndr_err_code ndr_push_subcontext_end(struct ndr_push *ndr,
if (size_is >= 0) {
padding_len = size_is - subndr->offset;
if (size_is >= 0) {
padding_len = size_is - subndr->offset;
- if (padding_len > 0) {
- NDR_CHECK(ndr_push_zero(subndr, padding_len));
- } else if (padding_len < 0) {
+ if (padding_len < 0) {
return ndr_push_error(ndr, NDR_ERR_SUBCONTEXT, "Bad subcontext (PUSH) content_size %d is larger than size_is(%d)",
(int)subndr->offset, (int)size_is);
}
return ndr_push_error(ndr, NDR_ERR_SUBCONTEXT, "Bad subcontext (PUSH) content_size %d is larger than size_is(%d)",
(int)subndr->offset, (int)size_is);
}
+ subndr->offset = size_is;
}
switch (header_size) {
}
switch (header_size) {