summaryrefslogtreecommitdiff
path: root/source3/rpc_parse
diff options
context:
space:
mode:
authorMatthew Chapman <matty@samba.org>1999-03-23 13:45:42 +0000
committerMatthew Chapman <matty@samba.org>1999-03-23 13:45:42 +0000
commit803100197bdd9d221a5807b3ca279ac6769e2e26 (patch)
tree30518d5cd78a1c75d16651a618cef123ffdf3ae5 /source3/rpc_parse
parent5380636c4e29268adf214634ed8f36cef6f1a35b (diff)
downloadsamba-803100197bdd9d221a5807b3ca279ac6769e2e26.tar.gz
samba-803100197bdd9d221a5807b3ca279ac6769e2e26.tar.bz2
samba-803100197bdd9d221a5807b3ca279ac6769e2e26.zip
Another UNICODE issue - this time BUFFER2 was being transmitted incorrectly.
(This used to be commit 73730f6004c7eca1d852a569dede94095a396dca)
Diffstat (limited to 'source3/rpc_parse')
-rw-r--r--source3/rpc_parse/parse_misc.c12
-rw-r--r--source3/rpc_parse/parse_reg.c7
2 files changed, 9 insertions, 10 deletions
diff --git a/source3/rpc_parse/parse_misc.c b/source3/rpc_parse/parse_misc.c
index e4b7578e67..da6ff2c7f6 100644
--- a/source3/rpc_parse/parse_misc.c
+++ b/source3/rpc_parse/parse_misc.c
@@ -458,19 +458,17 @@ void smb_io_buffer3(char *desc, BUFFER3 *buf3, prs_struct *ps, int depth)
/*******************************************************************
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);
}
/*******************************************************************
diff --git a/source3/rpc_parse/parse_reg.c b/source3/rpc_parse/parse_reg.c
index 5512f78499..ce0b7fff87 100644
--- a/source3/rpc_parse/parse_reg.c
+++ b/source3/rpc_parse/parse_reg.c
@@ -761,16 +761,17 @@ void make_reg_r_info(REG_R_INFO *r_r,
uint32 level, char *os_type,
uint32 status)
{
- char buf[512];
int len;
- len = ascii_to_unibuf(buf, os_type, sizeof(buf)-2) - buf;
+ if (r_r == NULL || os_type == NULL) return;
+
+ len = strlen(os_type) * 2;
r_r->ptr1 = 1;
r_r->level = level;
r_r->ptr_type = 1;
- make_buffer2(&(r_r->uni_type), buf, len);
+ make_buffer2(&(r_r->uni_type), os_type, len);
r_r->ptr2 = 1;
r_r->unknown_0 = len;