summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-01-29 03:17:14 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:09:20 -0500
commit2c0a1f53910a6be9515e4f456426a73a9aa72308 (patch)
treee9b8e02e8e2e9b405417765d453da66f35686805 /source4
parent087fb574b25c814a0e491c121b77305006f8d865 (diff)
downloadsamba-2c0a1f53910a6be9515e4f456426a73a9aa72308.tar.gz
samba-2c0a1f53910a6be9515e4f456426a73a9aa72308.tar.bz2
samba-2c0a1f53910a6be9515e4f456426a73a9aa72308.zip
r5084: - handle arbitrary data in the NULL record reply type for nbt name queries
- fixed unaligned pulls at the end of the packet in the ndr lib (This used to be commit 61c43509f7a538541d87bd505ca241e08a50f605)
Diffstat (limited to 'source4')
-rw-r--r--source4/librpc/idl/nbt.idl6
-rw-r--r--source4/librpc/ndr/libndr.h2
-rw-r--r--source4/librpc/ndr/ndr.c2
3 files changed, 6 insertions, 4 deletions
diff --git a/source4/librpc/idl/nbt.idl b/source4/librpc/idl/nbt.idl
index e12ec6290a..429a35267c 100644
--- a/source4/librpc/idl/nbt.idl
+++ b/source4/librpc/idl/nbt.idl
@@ -142,13 +142,13 @@ interface nbt
} nbt_rdata_status;
typedef struct {
- nbt_operation operation;
- } nbt_rdata_wack;
+ [flag(NDR_REMAINING)] DATA_BLOB data;
+ } nbt_rdata_data;
typedef [nodiscriminant] union {
[case(NBT_QTYPE_NETBIOS)] nbt_rdata_netbios netbios;
[case(NBT_QTYPE_STATUS)] nbt_rdata_status status;
- [case(NBT_QTYPE_NULL)] nbt_rdata_wack wack;
+ [default] nbt_rdata_data data;
} nbt_rdata;
typedef [flag(LIBNDR_PRINT_ARRAY_HEX)] struct {
diff --git a/source4/librpc/ndr/libndr.h b/source4/librpc/ndr/libndr.h
index 7070ae80ec..5485c232b4 100644
--- a/source4/librpc/ndr/libndr.h
+++ b/source4/librpc/ndr/libndr.h
@@ -185,7 +185,7 @@ enum ndr_err_code {
} \
ndr->offset = (ndr->offset + (n-1)) & ~(n-1); \
} \
- if (ndr->offset >= ndr->data_size) { \
+ if (ndr->offset > ndr->data_size) { \
return ndr_pull_error(ndr, NDR_ERR_BUFSIZE, "Pull align %u", n); \
} \
} while(0)
diff --git a/source4/librpc/ndr/ndr.c b/source4/librpc/ndr/ndr.c
index 6947cc8ee6..032c743bef 100644
--- a/source4/librpc/ndr/ndr.c
+++ b/source4/librpc/ndr/ndr.c
@@ -436,6 +436,8 @@ static NTSTATUS ndr_pull_subcontext_header(struct ndr_pull *ndr,
size_t sub_size,
struct ndr_pull *ndr2)
{
+ ndr2->flags = ndr->flags;
+
switch (sub_size) {
case 0: {
uint32_t size = ndr->data_size - ndr->offset;