if (hdr->str_str_len > MAX_STRINGLEN) hdr->str_str_len = MAX_STRINGLEN;
}
+/*******************************************************************
+creates a STRHDR2 structure.
+********************************************************************/
+void make_strhdr2(STRHDR2 *hdr, uint32 max_len, uint32 len, uint32 buffer)
+{
+ hdr->str_max_len = max_len;
+ hdr->str_str_len = len;
+ hdr->buffer = buffer;
+}
+
+/*******************************************************************
+reads or writes a STRHDR2 structure.
+********************************************************************/
+void smb_io_strhdr2(char *desc, STRHDR2 *hdr, prs_struct *ps, int depth)
+{
+ if (hdr == NULL) return;
+
+ prs_debug(ps, depth, desc, "smb_io_strhdr");
+ depth++;
+
+ prs_align(ps);
+
+ prs_uint32("str_str_len", ps, depth, &(hdr->str_str_len));
+ prs_uint32("str_max_len", ps, depth, &(hdr->str_max_len));
+ prs_uint32("buffer ", ps, depth, &(hdr->buffer ));
+
+ /* oops! XXXX maybe issue a warning that this is happening... */
+ if (hdr->str_max_len > MAX_STRINGLEN) hdr->str_max_len = MAX_STRINGLEN;
+ if (hdr->str_str_len > MAX_STRINGLEN) hdr->str_str_len = MAX_STRINGLEN;
+}
+
/*******************************************************************
creates a UNIHDR structure.
********************************************************************/
-void make_uni_hdr(UNIHDR *hdr, int max_len, int len, uint32 buffer)
+void make_uni_hdr(UNIHDR *hdr, int len)
{
hdr->uni_str_len = 2 * len;
- hdr->uni_max_len = 2 * max_len;
- hdr->buffer = buffer;
+ hdr->uni_max_len = 2 * len;
+ hdr->buffer = len != 0 ? 1 : 0;
}
/*******************************************************************
/*******************************************************************
creates a UNIHDR2 structure.
********************************************************************/
-void make_uni_hdr2(UNIHDR2 *hdr, int max_len, int len, uint16 terminate)
+void make_uni_hdr2(UNIHDR2 *hdr, int len)
{
- make_uni_hdr(&(hdr->unihdr), max_len, len, terminate);
+ make_uni_hdr(&(hdr->unihdr), len);
hdr->buffer = len > 0 ? 1 : 0;
}
/*******************************************************************
creates a BUFFER2 structure.
********************************************************************/
-void make_buffer2(BUFFER2 *str, uint8 *buf, int len)
+void make_buffer2(BUFFER2 *str, const char *buf, int len)
{
ZERO_STRUCTP(str);
- /* max buffer size (allocated size) */
+ /* set up string lengths. */
str->buf_max_len = len;
str->undoc = 0;
- str->buf_len = buf != NULL ? len : 0;
+ str->buf_len = len;
- if (buf != NULL)
- {
- memcpy(str->buffer, buf, MIN(str->buf_len, sizeof(str->buffer)));
- }
+ /* store the string (wide chars) */
+ ascii_to_unistr(str->buffer, buf, len);
}
/*******************************************************************
prs_uint32("unk ", ps, depth, &(rid3->unk ));
}
-/*******************************************************************
-creates a DOM_RID4 structure.
-********************************************************************/
-void make_dom_rid4(DOM_RID4 *rid4, uint16 unknown, uint16 attr, uint32 rid)
-{
- rid4->unknown = unknown;
- rid4->attr = attr;
- rid4->rid = rid;
-}
-
/*******************************************************************
makes a DOM_CLNT_SRV structure.
********************************************************************/