summaryrefslogtreecommitdiff
path: root/source4/libcli/nbt/nbtname.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/libcli/nbt/nbtname.c')
-rw-r--r--source4/libcli/nbt/nbtname.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/source4/libcli/nbt/nbtname.c b/source4/libcli/nbt/nbtname.c
index 8c46379f0b..0584f55fb1 100644
--- a/source4/libcli/nbt/nbtname.c
+++ b/source4/libcli/nbt/nbtname.c
@@ -63,7 +63,7 @@ static NTSTATUS ndr_pull_component(struct ndr_pull *ndr, uint8_t **component,
/* its a reserved length field */
return NT_STATUS_BAD_NETWORK_NAME;
}
- if (*offset + len + 2 >= ndr->data_size) {
+ if (*offset + len + 2 > ndr->data_size) {
return NT_STATUS_BAD_NETWORK_NAME;
}
*component = (uint8_t*)talloc_strndup(ndr, &ndr->data[1 + *offset], len);
@@ -309,6 +309,17 @@ NTSTATUS nbt_name_to_blob(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, struct nbt_name
(ndr_push_flags_fn_t)ndr_push_nbt_name);
}
+
+/*
+ pull a nbt name from a blob
+*/
+NTSTATUS nbt_name_from_blob(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, struct nbt_name *name)
+{
+ return ndr_pull_struct_blob(blob, mem_ctx, name,
+ (ndr_pull_flags_fn_t)ndr_pull_nbt_name);
+}
+
+
/*
choose a name to use when calling a server in a NBT session request.
we use heuristics to see if the name we have been given is a IP