forked from osmocom/wireshark
SMB sidsnooping: use sid as key and name as value
Fixes "cast from 'const char *' to 'char *' drops const qualifier [-Wcast-qual]", but changes the internal representation of sid_name_table. Change-Id: Ia853c3cf3010ea0cd1e2c975a23dd97e15be0fd6 Reviewed-on: https://code.wireshark.org/review/12157 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Reviewed-by: Dario Lombardo <lomato@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: João Valverde <j@v6e.pt> Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
parent
20a41fae76
commit
58dc5b05b9
|
@ -57,36 +57,20 @@ static gboolean lsa_policy_information_tap_installed = FALSE;
|
|||
static gboolean samr_query_dispinfo_tap_installed = FALSE;
|
||||
|
||||
|
||||
char *
|
||||
const char *
|
||||
find_sid_name(const char *sid)
|
||||
{
|
||||
sid_name *sn;
|
||||
sid_name old_sn;
|
||||
|
||||
old_sn.sid=(char*)sid;
|
||||
sn=(sid_name *)g_hash_table_lookup(sid_name_table, &old_sn);
|
||||
if(!sn){
|
||||
return NULL;
|
||||
}
|
||||
return sn->name;
|
||||
return (const char *)g_hash_table_lookup(sid_name_table, sid);
|
||||
}
|
||||
|
||||
static void
|
||||
add_sid_name_mapping(char *sid, char *name)
|
||||
add_sid_name_mapping(const char *sid, const char *name)
|
||||
{
|
||||
sid_name *sn;
|
||||
sid_name old_sn;
|
||||
|
||||
old_sn.sid=sid;
|
||||
sn=(sid_name *)g_hash_table_lookup(sid_name_table, &old_sn);
|
||||
if(sn){
|
||||
if (find_sid_name(sid)) {
|
||||
return;
|
||||
}
|
||||
|
||||
sn=wmem_new(wmem_file_scope(), sid_name);
|
||||
sn->sid=g_strdup(sid);
|
||||
sn->name=g_strdup(name);
|
||||
g_hash_table_insert(sid_name_table, sn, sn);
|
||||
g_hash_table_insert(sid_name_table, g_strdup(sid), g_strdup(name));
|
||||
}
|
||||
|
||||
|
||||
|
@ -257,37 +241,6 @@ lsa_policy_information(void *dummy _U_, packet_info *pinfo _U_, epan_dissect_t *
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
sid_name_key_destroy(gpointer key_arg)
|
||||
{
|
||||
sid_name *sn = (sid_name *)key_arg;
|
||||
|
||||
g_free((gpointer)sn->sid);
|
||||
g_free((gpointer)sn->name);
|
||||
}
|
||||
|
||||
static gint
|
||||
sid_name_equal(gconstpointer k1, gconstpointer k2)
|
||||
{
|
||||
const sid_name *sn1 = (const sid_name *)k1;
|
||||
const sid_name *sn2 = (const sid_name *)k2;
|
||||
|
||||
return !strcmp(sn1->sid, sn2->sid);
|
||||
}
|
||||
|
||||
static guint
|
||||
sid_name_hash(gconstpointer k)
|
||||
{
|
||||
const sid_name *sn = (const sid_name *)k;
|
||||
int i, sum;
|
||||
|
||||
for(sum=0,i=(int)strlen(sn->sid)-1;i>=0;i--){
|
||||
sum+=sn->sid[i];
|
||||
}
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
|
||||
static gint
|
||||
ctx_handle_equal(gconstpointer k1, gconstpointer k2)
|
||||
|
@ -321,8 +274,8 @@ sid_snooping_init(void)
|
|||
samr_query_dispinfo_tap_installed=FALSE;
|
||||
}
|
||||
|
||||
sid_name_table = g_hash_table_new_full(sid_name_hash, sid_name_equal,
|
||||
sid_name_key_destroy, NULL);
|
||||
sid_name_table = g_hash_table_new_full(g_str_hash, g_str_equal,
|
||||
g_free, g_free);
|
||||
ctx_handle_table = g_hash_table_new(ctx_handle_hash, ctx_handle_equal);
|
||||
/* TODO this code needs to be rewritten from scratch
|
||||
disabling it now so that it won't cause wireshark to abort due to
|
||||
|
|
|
@ -31,12 +31,7 @@
|
|||
*/
|
||||
WS_DLL_PUBLIC GHashTable *sid_name_table;
|
||||
|
||||
typedef struct _sid_name {
|
||||
char *sid;
|
||||
char *name;
|
||||
} sid_name;
|
||||
|
||||
WS_DLL_PUBLIC
|
||||
char *find_sid_name(const char *sid);
|
||||
const char *find_sid_name(const char *sid);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -42,12 +42,12 @@ smbsids_packet(void *pss _U_, packet_info *pinfo _U_, epan_dissect_t *edt _U_, c
|
|||
}
|
||||
|
||||
static void
|
||||
enum_sids(gpointer key _U_, gpointer value, gpointer userdata _U_)
|
||||
enum_sids(gpointer key, gpointer value, gpointer userdata _U_)
|
||||
{
|
||||
sid_name *sn = (sid_name *)value;
|
||||
const char *sid = (const char *)key;
|
||||
const char *name = (const char *)value;
|
||||
|
||||
printf("%-60s %s\n", sn->sid, sn->name);
|
||||
return;
|
||||
printf("%-60s %s\n", sid, name);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue