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:
parent
7ed61edbbe
commit
8702d00896
@ -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). */
|
||||||
|
Loading…
Reference in New Issue
Block a user