diff options
author | Volker Lendecke <vlendec@samba.org> | 2007-08-02 18:06:45 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:29:10 -0500 |
commit | b62bd05b93e2317f78a4aea089295cf1162d23e2 (patch) | |
tree | ef9fdbcdbeb0cd1ac67cbec4c69377d59b5d8452 /source3 | |
parent | cc8d70036477f30c6c9c8a6e37d1e2680107c0a6 (diff) | |
download | samba-b62bd05b93e2317f78a4aea089295cf1162d23e2.tar.gz samba-b62bd05b93e2317f78a4aea089295cf1162d23e2.tar.bz2 samba-b62bd05b93e2317f78a4aea089295cf1162d23e2.zip |
r24133: Explicitly pass flags2 down to push_string_fn
This needs a bit closer review, it also touches the client libs
(This used to be commit 824eb26738d64af1798d319d339582cf047521f0)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/safe_string.h | 2 | ||||
-rw-r--r-- | source3/lib/charcnv.c | 7 | ||||
-rw-r--r-- | source3/libsmb/clistr.c | 14 | ||||
-rw-r--r-- | source3/smbd/srvstr.c | 10 |
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); } /******************************************************************* |