X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=epan%2Foids.c;h=9d14838fc8f5b9e98671bd53dc8d3f05086e0b88;hb=949c84f46da66f2a7da3d4065b8a99da47976c41;hp=d7c6539a63b4a41a160e08c971f1d3c355cd5cef;hpb=a6415ece0ad102d30ac5dce59b127bcf1bd6d3f1;p=metze%2Fwireshark%2Fwip.git diff --git a/epan/oids.c b/epan/oids.c index d7c6539a63..9d14838fc8 100644 --- a/epan/oids.c +++ b/epan/oids.c @@ -3,8 +3,6 @@ * * (c) 2007, Luis E. Garcia Ontanon * - * $Id$ - * * Wireshark - Network traffic analyzer * By Gerald Combs * Copyright 1998 Gerald Combs @@ -29,11 +27,9 @@ #include #include #include -#include #include -#include "emem.h" #include "wmem/wmem.h" #include "uat.h" #include "prefs.h" @@ -68,6 +64,7 @@ static int debuglevel = 0; * the BER encoding may take 5 octets to encode. */ +#ifdef HAVE_LIBSMI static const oid_value_type_t integer_type = { FT_INT32, BASE_DEC, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, 1, 4, OID_KEY_TYPE_INTEGER, 1}; static const oid_value_type_t bytes_type = { FT_BYTES, BASE_NONE, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 0, -1, OID_KEY_TYPE_BYTES, 0}; static const oid_value_type_t oid_type = { FT_OID, BASE_NONE, BER_CLASS_UNI, BER_UNI_TAG_OID, 1, -1, OID_KEY_TYPE_OID, 0}; @@ -86,6 +83,8 @@ static const oid_value_type_t double_type = { FT_DOUBLE, BASE_DEC, BER_CLAS static const oid_value_type_t ether_type = { FT_ETHER, BASE_NONE, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 6, 6, OID_KEY_TYPE_ETHER, 6}; static const oid_value_type_t string_type = { FT_STRING, BASE_NONE, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 0, -1, OID_KEY_TYPE_STRING, 0}; static const oid_value_type_t date_and_time_type = { FT_STRING, BASE_NONE, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, 8, 11, OID_KEY_TYPE_DATE_AND_TIME, 0}; +#endif /* HAVE_LIBSMI */ + static const oid_value_type_t unknown_type = { FT_BYTES, BASE_NONE, BER_CLASS_ANY, BER_TAG_ANY, 0, -1, OID_KEY_TYPE_WRONG, 0}; static oid_info_t oid_root = { 0, NULL, OID_KIND_UNKNOWN, NULL, &unknown_type, -2, NULL, NULL, NULL}; @@ -109,7 +108,7 @@ static void prepopulate_oids(void) { } } - + static oid_info_t* add_oid(const char* name, oid_kind_t kind, const oid_value_type_t* type, oid_key_t* key, guint oid_len, guint32 *subids) { guint i = 0; @@ -171,8 +170,10 @@ static oid_info_t* add_oid(const char* name, oid_kind_t kind, const oid_value_ty void oid_add(const char* name, guint oid_len, guint32 *subids) { g_assert(subids && *subids <= 2); if (oid_len) { - D(3,("\tOid (from subids): %s %s ",name?name:"NULL", oid_subid2string(subids,oid_len))); + gchar* sub = oid_subid2string(NULL, subids,oid_len); + D(3,("\tOid (from subids): %s %s ",name?name:"NULL", sub)); add_oid(name,OID_KIND_UNKNOWN,NULL,NULL,oid_len,subids); + wmem_free(NULL, sub); } else { D(1,("Failed to add Oid: %s (from subids)",name?name:"NULL")); } @@ -180,26 +181,34 @@ void oid_add(const char* name, guint oid_len, guint32 *subids) { void oid_add_from_string(const char* name, const gchar *oid_str) { guint32* subids; - guint oid_len = oid_string2subid(oid_str, &subids); + guint oid_len = oid_string2subid(NULL, oid_str, &subids); if (oid_len) { - D(3,("\tOid (from string): %s %s ",name?name:"NULL", oid_subid2string(subids,oid_len))); + gchar* sub = oid_subid2string(NULL, subids,oid_len); + D(3,("\tOid (from string): %s %s ",name?name:"NULL", sub)); add_oid(name,OID_KIND_UNKNOWN,NULL,NULL,oid_len,subids); + wmem_free(NULL, sub); } else { D(1,("Failed to add Oid: %s %s ",name?name:"NULL", oid_str?oid_str:NULL)); } + wmem_free(NULL, subids); } extern void oid_add_from_encoded(const char* name, const guint8 *oid, gint oid_len) { - guint32* subids; - guint subids_len = oid_encoded2subid(oid, oid_len, &subids); + guint32* subids = NULL; + guint subids_len = oid_encoded2subid(NULL, oid, oid_len, &subids); if (subids_len) { - D(3,("\tOid (from encoded): %s %s ",name, oid_subid2string(subids,subids_len))); + gchar* sub = oid_subid2string(NULL, subids,subids_len); + D(3,("\tOid (from encoded): %s %s ",name, sub)); add_oid(name,OID_KIND_UNKNOWN,NULL,NULL,subids_len,subids); + wmem_free(NULL, sub); } else { - D(1,("Failed to add Oid: %s [%d]%s ",name?name:"NULL", oid_len,bytestring_to_ep_str(oid, oid_len, ':'))); + gchar* bytestr = bytestring_to_str(NULL, oid, oid_len, ':'); + D(1,("Failed to add Oid: %s [%d]%s ",name?name:"NULL", oid_len, bytestr)); + wmem_free(NULL, bytestr); } + wmem_free(NULL, subids); } #ifdef HAVE_LIBSMI @@ -272,7 +281,7 @@ static char* alnumerize(const char* name) { char c; for (;(c = *r); r++) { - if (isalnum(c) || c == '_' || c == '-' || c == '.') { + if (g_ascii_isalnum(c) || c == '_' || c == '-' || c == '.') { *(w++) = c; } else if (c == ':' && r[1] == ':') { *(w++) = '.'; @@ -560,9 +569,9 @@ static void register_mibs(void) { } else { char* mod_name = smiLoadModule(smi_modules[i].name); if (mod_name) - D(2,("Loaded: '%s'[%d] as %s",smi_modules[i].name,i,mod_name )); + D(2,("Loaded: '%s'[%u] as %s",smi_modules[i].name,i,mod_name )); else - D(1,("Failed to load: '%s'[%d]",smi_modules[i].name,i)); + D(1,("Failed to load: '%s'[%u]",smi_modules[i].name,i)); } } @@ -608,6 +617,7 @@ static void register_mibs(void) { const oid_value_type_t* typedata = get_typedata(smiType); oid_key_t* key; oid_kind_t kind = smikind(smiNode,&key); + char *sub; char *oid = smiRenderOID(smiNode->oidlen, smiNode->oid, SMI_RENDER_QUALIFIED); oid_info_t* oid_data = add_oid(oid, kind, @@ -617,20 +627,25 @@ static void register_mibs(void) { smiNode->oid); smi_free (oid); + sub = oid_subid2string(NULL, smiNode->oid, smiNode->oidlen); D(4,("\t\tNode: kind=%d oid=%s name=%s ", - oid_data->kind, oid_subid2string(smiNode->oid, smiNode->oidlen), oid_data->name )); + oid_data->kind, sub, oid_data->name)); + wmem_free(NULL, sub); if ( typedata && oid_data->value_hfid == -2 ) { SmiNamedNumber* smiEnum; - hf_register_info hf = { &(oid_data->value_hfid), { - oid_data->name, - alnumerize(oid_data->name), - typedata->ft_type, - typedata->display, - NULL, - 0, - smiRenderOID(smiNode->oidlen, smiNode->oid, SMI_RENDER_ALL), - HFILL }}; + hf_register_info hf; + + hf.p_id = &(oid_data->value_hfid); + hf.hfinfo.name = g_strdup(oid_data->name); + hf.hfinfo.abbrev = alnumerize(oid_data->name); + hf.hfinfo.type = typedata->ft_type; + hf.hfinfo.display = typedata->display; + hf.hfinfo.strings = NULL; + hf.hfinfo.bitmask = 0; + hf.hfinfo.blurb = smiRenderOID(smiNode->oidlen, smiNode->oid, SMI_RENDER_ALL); + /* HFILL */ + HFILL_INIT(hf); /* Don't allow duplicate blurb/name */ if (strcmp(hf.hfinfo.blurb, hf.hfinfo.name) == 0) { @@ -645,7 +660,9 @@ static void register_mibs(void) { for(;smiEnum; smiEnum = smiGetNextNamedNumber(smiEnum)) { if (smiEnum->name) { - value_string val = {(guint32)smiEnum->value.value.integer32,g_strdup(smiEnum->name)}; + value_string val; + val.value = (guint32)smiEnum->value.value.integer32; + val.strptr = g_strdup(smiEnum->name); g_array_append_val(vals,val); } } @@ -692,17 +709,20 @@ static void register_mibs(void) { if ((key = oid_data->key)) { for(; key; key = key->next) { - hf_register_info hf = { &(key->hfid), { - key->name, - alnumerize(key->name), - key->ft_type, - key->display, - NULL, - 0, - NULL, - HFILL }}; - - D(5,("\t\t\tIndex: name=%s subids=%d key_type=%d", + hf_register_info hf; + + hf.p_id = &(key->hfid); + hf.hfinfo.name = key->name; + hf.hfinfo.abbrev = alnumerize(key->name); + hf.hfinfo.type = key->ft_type; + hf.hfinfo.display = key->display; + hf.hfinfo.strings = NULL; + hf.hfinfo.bitmask = 0; + hf.hfinfo.blurb = NULL; + /* HFILL */ + HFILL_INIT(hf); + + D(5,("\t\t\tIndex: name=%s subids=%u key_type=%d", key->name, key->num_subids, key->key_type )); if (key->hfid == -2) { @@ -836,16 +856,16 @@ void oids_cleanup(void) { #endif } -const char* oid_subid2string(guint32* subids, guint len) { - return rel_oid_subid2string(subids, len, TRUE); +char* oid_subid2string(wmem_allocator_t *scope, guint32* subids, guint len) { + return rel_oid_subid2string(scope, subids, len, TRUE); } -const char* rel_oid_subid2string(guint32* subids, guint len, gboolean is_absolute) { +char* rel_oid_subid2string(wmem_allocator_t *scope, guint32* subids, guint len, gboolean is_absolute) { char *s, *w; if(!subids || len == 0) - return "*** Empty OID ***"; + return wmem_strdup(scope, "*** Empty OID ***"); - s = (char *)ep_alloc0(((len)*11)+2); + s = (char *)wmem_alloc0(scope, ((len)*11)+2); w = s; if (!is_absolute) @@ -869,9 +889,9 @@ static guint check_num_oid(const char* str) { if (!r) return 0; do { - D(9,("\tcheck_num_oid: '%c' %d",*r,n)); + D(9,("\tcheck_num_oid: '%c' %u",*r,n)); switch(*r) { - case '.': case '\0': + case '.': case '\0': n++; if (c == '.') return 0; break; @@ -886,7 +906,7 @@ static guint check_num_oid(const char* str) { return n; } -guint oid_string2subid(const char* str, guint32** subids_p) { +guint oid_string2subid(wmem_allocator_t *scope, const char* str, guint32** subids_p) { const char* r = str; guint32* subids; guint32* subids_overflow; @@ -904,7 +924,7 @@ guint oid_string2subid(const char* str, guint32** subids_p) { return 0; } - *subids_p = subids = (guint32 *)ep_alloc0(sizeof(guint32)*n); + *subids_p = subids = wmem_alloc0_array(scope, guint32, n); subids_overflow = subids + n; do switch(*r) { case '.': @@ -934,10 +954,10 @@ guint oid_string2subid(const char* str, guint32** subids_p) { } -guint oid_encoded2subid(const guint8 *oid_bytes, gint oid_len, guint32** subids_p) { - return oid_encoded2subid_sub(oid_bytes, oid_len, subids_p, TRUE); +guint oid_encoded2subid(wmem_allocator_t *scope, const guint8 *oid_bytes, gint oid_len, guint32** subids_p) { + return oid_encoded2subid_sub(scope, oid_bytes, oid_len, subids_p, TRUE); } -guint oid_encoded2subid_sub(const guint8 *oid_bytes, gint oid_len, guint32** subids_p, +guint oid_encoded2subid_sub(wmem_allocator_t *scope, const guint8 *oid_bytes, gint oid_len, guint32** subids_p, gboolean is_first) { gint i; guint n = is_first ? 1 : 0; @@ -951,7 +971,7 @@ guint oid_encoded2subid_sub(const guint8 *oid_bytes, gint oid_len, guint32** sub for (i=0; i= subid_overflow || subid > 0xffffffff) { - *subids_p=NULL; + /* scope may be NULL in which case we must free our + * useless buffer before returning */ + wmem_free(scope, *subids_p); + *subids_p = NULL; return 0; } @@ -1027,32 +1050,38 @@ done: } -oid_info_t* oid_get_from_encoded(const guint8 *bytes, gint byteslen, guint32** subids_p, guint* matched_p, guint* left_p) { - guint subids_len = oid_encoded2subid(bytes, byteslen, subids_p); +oid_info_t* oid_get_from_encoded(wmem_allocator_t *scope, const guint8 *bytes, gint byteslen, guint32** subids_p, guint* matched_p, guint* left_p) { + guint subids_len = oid_encoded2subid(scope, bytes, byteslen, subids_p); return oid_get(subids_len, *subids_p, matched_p, left_p); } -oid_info_t* oid_get_from_string(const gchar *oid_str, guint32** subids_p, guint* matched, guint* left) { - guint subids_len = oid_string2subid(oid_str, subids_p); +oid_info_t* oid_get_from_string(wmem_allocator_t *scope, const gchar *oid_str, guint32** subids_p, guint* matched, guint* left) { + guint subids_len = oid_string2subid(scope, oid_str, subids_p); return oid_get(subids_len, *subids_p, matched, left); } -const gchar *oid_resolved_from_encoded(const guint8 *oid, gint oid_len) { - guint32 *subid_oid; - guint subid_oid_length = oid_encoded2subid(oid, oid_len, &subid_oid); +gchar *oid_resolved_from_encoded(wmem_allocator_t *scope, const guint8 *oid, gint oid_len) { + guint32 *subid_oid = NULL; + gchar * ret; + guint subid_oid_length = oid_encoded2subid(NULL, oid, oid_len, &subid_oid); - return oid_resolved(subid_oid_length, subid_oid); + ret = oid_resolved(scope, subid_oid_length, subid_oid); + wmem_free(NULL, subid_oid); + return ret; } -const gchar *rel_oid_resolved_from_encoded(const guint8 *oid, gint oid_len) { - guint32 *subid_oid; - guint subid_oid_length = oid_encoded2subid_sub(oid, oid_len, &subid_oid, FALSE); +gchar *rel_oid_resolved_from_encoded(wmem_allocator_t *scope, const guint8 *oid, gint oid_len) { + guint32 *subid_oid = NULL; + gchar* ret; + guint subid_oid_length = oid_encoded2subid_sub(NULL, oid, oid_len, &subid_oid, FALSE); - return rel_oid_subid2string(subid_oid, subid_oid_length, FALSE); + ret = rel_oid_subid2string(scope, subid_oid, subid_oid_length, FALSE); + wmem_free(NULL, subid_oid); + return ret; } -guint oid_subid2encoded(guint subids_len, guint32* subids, guint8** bytes_p) { +guint oid_subid2encoded(wmem_allocator_t *scope, guint subids_len, guint32* subids, guint8** bytes_p) { guint bytelen = 0; guint i; guint32 subid; @@ -1076,9 +1105,9 @@ guint oid_subid2encoded(guint subids_len, guint32* subids, guint8** bytes_p) { } else { bytelen += 5; } - } + } - *bytes_p = b = (guint8 *)ep_alloc(bytelen); + *bytes_p = b = (guint8 *)wmem_alloc(scope, bytelen); for (subid=subids[0] * 40, i = 1; i> 7) | 0x80; case 1: *(b++) = subid & 0x0000007F ; break; } - } + } return bytelen; } -const gchar* oid_encoded2string(const guint8* encoded, guint len) { - guint32* subids; - guint subids_len = oid_encoded2subid(encoded, len, &subids); +gchar* oid_encoded2string(wmem_allocator_t *scope, const guint8* encoded, guint len) { + guint32* subids = NULL; + gchar* ret; + guint subids_len = oid_encoded2subid(NULL, encoded, len, &subids); if (subids_len) { - return oid_subid2string(subids,subids_len); + ret = oid_subid2string(scope, subids,subids_len); } else { - return ""; + ret = wmem_strdup(scope, ""); } + + wmem_free(NULL, subids); + return ret; } -const gchar* rel_oid_encoded2string(const guint8* encoded, guint len) { - guint32* subids; - guint subids_len = oid_encoded2subid_sub(encoded, len, &subids, FALSE); +gchar* rel_oid_encoded2string(wmem_allocator_t *scope, const guint8* encoded, guint len) { + guint32* subids = NULL; + gchar* ret; + guint subids_len = oid_encoded2subid_sub(NULL, encoded, len, &subids, FALSE); if (subids_len) { - return rel_oid_subid2string(subids,subids_len, FALSE); + ret = rel_oid_subid2string(scope, subids,subids_len, FALSE); } else { - return ""; + ret = wmem_strdup(scope, ""); } + + wmem_free(NULL, subids); + return ret; } -guint oid_string2encoded(const char *oid_str, guint8 **bytes) { +guint oid_string2encoded(wmem_allocator_t *scope, const char *oid_str, guint8 **bytes) { guint32* subids; guint32 subids_len; guint byteslen; - if ( ( subids_len = oid_string2subid(oid_str, &subids) ) - && - ( byteslen = oid_subid2encoded(subids_len, subids, bytes) ) ) { - return byteslen; - } + if ( (subids_len = oid_string2subid(NULL, oid_str, &subids)) && + (byteslen = oid_subid2encoded(scope, subids_len, subids, bytes)) ) { + wmem_free(NULL, subids); + return byteslen; + } + wmem_free(NULL, subids); return 0; } -const gchar *oid_resolved_from_string(const gchar *oid_str) { - guint32 *subid_oid; - guint subid_oid_length = oid_string2subid(oid_str, &subid_oid); +gchar *oid_resolved_from_string(wmem_allocator_t *scope, const gchar *oid_str) { + guint32 *subid_oid; + guint subid_oid_length; + gchar *resolved; + + subid_oid_length = oid_string2subid(NULL, oid_str, &subid_oid); + resolved = oid_resolved(scope, subid_oid_length, subid_oid); + + wmem_free(NULL, subid_oid); - return oid_resolved(subid_oid_length, subid_oid); + return resolved; } -const gchar *oid_resolved(guint32 num_subids, guint32* subids) { +gchar *oid_resolved(wmem_allocator_t *scope, guint32 num_subids, guint32* subids) { guint matched; guint left; oid_info_t* oid; if(! (subids && *subids <= 2 )) - return "*** Malformed OID ***"; + return wmem_strdup(scope, "*** Malformed OID ***"); oid = oid_get(num_subids, subids, &matched, &left); while (! oid->name ) { if (!(oid = oid->parent)) { - return oid_subid2string(subids,num_subids); + return oid_subid2string(scope, subids,num_subids); } left++; matched--; } if (left) { - return ep_strdup_printf("%s.%s", - oid->name ? oid->name : oid_subid2string(subids,matched), - oid_subid2string(&(subids[matched]),left)); + gchar *ret, + *str1 = oid_subid2string(NULL, subids,matched), + *str2 = oid_subid2string(NULL, &(subids[matched]),left); + + ret = wmem_strdup_printf(scope, "%s.%s", oid->name ? oid->name : str1, str2); + wmem_free(NULL, str1); + wmem_free(NULL, str2); + return ret; } else { - return oid->name ? oid->name : oid_subid2string(subids,matched); + return oid->name ? wmem_strdup(scope, oid->name) : oid_subid2string(scope, subids,matched); } } -extern void oid_both(guint oid_len, guint32 *subids, char** resolved_p, char** numeric_p) { - *resolved_p = (char *)oid_resolved(oid_len,subids); - *numeric_p = (char *)oid_subid2string(subids,oid_len); +extern void oid_both(wmem_allocator_t *scope, guint oid_len, guint32 *subids, gchar** resolved_p, gchar** numeric_p) { + *resolved_p = oid_resolved(scope, oid_len,subids); + *numeric_p = oid_subid2string(scope, subids,oid_len); } -extern void oid_both_from_encoded(const guint8 *oid, gint oid_len, char** resolved_p, char** numeric_p) { - guint32* subids; - guint subids_len = oid_encoded2subid(oid, oid_len, &subids); - *resolved_p = (char *)oid_resolved(subids_len,subids); - *numeric_p = (char *)oid_subid2string(subids,subids_len); +extern void oid_both_from_encoded(wmem_allocator_t *scope, const guint8 *oid, gint oid_len, gchar** resolved_p, gchar** numeric_p) { + guint32* subids = NULL; + guint subids_len = oid_encoded2subid(NULL, oid, oid_len, &subids); + *resolved_p = oid_resolved(scope, subids_len,subids); + *numeric_p = oid_subid2string(scope, subids,subids_len); + wmem_free(NULL, subids); } -extern void oid_both_from_string(const gchar *oid_str, char** resolved_p, char** numeric_p) { - guint32* subids; - guint subids_len = oid_string2subid(oid_str, &subids); - *resolved_p = (char *)oid_resolved(subids_len,subids); - *numeric_p = (char *)oid_subid2string(subids,subids_len); +void oid_both_from_string(wmem_allocator_t *scope, const gchar *oid_str, gchar** resolved_p, gchar** numeric_p) { + guint32 *subids; + guint subids_len; + + subids_len = oid_string2subid(NULL, oid_str, &subids); + *resolved_p = oid_resolved(scope, subids_len,subids); + *numeric_p = oid_subid2string(scope, subids,subids_len); + wmem_free(NULL, subids); } /** @@ -1198,7 +1251,6 @@ extern gchar * oid_get_default_mib_path(void) { #ifdef HAVE_LIBSMI GString* path_str; - gchar *path_ret; char *path; guint i; @@ -1225,7 +1277,7 @@ oid_get_default_mib_path(void) { g_string_append(path_str, PATH_SEPARATOR); } g_string_append_printf(path_str, "%s", path); - free (path); + smi_free(path); #endif for(i=0;istr; - g_string_free(path_str, FALSE); - return path_ret; + return g_string_free(path_str, FALSE); #else /* HAVE_LIBSMI */ return g_strdup(""); #endif @@ -1245,18 +1295,19 @@ oid_get_default_mib_path(void) { #ifdef DEBUG_OIDS char* oid_test_a2b(guint32 num_subids, guint32* subids) { - guint8* sub2enc; - guint8* str2enc; - guint32* enc2sub; + guint8* sub2enc = NULL; + guint8* str2enc = NULL; + guint32* enc2sub = NULL; guint32* str2sub; - const char* sub2str = oid_subid2string(subids, num_subids); - guint sub2enc_len = oid_subid2encoded(num_subids, subids,&sub2enc); - guint enc2sub_len = oid_encoded2subid(sub2enc, sub2enc_len, &enc2sub); - const char* enc2str = oid_encoded2string(sub2enc, sub2enc_len); - guint str2enc_len = oid_string2encoded(sub2str,&str2enc); + char* ret; + char* sub2str = oid_subid2string(NULL, subids, num_subids); + guint sub2enc_len = oid_subid2encoded(NULL, num_subids, subids,&sub2enc); + guint enc2sub_len = oid_encoded2subid(NULL, sub2enc, sub2enc_len, &enc2sub); + char* enc2str = oid_encoded2string(NULL, sub2enc, sub2enc_len); + guint str2enc_len = oid_string2encoded(NULL, sub2str,&str2enc); guint str2sub_len = oid_string2subid(sub2str,&str2sub); - return ep_strdup_printf( + ret = wmem_strdup_printf(wmem_packet_scope(), "oid_subid2string=%s \n" "oid_subid2encoded=[%d]%s \n" "oid_encoded2subid=%s \n " @@ -1264,12 +1315,19 @@ char* oid_test_a2b(guint32 num_subids, guint32* subids) { "oid_string2encoded=[%d]%s \n" "oid_string2subid=%s \n " ,sub2str - ,sub2enc_len,bytestring_to_ep_str(sub2enc, sub2enc_len, ':') - ,enc2sub ? oid_subid2string(enc2sub,enc2sub_len) : "-" + ,sub2enc_len,bytestring_to_str(wmem_packet_scope(), sub2enc, sub2enc_len, ':') + ,enc2sub ? oid_subid2string(wmem_packet_scope(), enc2sub,enc2sub_len) : "-" ,enc2str - ,str2enc_len,bytestring_to_ep_str(str2enc, str2enc_len, ':') - ,str2sub ? oid_subid2string(str2sub,str2sub_len) : "-" + ,str2enc_len,bytestring_to_str(wmem_packet_scope(), str2enc, str2enc_len, ':') + ,str2sub ? oid_subid2string(wmem_packet_scope(), str2sub,str2sub_len) : "-" ); + + wmem_free(NULL, sub2str); + wmem_free(NULL, enc2sub); + wmem_free(NULL, sub2enc); + wmem_free(NULL, str2enc); + wmem_free(NULL, enc2str); + return ret; } void add_oid_debug_subtree(oid_info_t* oid_info, proto_tree *tree) { @@ -1277,7 +1335,7 @@ void add_oid_debug_subtree(oid_info_t* oid_info, proto_tree *tree) { static const char* key_types[] = {"OID_KEY_TYPE_WRONG","OID_KEY_TYPE_INTEGER", "OID_KEY_TYPE_FIXED_STRING","OID_KEY_TYPE_FIXED_BYTES","OID_KEY_TYPE_STRING", "OID_KEY_TYPE_BYTES","OID_KEY_TYPE_NSAP","OID_KEY_TYPE_OID","OID_KEY_TYPE_IPADDR"}; - proto_item* pi = proto_tree_add_text(tree,NULL,0,0, + proto_item* pi = proto_tree_add_debug_text(tree,NULL,0,0, "OidInfo: Name='%s' sub-id=%u kind=%s hfid=%d", oid_info->name ? oid_info->name : "", oid_info->subid, @@ -1287,7 +1345,7 @@ void add_oid_debug_subtree(oid_info_t* oid_info, proto_tree *tree) { oid_key_t* key; for(key = oid_info->key; key; key = key->next) { - proto_tree_add_text(pt,NULL,0,0, + proto_tree_add_debug_text(pt,NULL,0,0, "Key: name='%s' num_subids=%d type=%s", key->name, key->key_type <= OID_KEY_TYPE_IPADDR ? key_types[key->key_type] : "BROKEN" @@ -1295,7 +1353,7 @@ void add_oid_debug_subtree(oid_info_t* oid_info, proto_tree *tree) { }; if (oid_info->parent) { - pi = proto_tree_add_text(pt,NULL,0,0,"Parent:"); + pi = proto_tree_add_debug_text(pt,NULL,0,0,"Parent:"); pt = proto_item_add_subtree(pi,0); add_oid_debug_subtree(oid_info->parent, pt); } @@ -1314,4 +1372,3 @@ void add_oid_debug_subtree(oid_info_t* oid_info, proto_tree *tree) { * ex: set shiftwidth=8 tabstop=8 noexpandtab: * :indentSize=8:tabSize=8:noTabs=false: */ -