diff options
Diffstat (limited to 'source3/lib')
-rw-r--r-- | source3/lib/charcnv.c | 12 | ||||
-rw-r--r-- | source3/lib/util_unistr.c | 45 |
2 files changed, 23 insertions, 34 deletions
diff --git a/source3/lib/charcnv.c b/source3/lib/charcnv.c index 7c3545dab1..da972f550f 100644 --- a/source3/lib/charcnv.c +++ b/source3/lib/charcnv.c @@ -993,11 +993,6 @@ size_t push_ascii_fstring(void *dest, const char *src) return push_ascii(dest, src, sizeof(fstring), STR_TERMINATE); } -size_t push_ascii_pstring(void *dest, const char *src) -{ - return push_ascii(dest, src, sizeof(pstring), STR_TERMINATE); -} - /******************************************************************** Push an nstring - ensure null terminated. Written by moriyama@miraclelinux.com (MORIYAMA Masayuki). @@ -1471,7 +1466,7 @@ size_t pull_ucs2(const void *base_ptr, char *dest, const void *src, size_t dest_ The resulting string in "dest" is always null terminated. **/ -static size_t pull_ucs2_base_talloc(TALLOC_CTX *ctx, +size_t pull_ucs2_base_talloc(TALLOC_CTX *ctx, const void *base_ptr, char **ppdest, const void *src, @@ -1561,11 +1556,6 @@ static size_t pull_ucs2_base_talloc(TALLOC_CTX *ctx, return src_len; } -size_t pull_ucs2_pstring(char *dest, const void *src) -{ - return pull_ucs2(NULL, dest, src, sizeof(pstring), -1, STR_TERMINATE); -} - size_t pull_ucs2_fstring(char *dest, const void *src) { return pull_ucs2(NULL, dest, src, sizeof(fstring), -1, STR_TERMINATE); diff --git a/source3/lib/util_unistr.c b/source3/lib/util_unistr.c index 8fad1162ac..1fef6ab239 100644 --- a/source3/lib/util_unistr.c +++ b/source3/lib/util_unistr.c @@ -422,16 +422,33 @@ void unistr3_to_ascii(char *dest, const UNISTR3 *str, size_t maxlen) pull_ucs2(NULL, dest, str->str.buffer, maxlen, str->uni_str_len*2, STR_NOALIGN); } - + /******************************************************************* - Give a static string for displaying a UNISTR2. + Return a string for displaying a UNISTR2. Guarentees to return a + valid string - "" if nothing else. + Changed to use talloc_tos() under the covers.... JRA. ********************************************************************/ const char *unistr2_static(const UNISTR2 *str) { - static pstring ret; - unistr2_to_ascii(ret, str, sizeof(ret)); - return ret; + size_t ret = (size_t)-1; + char *dest = NULL; + + if ((str == NULL) || (str->uni_str_len == 0)) { + return ""; + } + + ret = pull_ucs2_base_talloc(talloc_tos(), + NULL, + &dest, + str->buffer, + str->uni_str_len*2, + STR_NOALIGN); + if (ret == (size_t)-1 || dest == NULL) { + return ""; + } + + return dest; } /******************************************************************* @@ -992,24 +1009,6 @@ smb_ucs2_t *strstr_wa(const smb_ucs2_t *s, const char *ins) return NULL; } -bool trim_string_wa(smb_ucs2_t *s, const char *front, - const char *back) -{ - wpstring f, b; - - if (front) { - push_ucs2(NULL, f, front, sizeof(wpstring) - 1, STR_TERMINATE); - } else { - *f = 0; - } - if (back) { - push_ucs2(NULL, b, back, sizeof(wpstring) - 1, STR_TERMINATE); - } else { - *b = 0; - } - return trim_string_w(s, f, b); -} - /******************************************************************* Returns the length in number of wide characters. ******************************************************************/ |