First part of fix for bug 8310 - toupper_ascii() is broken on big-endian systems
authorJeremy Allison <jra@samba.org>
Tue, 19 Jul 2011 20:19:29 +0000 (13:19 -0700)
committerJeremy Allison <jra@samba.org>
Tue, 19 Jul 2011 20:19:29 +0000 (13:19 -0700)
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.

12 files changed:
lib/util/charset/charset.h
lib/util/charset/util_unistr_w.c
lib/util/util_str_common.c
source3/auth/pass_check.c
source3/client/clitar.c
source3/lib/username.c
source3/lib/util_str.c
source3/param/loadparm.c
source3/passdb/passdb.c
source3/smbd/mangle_hash.c
source3/smbd/mangle_hash2.c
source3/web/swat.c

index b36c461003bf6b76639221c062ea2884f33da8b9..08bb4533d22915e8466f3abf7009241bdc9d43cc 100644 (file)
@@ -257,10 +257,6 @@ 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);
-int toupper_ascii(int c);
-int tolower_ascii(int c);
-int isupper_ascii(int c);
-int islower_ascii(int c);
 
 /*
  *   Define stub for charset module which implements 8-bit encoding with gaps.
index 3fbed7f67cb3f2c928e0db9af3fd1594edebec40..fc6d3747bd2670cff1e5b2c0fd116cfd30ee163b 100644 (file)
@@ -252,41 +252,3 @@ int strcmp_wa(const smb_ucs2_t *a, const char *b)
        }
        return (*(COPY_UCS2_CHAR(&cp,a)) - UCS2_CHAR(*b));
 }
-
-/*************************************************************
- 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));
-}
index fe78d65020bfb6d9879db2a994e1fbf49279f74e..20682f9935549e9313d8551a32803fda66b2a8ff 100644 (file)
@@ -43,7 +43,7 @@ _PUBLIC_ int strwicmp(const char *psz1, const char *psz2)
                        psz1++;
                while (isspace((int)*psz2))
                        psz2++;
-               if (toupper_ascii((unsigned char)*psz1) != toupper_ascii((unsigned char)*psz2)
+               if (toupper_m((unsigned char)*psz1) != toupper_m((unsigned char)*psz2)
                    || *psz1 == '\0'
                    || *psz2 == '\0')
                        break;
index 714cc968a789376ad21f753a423fe22516de2eb8..74d6f1ffbc88f38f9af6f88c200a7438819a0535 100644 (file)
@@ -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)) {
index a5de8ebafe58720ddc21ce736c0ff93f7bd944dc..3fff081ca0262e092c316581fd90f5ff755efa95 100644 (file)
@@ -473,7 +473,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++;
        }
index d5da5321242d14d84cf36383607e09e6b0695d70..925b44bb06c96b28140ba0acb45092d50d2d6617 100644 (file)
@@ -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);
index a348b389e8659c84fb89672cbf2eebbede5f2ba7..baa5a1f0464a9033f59d7c996877a5371dbdb311 100644 (file)
@@ -470,7 +470,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++;
        }
 
index 1258709856d648d7d63fd9d93a0f08261a523042..3b4ff6a7998e3415b8acd054584f96985c9ab6fa 100644 (file)
@@ -6923,9 +6923,9 @@ static bool handle_dos_charset(struct loadparm_context *unused, int snum, const
        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;
index 5116396cd1b3aab9b8773284baa7c2e55685ba44..faa608cc7851019c6b81d30af3dc8fdefd47fc00 100644 (file)
@@ -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);
index a51ea6b208e27be9db22b6b9823a92c13149f27f..0238083e38c19bf29878bad6635096c9f24a7933 100644 (file)
@@ -424,8 +424,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. */
        }
@@ -479,7 +479,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 '.' */
index 4de80cbe31b1c42faf93bd5fc195913bc0e46e21..09cd44d5af313f09aeacc9106fb7eb066a559c6d 100644 (file)
@@ -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;
        }
@@ -737,7 +737,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] = '_';
@@ -758,7 +758,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);
                        }
                }
        }
index 97c9613e25e010ed01ecf8a943b554babee79217..15632b763a126223a6501d38c1ec28ddc8084b3a 100644 (file)
@@ -124,7 +124,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';