1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

Fix assumption about following directory sep in check_path_syntax(). We

need to try and convert 1 byte, then 2 bytes if that fails. Fixes bug
reported by Simo.
Jeremy.
This commit is contained in:
Jeremy Allison 0001-01-01 00:00:00 +00:00
parent 7ed61edbbe
commit 8702d00896

View File

@ -114,14 +114,20 @@ static NTSTATUS check_path_syntax(pstring destname, const pstring srcname)
/* /*
* Potential mb char with second char a directory separator. * Potential mb char with second char a directory separator.
* All the encodings we care about are 2 byte only, so do a * All the encodings we care about are 2 byte only, so do a
* conversion to unicode. If the 2 byte char won't convert then * conversion to unicode. If the one byte char converts then
* it's probably a one byte char with a real directory separator * it really is a directory separator following. Otherwise if
* following, so only copy one byte. If it will convert then * the two byte character converts (and it should or our assumption
* copy both bytes. * about character sets is broken and we panic) then copy both
* bytes as it's a MB character, not a directory separator.
*/ */
uint16 ucs2_val; uint16 ucs2_val;
if (convert_string(CH_UNIX, CH_UCS2, s, 2, &ucs2_val, 2) == 2) { if (convert_string(CH_UNIX, CH_UCS2, s, 1, &ucs2_val, 2) == 2) {
;
} else if (convert_string(CH_UNIX, CH_UCS2, s, 2, &ucs2_val, 2) == 2) {
*d++ = *s++; *d++ = *s++;
} else {
smb_panic("check_path_syntax: directory separator assumptions invalid !\n");
} }
} }
/* Just copy the char (or the second byte of the mb char). */ /* Just copy the char (or the second byte of the mb char). */