diff options
Diffstat (limited to 'source3/smbd/mangle_hash.c')
-rw-r--r-- | source3/smbd/mangle_hash.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/source3/smbd/mangle_hash.c b/source3/smbd/mangle_hash.c index 69ecf77834..ebd93ff5d0 100644 --- a/source3/smbd/mangle_hash.c +++ b/source3/smbd/mangle_hash.c @@ -21,6 +21,7 @@ */ #include "includes.h" +#include "smbd/globals.h" /* -------------------------------------------------------------------------- ** * Other stuff... @@ -52,19 +53,13 @@ * */ -static char magic_char = '~'; - static const char basechars[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_-!@#$%"; #define MANGLE_BASE (sizeof(basechars)/sizeof(char)-1) -static unsigned char *chartest; - #define mangle(V) ((char)(basechars[(V) % MANGLE_BASE])) #define BASECHAR_MASK 0xf0 #define isbasechar(C) ( (chartest[ ((C) & 0xff) ]) & BASECHAR_MASK ) -static TDB_CONTEXT *tdb_mangled_cache; - /* -------------------------------------------------------------------- */ static NTSTATUS has_valid_83_chars(const smb_ucs2_t *s, bool allow_wildcards) @@ -281,6 +276,7 @@ static bool is_8_3(const char *fname, bool check_case, bool allow_wildcards, smb_ucs2_t *ucs2name; NTSTATUS ret = NT_STATUS_UNSUCCESSFUL; size_t size; + char magic_char; magic_char = lp_magicchar(p); @@ -362,6 +358,7 @@ static void init_chartest( void ) static bool is_mangled(const char *s, const struct share_params *p) { char *magic; + char magic_char; magic_char = lp_magicchar(p); @@ -468,6 +465,7 @@ static bool lookup_name_from_8_3(TALLOC_CTX *ctx, TDB_DATA data_val; char *saved_ext = NULL; char *s = talloc_strdup(ctx, in); + char magic_char; magic_char = lp_magicchar(p); @@ -525,7 +523,7 @@ static bool lookup_name_from_8_3(TALLOC_CTX *ctx, Do the actual mangling to 8.3 format. *****************************************************************************/ -static bool to_8_3(const char *in, char out[13], int default_case) +static bool to_8_3(char magic_char, const char *in, char out[13], int default_case) { int csum; char *p; @@ -604,6 +602,7 @@ static bool must_mangle(const char *name, smb_ucs2_t *name_ucs2 = NULL; NTSTATUS status; size_t converted_size; + char magic_char; magic_char = lp_magicchar(p); @@ -639,6 +638,7 @@ static bool hash_name_to_8_3(const char *in, { smb_ucs2_t *in_ucs2 = NULL; size_t converted_size; + char magic_char; magic_char = lp_magicchar(p); @@ -659,7 +659,7 @@ static bool hash_name_to_8_3(const char *in, } SAFE_FREE(in_ucs2); - if (!to_8_3(in, out, default_case)) { + if (!to_8_3(magic_char, in, out, default_case)) { return False; } @@ -673,7 +673,7 @@ static bool hash_name_to_8_3(const char *in, the following provides the abstraction layer to make it easier to drop in an alternative mangling implementation */ -static struct mangle_fns mangle_fns = { +static const struct mangle_fns mangle_hash_fns = { mangle_reset, is_mangled, must_mangle, @@ -683,7 +683,7 @@ static struct mangle_fns mangle_fns = { }; /* return the methods for this mangling implementation */ -struct mangle_fns *mangle_hash_init(void) +const struct mangle_fns *mangle_hash_init(void) { mangle_reset(); @@ -691,5 +691,5 @@ struct mangle_fns *mangle_hash_init(void) tdb_mangled_cache = tdb_open_ex("mangled_cache", 1031, TDB_INTERNAL, (O_RDWR|O_CREAT), 0644, NULL, fast_string_hash); - return &mangle_fns; + return &mangle_hash_fns; } |