summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2013-09-12 14:44:58 -0700
committerKarolin Seeger <kseeger@samba.org>2013-11-28 10:13:41 +0100
commita70e6b944455c2c24319cc68b8cb15746a469640 (patch)
tree0e5e8150a05f61f60cd9c0ebd252afa7ee95e428
parent2f9c9b7bb5a1b7c25d1c588fcc0e25ec2b0d9906 (diff)
downloadsamba-a70e6b944455c2c24319cc68b8cb15746a469640.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. (cherry picked from commit ee0ef2a5b4b06fdb723a5232f90212fda5e853d1)
-rw-r--r--source3/smbd/mangle_hash2.c9
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;
}
}