diff options
author | Jeremy Allison <jra@samba.org> | 2013-09-12 14:44:58 -0700 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2013-10-02 09:21:28 +0200 |
commit | ee0ef2a5b4b06fdb723a5232f90212fda5e853d1 (patch) | |
tree | 49e07a5016d3426ddaaa4ca75f096aa2cec7de6a | |
parent | e00a2c90847b3c85f089b4f3c96ec6c66b949576 (diff) | |
download | samba-ee0ef2a5b4b06fdb723a5232f90212fda5e853d1.tar.gz |
Fix is_legal_name() to not emit character conversion error messages.
Using next_codepoint() does the same check, but without the conversion
message.
Signed-off-by: Jeremy Allison <jra@samba.org>
Fix bug #10139 - valid utf8 filenames cause "invalid conversion error" messages.
-rw-r--r-- | source3/smbd/mangle_hash2.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/source3/smbd/mangle_hash2.c b/source3/smbd/mangle_hash2.c index 5aafe2f2abb..90d9498e539 100644 --- a/source3/smbd/mangle_hash2.c +++ b/source3/smbd/mangle_hash2.c @@ -626,7 +626,8 @@ static bool is_legal_name(const char *name) while (*name) { if (((unsigned int)name[0]) > 128 && (name[1] != 0)) { /* Possible start of mb character. */ - char mbc[2]; + size_t size = 0; + (void)next_codepoint(name, &size); /* * Note that if CH_UNIX is utf8 a string may be 3 * bytes, but this is ok as mb utf8 characters don't @@ -634,9 +635,9 @@ static bool is_legal_name(const char *name) * for mb UNIX asian characters like Japanese (SJIS) here. * JRA. */ - if (convert_string(CH_UNIX, CH_UTF16LE, name, 2, mbc, 2, False) == 2) { - /* Was a good mb string. */ - name += 2; + if (size > 1) { + /* Was a mb string. */ + name += size; continue; } } |