summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
Diffstat (limited to 'source3')
-rw-r--r--source3/include/safe_string.h2
-rw-r--r--source3/lib/charcnv.c7
-rw-r--r--source3/libsmb/clistr.c14
-rw-r--r--source3/smbd/srvstr.c10
4 files changed, 24 insertions, 9 deletions
diff --git a/source3/include/safe_string.h b/source3/include/safe_string.h
index c0b9c411ec..69a5a5eb93 100644
--- a/source3/include/safe_string.h
+++ b/source3/include/safe_string.h
@@ -191,7 +191,7 @@ size_t __unsafe_string_function_usage_here_char__(void);
#define push_string_fn2(fn_name, fn_line, base_ptr, dest, src, dest_len, flags) \
(CHECK_STRING_SIZE(dest, dest_len) \
? __unsafe_string_function_usage_here_size_t__() \
- : push_string_fn(fn_name, fn_line, base_ptr, dest, src, dest_len, flags))
+ : push_string_fn(fn_name, fn_line, base_ptr, 0, dest, src, dest_len, flags))
#define pull_string_fn2(fn_name, fn_line, base_ptr, smb_flags2, dest, src, dest_len, src_len, flags) \
(CHECK_STRING_SIZE(dest, dest_len) \
diff --git a/source3/lib/charcnv.c b/source3/lib/charcnv.c
index 30941dd7e8..349fbff850 100644
--- a/source3/lib/charcnv.c
+++ b/source3/lib/charcnv.c
@@ -1504,7 +1504,10 @@ size_t pull_ascii_talloc(TALLOC_CTX *ctx, char **dest, const char *src)
is -1 then no maxiumum is used.
**/
-size_t push_string_fn(const char *function, unsigned int line, const void *base_ptr, void *dest, const char *src, size_t dest_len, int flags)
+size_t push_string_fn(const char *function, unsigned int line,
+ const void *base_ptr, uint16 flags2,
+ void *dest, const char *src,
+ size_t dest_len, int flags)
{
#ifdef DEVELOPER
/* We really need to zero fill here, not clobber
@@ -1524,7 +1527,7 @@ size_t push_string_fn(const char *function, unsigned int line, const void *base_
if (!(flags & STR_ASCII) && \
((flags & STR_UNICODE || \
- (SVAL(base_ptr, smb_flg2) & FLAGS2_UNICODE_STRINGS)))) {
+ (flags2 & FLAGS2_UNICODE_STRINGS)))) {
return push_ucs2(base_ptr, dest, src, dest_len, flags);
}
return push_ascii(dest, src, dest_len, flags);
diff --git a/source3/libsmb/clistr.c b/source3/libsmb/clistr.c
index 7e6ad790fc..39315729c4 100644
--- a/source3/libsmb/clistr.c
+++ b/source3/libsmb/clistr.c
@@ -28,13 +28,21 @@ size_t clistr_push_fn(const char *function, unsigned int line,
if (dest_len == -1) {
if (((ptrdiff_t)dest < (ptrdiff_t)cli->outbuf) || (buf_used > cli->bufsize)) {
DEBUG(0, ("Pushing string of 'unlimited' length into non-SMB buffer!\n"));
- return push_string_fn(function, line, cli->outbuf, dest, src, -1, flags);
+ return push_string_fn(function, line,
+ cli->outbuf,
+ SVAL(cli->outbuf, smb_flg2),
+ dest, src, -1, flags);
}
- return push_string_fn(function, line, cli->outbuf, dest, src, cli->bufsize - buf_used, flags);
+ return push_string_fn(function, line, cli->outbuf,
+ SVAL(cli->outbuf, smb_flg2),
+ dest, src, cli->bufsize - buf_used,
+ flags);
}
/* 'normal' push into size-specified buffer */
- return push_string_fn(function, line, cli->outbuf, dest, src, dest_len, flags);
+ return push_string_fn(function, line, cli->outbuf,
+ SVAL(cli->outbuf, smb_flg2),
+ dest, src, dest_len, flags);
}
size_t clistr_pull_fn(const char *function, unsigned int line,
diff --git a/source3/smbd/srvstr.c b/source3/smbd/srvstr.c
index df993537ba..fbcf249ffb 100644
--- a/source3/smbd/srvstr.c
+++ b/source3/smbd/srvstr.c
@@ -33,13 +33,17 @@ size_t srvstr_push_fn(const char *function, unsigned int line,
#if 0
DEBUG(0, ("Pushing string of 'unlimited' length into non-SMB buffer!\n"));
#endif
- return push_string_fn(function, line, base_ptr, dest, src, -1, flags);
+ return push_string_fn(function, line, base_ptr,
+ smb_flags2, dest, src, -1,
+ flags);
}
- return push_string_fn(function, line, base_ptr, dest, src, max_send - buf_used, flags);
+ return push_string_fn(function, line, base_ptr, smb_flags2,
+ dest, src, max_send - buf_used, flags);
}
/* 'normal' push into size-specified buffer */
- return push_string_fn(function, line, base_ptr, dest, src, dest_len, flags);
+ return push_string_fn(function, line, base_ptr, smb_flags2, dest, src,
+ dest_len, flags);
}
/*******************************************************************