From 950fe1c6fb3953d4180750a9fdff5c7b14597b82 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 10 Sep 2013 10:46:18 -0700 Subject: [PATCH] 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 Reviewed-by: Volker Lendecke (cherry picked from commit 776db7d38597a29536e4127837ffa3b4f4ce35ab) --- source3/smbd/mangle_hash2.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/source3/smbd/mangle_hash2.c b/source3/smbd/mangle_hash2.c index 655c727..c2910f8 100644 --- a/source3/smbd/mangle_hash2.c +++ b/source3/smbd/mangle_hash2.c @@ -626,21 +626,17 @@ 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 - * contain embedded ascii bytes. We are really checking - * for mb UNIX asian characters like Japanese (SJIS) here. - * JRA. + * Note that we're only looking for multibyte + * encoding here. No encoding with a length > 1 + * contains invalid characters. */ - if (convert_string(CH_UNIX, CH_UTF16LE, name, 2, mbc, 2, &size)) { - if (size == 2) { - /* Was a good mb string. */ - name += 2; - continue; - } + if (size > 1) { + /* Was a mb string. */ + name += size; + continue; } } -- 1.8.4