mirror of
https://github.com/samba-team/samba.git
synced 2025-03-27 22:50:26 +03:00
Second part of fix for bug 8310 - toupper_ascii() is broken on big-endian systems.
Re-add: smb_ucs2_t toupper_w(smb_ucs2_t v); and ensure it is called whenever we are operating on smb_ucs2_t variables. I'd like to make the definition of smb_ucs2_t incompatible with int and codepoint_t so they can't be mixed, but that's a patch for another time. Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Tue Jul 19 23:48:05 CEST 2011 on sn-devel-104
This commit is contained in:
parent
ee34c25c8a
commit
93dcfdea38
@ -257,6 +257,7 @@ int strcmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b);
|
||||
int strcasecmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b);
|
||||
int strncasecmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b, size_t len);
|
||||
int strcmp_wa(const smb_ucs2_t *a, const char *b);
|
||||
smb_ucs2_t toupper_w(smb_ucs2_t v);
|
||||
|
||||
/*
|
||||
* Define stub for charset module which implements 8-bit encoding with gaps.
|
||||
|
@ -252,3 +252,14 @@ int strcmp_wa(const smb_ucs2_t *a, const char *b)
|
||||
}
|
||||
return (*(COPY_UCS2_CHAR(&cp,a)) - UCS2_CHAR(*b));
|
||||
}
|
||||
|
||||
smb_ucs2_t toupper_w(smb_ucs2_t v)
|
||||
{
|
||||
smb_ucs2_t ret;
|
||||
/* LE to native. */
|
||||
codepoint_t cp = SVAL(&v,0);
|
||||
cp = toupper_m(cp);
|
||||
/* native to LE. */
|
||||
SSVAL(&ret,0,cp);
|
||||
return ret;
|
||||
}
|
||||
|
@ -287,7 +287,7 @@ static size_t push_ucs2(const void *base_ptr, void *dest, const char *src, size_
|
||||
terminated if STR_TERMINATE isn't set. */
|
||||
|
||||
for (i = 0; i < (ret / 2) && i < (dest_len / 2) && dest_ucs2[i]; i++) {
|
||||
smb_ucs2_t v = toupper_m(dest_ucs2[i]);
|
||||
smb_ucs2_t v = toupper_w(dest_ucs2[i]);
|
||||
if (v != dest_ucs2[i]) {
|
||||
dest_ucs2[i] = v;
|
||||
}
|
||||
|
@ -129,7 +129,7 @@ static int ms_fnmatch_core(const smb_ucs2_t *p, const smb_ucs2_t *n,
|
||||
if (is_case_sensitive) {
|
||||
return -1;
|
||||
}
|
||||
if (toupper_m(c) != toupper_m(*n)) {
|
||||
if (toupper_w(c) != toupper_w(*n)) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user