diff options
author | Jeremy Allison <jra@samba.org> | 2011-07-19 12:21:23 -0700 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2011-07-26 21:54:33 +0200 |
commit | 9deadb668d82a0b608123c3940075e92ea93c009 (patch) | |
tree | fe3f5400743fad01ff32b979a27735326de0a20c | |
parent | 9f9873c0aaee4e64ead5a60a76174d2f9c1406f0 (diff) | |
download | samba-9deadb668d82a0b608123c3940075e92ea93c009.tar.gz samba-9deadb668d82a0b608123c3940075e92ea93c009.tar.xz samba-9deadb668d82a0b608123c3940075e92ea93c009.zip |
First part of fix for bug 8310 - toupper_ascii() is broken on big-endian systems
Remove
int toupper_ascii(int c);
int tolower_ascii(int c);
int isupper_ascii(int c);
int islower_ascii(int c);
and replace with their _m equivalents, as they are identical.
(cherry picked from commit 5b6a34128a0e0bc33c255dc53c9fb9fd8e6d34d8)
-rw-r--r-- | source3/auth/pass_check.c | 4 | ||||
-rw-r--r-- | source3/client/clitar.c | 2 | ||||
-rw-r--r-- | source3/include/proto.h | 4 | ||||
-rw-r--r-- | source3/lib/username.c | 4 | ||||
-rw-r--r-- | source3/lib/util_str.c | 4 | ||||
-rw-r--r-- | source3/lib/util_unistr.c | 38 | ||||
-rw-r--r-- | source3/param/loadparm.c | 6 | ||||
-rw-r--r-- | source3/passdb/passdb.c | 8 | ||||
-rw-r--r-- | source3/smbd/mangle_hash.c | 6 | ||||
-rw-r--r-- | source3/smbd/mangle_hash2.c | 12 | ||||
-rw-r--r-- | source3/web/swat.c | 2 |
11 files changed, 24 insertions, 66 deletions
diff --git a/source3/auth/pass_check.c b/source3/auth/pass_check.c index a7a1c3d8f5d..77ee31ae54c 100644 --- a/source3/auth/pass_check.c +++ b/source3/auth/pass_check.c @@ -518,9 +518,9 @@ static NTSTATUS string_combinations2(char *s, int offset, for (i = offset; i < (len - (N - 1)); i++) { char c = s[i]; - if (!islower_ascii(c)) + if (!islower_m(c)) continue; - s[i] = toupper_ascii(c); + s[i] = toupper_m(c); nt_status = string_combinations2(s, i + 1, fn, N - 1, private_data); if (!NT_STATUS_EQUAL(nt_status, NT_STATUS_WRONG_PASSWORD)) { diff --git a/source3/client/clitar.c b/source3/client/clitar.c index f8178c7db52..542ecca22f2 100644 --- a/source3/client/clitar.c +++ b/source3/client/clitar.c @@ -490,7 +490,7 @@ static int strslashcmp(char *s1, char *s2) { char *s1_0=s1; - while(*s1 && *s2 && (*s1 == *s2 || tolower_ascii(*s1) == tolower_ascii(*s2) || + while(*s1 && *s2 && (*s1 == *s2 || tolower_m(*s1) == tolower_m(*s2) || (*s1 == '\\' && *s2=='/') || (*s1 == '/' && *s2=='\\'))) { s1++; s2++; } diff --git a/source3/include/proto.h b/source3/include/proto.h index 6291f111abb..cf418849d6b 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -1051,10 +1051,6 @@ int strcmp_wa(const smb_ucs2_t *a, const char *b); int strncmp_wa(const smb_ucs2_t *a, const char *b, size_t len); smb_ucs2_t *strpbrk_wa(const smb_ucs2_t *s, const char *p); smb_ucs2_t *strstr_wa(const smb_ucs2_t *s, const char *ins); -int toupper_ascii(int c); -int tolower_ascii(int c); -int isupper_ascii(int c); -int islower_ascii(int c); /* The following definitions come from lib/version.c */ diff --git a/source3/lib/username.c b/source3/lib/username.c index d5da5321242..925b44bb06c 100644 --- a/source3/lib/username.c +++ b/source3/lib/username.c @@ -196,9 +196,9 @@ static struct passwd *uname_string_combinations2(char *s, TALLOC_CTX *mem_ctx, for (i=offset;i<(len-(N-1));i++) { char c = s[i]; - if (!islower_ascii((int)c)) + if (!islower_m((int)c)) continue; - s[i] = toupper_ascii(c); + s[i] = toupper_m(c); ret = uname_string_combinations2(s, mem_ctx, i+1, fn, N-1); if(ret) return(ret); diff --git a/source3/lib/util_str.c b/source3/lib/util_str.c index cabdf9e491c..733db27b363 100644 --- a/source3/lib/util_str.c +++ b/source3/lib/util_str.c @@ -243,7 +243,7 @@ int strwicmp(const char *psz1, const char *psz2) psz1++; while (isspace((int)*psz2)) psz2++; - if (toupper_ascii(*psz1) != toupper_ascii(*psz2) || + if (toupper_m(*psz1) != toupper_m(*psz2) || *psz1 == '\0' || *psz2 == '\0') break; psz1++; @@ -1406,7 +1406,7 @@ void strlower_m(char *s) (ie. they match for the first 128 chars) */ while (*s && !(((unsigned char)s[0]) & 0x80)) { - *s = tolower_ascii((unsigned char)*s); + *s = tolower_m((unsigned char)*s); s++; } diff --git a/source3/lib/util_unistr.c b/source3/lib/util_unistr.c index 5204e9bb53b..d8a360dfcc3 100644 --- a/source3/lib/util_unistr.c +++ b/source3/lib/util_unistr.c @@ -606,41 +606,3 @@ smb_ucs2_t *strstr_wa(const smb_ucs2_t *s, const char *ins) return NULL; } - -/************************************************************* - ascii only toupper - saves the need for smbd to be in C locale. -*************************************************************/ - -int toupper_ascii(int c) -{ - smb_ucs2_t uc = toupper_m(UCS2_CHAR(c)); - return UCS2_TO_CHAR(uc); -} - -/************************************************************* - ascii only tolower - saves the need for smbd to be in C locale. -*************************************************************/ - -int tolower_ascii(int c) -{ - smb_ucs2_t uc = tolower_m(UCS2_CHAR(c)); - return UCS2_TO_CHAR(uc); -} - -/************************************************************* - ascii only isupper - saves the need for smbd to be in C locale. -*************************************************************/ - -int isupper_ascii(int c) -{ - return isupper_m(UCS2_CHAR(c)); -} - -/************************************************************* - ascii only islower - saves the need for smbd to be in C locale. -*************************************************************/ - -int islower_ascii(int c) -{ - return islower_m(UCS2_CHAR(c)); -} diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 1ec68add75c..0a1a4b063f7 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -7540,9 +7540,9 @@ static bool handle_dos_charset(int snum, const char *pszParmValue, char **ptr) if (len == 4 || len == 5) { /* Don't use StrCaseCmp here as we don't want to initialize iconv. */ - if ((toupper_ascii(pszParmValue[0]) == 'U') && - (toupper_ascii(pszParmValue[1]) == 'T') && - (toupper_ascii(pszParmValue[2]) == 'F')) { + if ((toupper_m(pszParmValue[0]) == 'U') && + (toupper_m(pszParmValue[1]) == 'T') && + (toupper_m(pszParmValue[2]) == 'F')) { if (len == 4) { if (pszParmValue[3] == '8') { is_utf8 = true; diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c index c49fb247117..52c11295120 100644 --- a/source3/passdb/passdb.c +++ b/source3/passdb/passdb.c @@ -407,8 +407,8 @@ bool pdb_gethexpwd(const char *p, unsigned char *pwd) return false; for (i = 0; i < 32; i += 2) { - hinybble = toupper_ascii(p[i]); - lonybble = toupper_ascii(p[i + 1]); + hinybble = toupper_m(p[i]); + lonybble = toupper_m(p[i + 1]); p1 = strchr(hexchars, hinybble); p2 = strchr(hexchars, lonybble); @@ -457,8 +457,8 @@ bool pdb_gethexhours(const char *p, unsigned char *hours) } for (i = 0; i < 42; i += 2) { - hinybble = toupper_ascii(p[i]); - lonybble = toupper_ascii(p[i + 1]); + hinybble = toupper_m(p[i]); + lonybble = toupper_m(p[i + 1]); p1 = strchr(hexchars, hinybble); p2 = strchr(hexchars, lonybble); diff --git a/source3/smbd/mangle_hash.c b/source3/smbd/mangle_hash.c index adeb542c6ed..bafcd03d015 100644 --- a/source3/smbd/mangle_hash.c +++ b/source3/smbd/mangle_hash.c @@ -374,8 +374,8 @@ static bool is_mangled(const char *s, const struct share_params *p) magic = strchr_m( s, magic_char ); while( magic && magic[1] && magic[2] ) { /* 3 chars, 1st is magic. */ if( ('.' == magic[3] || '/' == magic[3] || !(magic[3])) /* Ends with '.' or nul or '/' ? */ - && isbasechar( toupper_ascii(magic[1]) ) /* is 2nd char basechar? */ - && isbasechar( toupper_ascii(magic[2]) ) ) /* is 3rd char basechar? */ + && isbasechar( toupper_m(magic[1]) ) /* is 2nd char basechar? */ + && isbasechar( toupper_m(magic[2]) ) ) /* is 3rd char basechar? */ return( True ); /* If all above, then true, */ magic = strchr_m( magic+1, magic_char ); /* else seek next magic. */ } @@ -429,7 +429,7 @@ static void cache_mangled_name( const char mangled_name[13], s1 = strrchr( mangled_name_key, '.' ); if( s1 && (s2 = strrchr( raw_name, '.' )) ) { size_t i = 1; - while( s1[i] && (tolower_ascii( s1[i] ) == s2[i]) ) + while( s1[i] && (tolower_m( s1[i] ) == s2[i]) ) i++; if( !s1[i] && !s2[i] ) { /* Truncate at the '.' */ diff --git a/source3/smbd/mangle_hash2.c b/source3/smbd/mangle_hash2.c index 4d10089266e..5aafe2f2abb 100644 --- a/source3/smbd/mangle_hash2.c +++ b/source3/smbd/mangle_hash2.c @@ -173,10 +173,10 @@ static void init_tables(void) char_flags[c2] |= FLAG_POSSIBLE2; char_flags[c3] |= FLAG_POSSIBLE3; char_flags[c4] |= FLAG_POSSIBLE4; - char_flags[tolower_ascii(c1)] |= FLAG_POSSIBLE1; - char_flags[tolower_ascii(c2)] |= FLAG_POSSIBLE2; - char_flags[tolower_ascii(c3)] |= FLAG_POSSIBLE3; - char_flags[tolower_ascii(c4)] |= FLAG_POSSIBLE4; + char_flags[tolower_m(c1)] |= FLAG_POSSIBLE1; + char_flags[tolower_m(c2)] |= FLAG_POSSIBLE2; + char_flags[tolower_m(c3)] |= FLAG_POSSIBLE3; + char_flags[tolower_m(c4)] |= FLAG_POSSIBLE4; char_flags[(unsigned char)'.'] |= FLAG_POSSIBLE4; } @@ -734,7 +734,7 @@ static bool hash2_name_to_8_3(const char *name, if (! FLAG_CHECK(lead_chars[i], FLAG_ASCII)) { lead_chars[i] = '_'; } - lead_chars[i] = toupper_ascii(lead_chars[i]); + lead_chars[i] = toupper_m(lead_chars[i]); } for (;i<mangle_prefix;i++) { lead_chars[i] = '_'; @@ -755,7 +755,7 @@ static bool hash2_name_to_8_3(const char *name, char c = dot_p[i]; if (FLAG_CHECK(c, FLAG_ASCII)) { extension[extension_length++] = - toupper_ascii(c); + toupper_m(c); } } } diff --git a/source3/web/swat.c b/source3/web/swat.c index d00ead56b4b..38f647570ff 100644 --- a/source3/web/swat.c +++ b/source3/web/swat.c @@ -123,7 +123,7 @@ static char *stripspaceupper(const char *str) char *p = newstring; while (*str) { - if (*str != ' ') *p++ = toupper_ascii(*str); + if (*str != ' ') *p++ = toupper_m(*str); ++str; } *p = '\0'; |