diff options
author | Jeremy Allison <jra@samba.org> | 2004-12-02 00:55:47 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:53:30 -0500 |
commit | d7a1c4f79c7c9d7038096a34626ba7236e856929 (patch) | |
tree | fbc89abd715f680349da1d709f70120d22959419 | |
parent | 8fe6d35761a6928b606cce8b7c5d5cee95eb2d40 (diff) | |
download | samba-d7a1c4f79c7c9d7038096a34626ba7236e856929.tar.gz samba-d7a1c4f79c7c9d7038096a34626ba7236e856929.tar.bz2 samba-d7a1c4f79c7c9d7038096a34626ba7236e856929.zip |
r4032: Fix bug #2110 - ensure we convert to ucs2 correctly.
Jeremy.
(This used to be commit a1e5a2a6ab1abc9add7a606e2e3f2d6c88dcf96c)
-rw-r--r-- | source3/lib/ms_fnmatch.c | 13 | ||||
-rw-r--r-- | source3/lib/util_unistr.c | 10 |
2 files changed, 11 insertions, 12 deletions
diff --git a/source3/lib/ms_fnmatch.c b/source3/lib/ms_fnmatch.c index 3040dc7f9d..71f3959c24 100644 --- a/source3/lib/ms_fnmatch.c +++ b/source3/lib/ms_fnmatch.c @@ -167,8 +167,17 @@ int ms_fnmatch(const char *pattern, const char *string, enum protocol_types prot } } - pstrcpy_wa(p, pattern); - pstrcpy_wa(s, string); + if (push_ucs2(NULL, p, pattern, sizeof(p), STR_TERMINATE) == (size_t)-1) { + /* Not quite the right answer, but finding the right one + under this failure case is expensive, and it's pretty close */ + return -1; + } + + if (push_ucs2(NULL, s, string, sizeof(s), STR_TERMINATE) == (size_t)-1) { + /* Not quite the right answer, but finding the right one + under this failure case is expensive, and it's pretty close */ + return -1; + } if (protocol <= PROTOCOL_LANMAN2) { /* diff --git a/source3/lib/util_unistr.c b/source3/lib/util_unistr.c index bfb5288826..997dde91c2 100644 --- a/source3/lib/util_unistr.c +++ b/source3/lib/util_unistr.c @@ -708,16 +708,6 @@ BOOL trim_string_w(smb_ucs2_t *s, const smb_ucs2_t *front, The char* arguments must NOT be multibyte - to be completely sure of this only pass string constants */ - -void pstrcpy_wa(smb_ucs2_t *dest, const char *src) -{ - int i; - for (i=0;i<PSTRING_LEN;i++) { - dest[i] = UCS2_CHAR(src[i]); - if (src[i] == 0) return; - } -} - int strcmp_wa(const smb_ucs2_t *a, const char *b) { while (*b && *a == UCS2_CHAR(*b)) { a++; b++; } |