summaryrefslogtreecommitdiff
path: root/source3/smbd/mangle_hash.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd/mangle_hash.c')
-rw-r--r--source3/smbd/mangle_hash.c22
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;
}