summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/smbd/mangle_hash.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/source3/smbd/mangle_hash.c b/source3/smbd/mangle_hash.c
index 3582b7a0a4..9b40d717ce 100644
--- a/source3/smbd/mangle_hash.c
+++ b/source3/smbd/mangle_hash.c
@@ -52,8 +52,6 @@
*
*/
-static char magic_char = '~';
-
static const char basechars[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_-!@#$%";
#define MANGLE_BASE (sizeof(basechars)/sizeof(char)-1)
@@ -281,6 +279,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 +361,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 +468,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 +526,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 +605,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 +641,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 +662,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;
}