summaryrefslogtreecommitdiff
path: root/source3/rpc_parse/parse_misc.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2003-11-07 18:32:29 +0000
committerJeremy Allison <jra@samba.org>2003-11-07 18:32:29 +0000
commita3aa2c9ed44f5967986d340456efd5828bd5f2ff (patch)
tree0e56075981a33c9323376067e337571f7b91d0cd /source3/rpc_parse/parse_misc.c
parente9bd28d0a7b0fd667e52683013404dc4b1e03673 (diff)
downloadsamba-a3aa2c9ed44f5967986d340456efd5828bd5f2ff.tar.gz
samba-a3aa2c9ed44f5967986d340456efd5828bd5f2ff.tar.bz2
samba-a3aa2c9ed44f5967986d340456efd5828bd5f2ff.zip
Handle munged dial string. Patch from Aur?lien Degr?mont <adegremont@idealx.com>
with memory leak fixes by me. Jeremy. (This used to be commit daceed37387c517b3f0ab9c173f419215e3d676b)
Diffstat (limited to 'source3/rpc_parse/parse_misc.c')
-rw-r--r--source3/rpc_parse/parse_misc.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/source3/rpc_parse/parse_misc.c b/source3/rpc_parse/parse_misc.c
index a075dbd833..b0144c2c89 100644
--- a/source3/rpc_parse/parse_misc.c
+++ b/source3/rpc_parse/parse_misc.c
@@ -1029,6 +1029,27 @@ void init_unistr2_from_unistr(UNISTR2 *to, const UNISTR *from)
}
/*******************************************************************
+ Inits a UNISTR2 structure from a DATA_BLOB.
+ The length of the data_blob must count the bytes of the buffer.
+ Copies the blob data.
+********************************************************************/
+
+void init_unistr2_from_datablob(UNISTR2 *str, DATA_BLOB *blob)
+{
+ /* Allocs the unistring */
+ init_unistr2(str, NULL, UNI_FLAGS_NONE);
+
+ /* Sets the values */
+ str->uni_str_len = blob->length / sizeof(uint16);
+ str->uni_max_len = str->uni_str_len;
+ str->offset = 0;
+ str->buffer = (uint16 *) memdup(blob->data, blob->length);
+ if (!str->buffer) {
+ smb_panic("init_unistr2_from_datablob: malloc fail\n");
+ }
+}
+
+/*******************************************************************
Reads or writes a UNISTR2 structure.
XXXX NOTE: UNISTR2 structures need NOT be null-terminated.
the uni_str_len member tells you how long the string is;