mirror of
https://github.com/samba-team/samba.git
synced 2025-08-02 00:22:11 +03:00
Actually include some *information* in the mangle debug messages.
In particular this shows the filename, prefix and counters involved.
The unicode -> unix converion only occours for the error case.
Andrew Bartlett
(This used to be commit 9c8de8c6cf
)
This commit is contained in:
@ -2,6 +2,7 @@
|
|||||||
Unix SMB/CIFS implementation.
|
Unix SMB/CIFS implementation.
|
||||||
Name mangling with persistent tdb
|
Name mangling with persistent tdb
|
||||||
Copyright (C) Simo Sorce 2001
|
Copyright (C) Simo Sorce 2001
|
||||||
|
Copyright (C) Andrew Bartlett 2002
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -272,7 +273,10 @@ smb_ucs2_t *mangle(const smb_ucs2_t *unmangled)
|
|||||||
pos--;
|
pos--;
|
||||||
if (pos == 0)
|
if (pos == 0)
|
||||||
{
|
{
|
||||||
DEBUG(0, ("mangle: unable to mangle file name!\n"));
|
char *unmangled_unix = acnv_u2ux(unmangled);
|
||||||
|
|
||||||
|
DEBUG(0, ("mangle: unable to mangle file name (%s)!\n",unmangled_unix));
|
||||||
|
SAFE_FREE(unmangled_unix);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
strncpy_w(temp, umpref, pos);
|
strncpy_w(temp, umpref, pos);
|
||||||
@ -301,8 +305,10 @@ smb_ucs2_t *mangle(const smb_ucs2_t *unmangled)
|
|||||||
{
|
{
|
||||||
if (tdb_error(mangle_tdb) != TDB_ERR_EXISTS)
|
if (tdb_error(mangle_tdb) != TDB_ERR_EXISTS)
|
||||||
{
|
{
|
||||||
DEBUG(0, ("mangle: database store error: %s\n",
|
char *unmangled_unix = acnv_u2ux(unmangled);
|
||||||
tdb_errorstr(mangle_tdb)));
|
DEBUG(0, ("mangle: database store error: %s for filename: %s\n",
|
||||||
|
tdb_errorstr(mangle_tdb), unmangled_unix));
|
||||||
|
SAFE_FREE(unmangled_unix);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -310,7 +316,10 @@ smb_ucs2_t *mangle(const smb_ucs2_t *unmangled)
|
|||||||
/* lock the mangle counter for this prefix */
|
/* lock the mangle counter for this prefix */
|
||||||
if (tdb_chainlock(mangle_tdb, klock))
|
if (tdb_chainlock(mangle_tdb, klock))
|
||||||
{
|
{
|
||||||
DEBUG(0,("mangle: failed to lock database\n!"));
|
char *unmangled_unix = acnv_u2ux(unmangled);
|
||||||
|
|
||||||
|
DEBUG(0,("mangle: failed to lock database for filename %s\n!", unmangled_unix));
|
||||||
|
SAFE_FREE(unmangled_unix);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
tclock = True;
|
tclock = True;
|
||||||
@ -318,8 +327,11 @@ smb_ucs2_t *mangle(const smb_ucs2_t *unmangled)
|
|||||||
data = tdb_fetch(mangle_tdb, klock);
|
data = tdb_fetch(mangle_tdb, klock);
|
||||||
if (!data.dptr)
|
if (!data.dptr)
|
||||||
{
|
{
|
||||||
DEBUG(0, ("mangle: database retrieval error: %s\n",
|
char *unmangled_unix = acnv_u2ux(unmangled);
|
||||||
tdb_errorstr(mangle_tdb)));
|
|
||||||
|
DEBUG(0, ("mangle: database retrieval error: %s for filename: %s\n",
|
||||||
|
tdb_errorstr(mangle_tdb), unmangled_unix));
|
||||||
|
SAFE_FREE(unmangled_unix);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
c = *((uint32 *)data.dptr);
|
c = *((uint32 *)data.dptr);
|
||||||
@ -327,7 +339,10 @@ smb_ucs2_t *mangle(const smb_ucs2_t *unmangled)
|
|||||||
|
|
||||||
if (c > MANGLE_COUNTER_MAX)
|
if (c > MANGLE_COUNTER_MAX)
|
||||||
{
|
{
|
||||||
DEBUG(0, ("mangle: error, counter overflow!\n"));
|
char *unmangled_unix = acnv_u2ux(unmangled);
|
||||||
|
|
||||||
|
DEBUG(0, ("mangle: error, counter overflow (max=%d, counter=%d) for file: [%s] prefix (dos charset): [%s]!\n", MANGLE_COUNTER_MAX, c, unmangled_unix, prefix));
|
||||||
|
SAFE_FREE(unmangled_unix);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -340,7 +355,10 @@ smb_ucs2_t *mangle(const smb_ucs2_t *unmangled)
|
|||||||
if (!ud83_len) goto done;
|
if (!ud83_len) goto done;
|
||||||
if (ud83_len > 8)
|
if (ud83_len > 8)
|
||||||
{
|
{
|
||||||
DEBUG(0, ("mangle: darn, logic error aborting!\n"));
|
char *unmangled_unix = acnv_u2ux(unmangled);
|
||||||
|
|
||||||
|
DEBUG(0, ("mangle: darn, logic error aborting! Filename was %s\n", unmangled_unix));
|
||||||
|
SAFE_FREE(unmangled_unix);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,8 +371,11 @@ smb_ucs2_t *mangle(const smb_ucs2_t *unmangled)
|
|||||||
|
|
||||||
if (tdb_store(mangle_tdb, key, data, TDB_INSERT) != TDB_SUCCESS)
|
if (tdb_store(mangle_tdb, key, data, TDB_INSERT) != TDB_SUCCESS)
|
||||||
{
|
{
|
||||||
DEBUG(0, ("mangle: database store error: %s\n",
|
char *unmangled_unix = acnv_u2ux(unmangled);
|
||||||
tdb_errorstr(mangle_tdb)));
|
|
||||||
|
DEBUG(0, ("mangle: database store error: %s for filename: %s\n",
|
||||||
|
tdb_errorstr(mangle_tdb), unmangled_unix));
|
||||||
|
SAFE_FREE(unmangled_unix);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -367,8 +388,10 @@ smb_ucs2_t *mangle(const smb_ucs2_t *unmangled)
|
|||||||
data.dptr = mufname;
|
data.dptr = mufname;
|
||||||
if (tdb_store(mangle_tdb, key, data, TDB_INSERT) != TDB_SUCCESS)
|
if (tdb_store(mangle_tdb, key, data, TDB_INSERT) != TDB_SUCCESS)
|
||||||
{
|
{
|
||||||
DEBUG(0, ("mangle: database store failed: %s\n",
|
char *unmangled_unix = acnv_u2ux(unmangled);
|
||||||
tdb_errorstr(mangle_tdb)));
|
DEBUG(0, ("mangle: database store failed: %s for filename: %s\n",
|
||||||
|
tdb_errorstr(mangle_tdb), unmangled_unix));
|
||||||
|
SAFE_FREE(unmangled_unix);
|
||||||
|
|
||||||
/* try to delete the mangled key entry to avoid later inconsistency */
|
/* try to delete the mangled key entry to avoid later inconsistency */
|
||||||
slprintf(keystr, sizeof(keystr)-1, "%s%s", MANGLED_PREFIX, mufname);
|
slprintf(keystr, sizeof(keystr)-1, "%s%s", MANGLED_PREFIX, mufname);
|
||||||
@ -393,8 +416,10 @@ smb_ucs2_t *mangle(const smb_ucs2_t *unmangled)
|
|||||||
/* store the counter */
|
/* store the counter */
|
||||||
if(tdb_store(mangle_tdb, klock, data, TDB_REPLACE) != TDB_SUCCESS)
|
if(tdb_store(mangle_tdb, klock, data, TDB_REPLACE) != TDB_SUCCESS)
|
||||||
{
|
{
|
||||||
DEBUG(0, ("mangle: database store failed: %s\n",
|
char *unmangled_unix = acnv_u2ux(unmangled);
|
||||||
tdb_errorstr(mangle_tdb)));
|
DEBUG(0, ("mangle: database store failed: %s for filename: %s\n",
|
||||||
|
tdb_errorstr(mangle_tdb), unmangled_unix));
|
||||||
|
SAFE_FREE(unmangled_unix);
|
||||||
/* try to delete the mangled and long key entry to avoid later inconsistency */
|
/* try to delete the mangled and long key entry to avoid later inconsistency */
|
||||||
slprintf(keystr, sizeof(keystr)-1, "%s%s", MANGLED_PREFIX, mufname);
|
slprintf(keystr, sizeof(keystr)-1, "%s%s", MANGLED_PREFIX, mufname);
|
||||||
key.dptr = keystr;
|
key.dptr = keystr;
|
||||||
|
Reference in New Issue
Block a user