diff options
-rw-r--r-- | caputils/airpcap_loader.c | 14 | ||||
-rw-r--r-- | epan/dfilter/dfilter-macro.c | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-dtls.c | 1 | ||||
-rw-r--r-- | epan/dissectors/packet-k12.c | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-lbm.h | 12 | ||||
-rw-r--r-- | epan/dissectors/packet-ssl-utils.c | 22 | ||||
-rw-r--r-- | epan/dissectors/packet-ssl.c | 1 | ||||
-rw-r--r-- | epan/prefs.c | 18 | ||||
-rw-r--r-- | epan/range.c | 14 | ||||
-rw-r--r-- | epan/range.h | 5 | ||||
-rw-r--r-- | epan/uat-int.h | 2 | ||||
-rw-r--r-- | epan/uat.c | 90 | ||||
-rw-r--r-- | epan/uat.h | 76 | ||||
-rw-r--r-- | epan/uat_load.l | 22 | ||||
-rw-r--r-- | epan/wslua/wslua_proto.c | 8 | ||||
-rw-r--r-- | plugins/stats_tree/pinfo_stats_tree.c | 6 | ||||
-rw-r--r-- | ui/gtk/main_menubar.c | 13 | ||||
-rw-r--r-- | ui/gtk/prefs_dlg.c | 6 | ||||
-rw-r--r-- | ui/gtk/uat_gui.c | 91 | ||||
-rw-r--r-- | ui/qt/io_graph_dialog.cpp | 6 | ||||
-rw-r--r-- | ui/qt/packet_range_group_box.cpp | 4 | ||||
-rw-r--r-- | ui/qt/sctp_chunk_statistics_dialog.cpp | 3 | ||||
-rw-r--r-- | ui/qt/uat_dialog.cpp | 9 | ||||
-rw-r--r-- | ui/win32/file_dlg_win32.c | 5 |
24 files changed, 276 insertions, 160 deletions
diff --git a/caputils/airpcap_loader.c b/caputils/airpcap_loader.c index ed2d135b6c..28a42167d8 100644 --- a/caputils/airpcap_loader.c +++ b/caputils/airpcap_loader.c @@ -152,7 +152,7 @@ get_wep_key(pref_t *pref, gpointer ud) keys_cb_data_t* user_data; uat_t *uat; guint i; - const char* err = NULL; + char* err = NULL; uat_wep_key_record_t* wep_keys; decryption_key_t* new_key; @@ -167,7 +167,10 @@ get_wep_key(pref_t *pref, gpointer ud) { uat_load(uat, &err); if (err != NULL) + { + g_free(err); return 1; + } } for (i = 0, wep_keys = (uat_wep_key_record_t*)*uat->user_ptr; i < *uat->nrows_p; i++, wep_keys++) @@ -247,7 +250,7 @@ set_wep_key(pref_t *pref, gpointer ud _U_) keys_cb_data_t* user_data; uat_t *uat; gint i; - const char* err = NULL; + char* err = NULL; uat_wep_key_record_t uat_key; decryption_key_t* new_key; @@ -264,8 +267,10 @@ set_wep_key(pref_t *pref, gpointer ud _U_) to be loaded now */ uat_load(uat, &err); if (err != NULL) + { + g_free(err); return 1; - + } uat->loaded = 1; } /* Free the old records */ @@ -282,7 +287,10 @@ set_wep_key(pref_t *pref, gpointer ud _U_) uat_save(uat, &err); if (err != NULL) + { + g_free(err); return 1; + } } return 0; diff --git a/epan/dfilter/dfilter-macro.c b/epan/dfilter/dfilter-macro.c index 772d9e3e79..6ed12a5bbe 100644 --- a/epan/dfilter/dfilter-macro.c +++ b/epan/dfilter/dfilter-macro.c @@ -580,13 +580,13 @@ static gboolean macro_name_chk(void* r _U_, const char* in_name, guint name_len, guint i; if (name_len == 0) { - *error = "invalid name"; + *error = g_strdup("invalid name"); return FALSE; } for (i=0; i < name_len; i++) { if (!(in_name[i] == '_' || g_ascii_isalnum(in_name[i]) ) ) { - *error = "invalid char in name"; + *error = g_strdup("invalid char in name"); return FALSE; } } diff --git a/epan/dissectors/packet-dtls.c b/epan/dissectors/packet-dtls.c index ad5ca4640b..c1ec134976 100644 --- a/epan/dissectors/packet-dtls.c +++ b/epan/dissectors/packet-dtls.c @@ -255,6 +255,7 @@ dtls_parse_old_keys(void) if (!uat_load_str(dtlsdecrypt_uat, uat_entry, &err)) { ssl_debug_printf("dtls_parse: Can't load UAT string %s: %s\n", uat_entry, err); + g_free(err); } wmem_free(NULL, uat_entry); } diff --git a/epan/dissectors/packet-k12.c b/epan/dissectors/packet-k12.c index 426bf0ff03..40cf879df0 100644 --- a/epan/dissectors/packet-k12.c +++ b/epan/dissectors/packet-k12.c @@ -371,7 +371,7 @@ protos_chk_cb(void* r _U_, const char* p, guint len, const void* u1 _U_, const v g_strstrip(protos[num_protos]); if (!num_protos) { - *err = ep_strdup_printf("No protocols given"); + *err = g_strdup_printf("No protocols given"); wmem_free(NULL, line); wmem_free(NULL, protos); return FALSE; @@ -379,7 +379,7 @@ protos_chk_cb(void* r _U_, const char* p, guint len, const void* u1 _U_, const v for (i = 0; i < num_protos; i++) { if (!find_dissector(protos[i])) { - *err = ep_strdup_printf("Could not find dissector for: '%s'",protos[i]); + *err = g_strdup_printf("Could not find dissector for: '%s'",protos[i]); wmem_free(NULL, line); wmem_free(NULL, protos); return FALSE; diff --git a/epan/dissectors/packet-lbm.h b/epan/dissectors/packet-lbm.h index 11d67d0eaf..9903ff2875 100644 --- a/epan/dissectors/packet-lbm.h +++ b/epan/dissectors/packet-lbm.h @@ -130,12 +130,12 @@ typedef guint64 lbm_uint64_t; {\ if (((rec_t*)rec)->field_name ) \ { \ - *out_ptr = (((rec_t*)rec)->field_name); \ + *out_ptr = g_strdup((((rec_t*)rec)->field_name)); \ *out_len = (unsigned)strlen((((rec_t*)rec)->field_name)); \ } \ else \ { \ - *out_ptr = ""; \ + *out_ptr = g_strdup(""); \ *out_len = 0; \ } \ } @@ -150,12 +150,12 @@ typedef guint64 lbm_uint64_t; struct in_addr addr; \ if (inet_aton(strptr, &addr) == 0) \ { \ - *err = "invalid address"; \ + *err = g_strdup("invalid address"); \ return (FALSE); \ } \ if (!IN_MULTICAST(g_ntohl(addr.s_addr)) && (g_ntohl(addr.s_addr) != 0)) \ { \ - *err = "invalid multicast address"; \ + *err = g_strdup("invalid multicast address"); \ return (FALSE); \ } \ return (TRUE); \ @@ -173,12 +173,12 @@ typedef guint64 lbm_uint64_t; {\ if (((rec_t*)rec)->field_name ) \ { \ - *out_ptr = (((rec_t*)rec)->field_name); \ + *out_ptr = g_strdup((((rec_t*)rec)->field_name)); \ *out_len = (unsigned)strlen((((rec_t*)rec)->field_name)); \ } \ else \ { \ - *out_ptr = ""; \ + *out_ptr = g_strdup(""); \ *out_len = 0; \ } \ } diff --git a/epan/dissectors/packet-ssl-utils.c b/epan/dissectors/packet-ssl-utils.c index 1c3a97f457..37e049c6de 100644 --- a/epan/dissectors/packet-ssl-utils.c +++ b/epan/dissectors/packet-ssl-utils.c @@ -1445,7 +1445,7 @@ ssl_data_clone(StringInfo *str) } /* from_hex converts |hex_len| bytes of hex data from |in| and sets |*out| to - * the result. |out->data| will be allocated using se_alloc. Returns TRUE on + * the result. |out->data| will be allocated using wmem_file_scope. Returns TRUE on * success. */ static gboolean from_hex(StringInfo* out, const char* in, gsize hex_len) { gsize i; @@ -4068,7 +4068,7 @@ ssl_private_key_hash (gconstpointer v) } /* private key table entries have a scope 'larger' then packet capture, - * so we can't relay on se_alloc** function */ + * so we can't rely on wmem_file_scope function */ void ssl_private_key_free(gpointer id, gpointer key, gpointer dummy _U_) { @@ -4815,7 +4815,7 @@ gboolean ssldecrypt_uat_fld_ip_chk_cb(void* r _U_, const char* p, guint len _U_, const void* u1 _U_, const void* u2 _U_, const char** err) { if (!p || strlen(p) == 0u) { - *err = ep_strdup_printf("No IP address given."); + *err = g_strdup_printf("No IP address given."); return FALSE; } @@ -4827,14 +4827,14 @@ gboolean ssldecrypt_uat_fld_port_chk_cb(void* r _U_, const char* p, guint len _U_, const void* u1 _U_, const void* u2 _U_, const char** err) { if (!p || strlen(p) == 0u) { - *err = ep_strdup_printf("No Port given."); + *err = g_strdup_printf("No Port given."); return FALSE; } if (strcmp(p, "start_tls") != 0){ const gint i = atoi(p); if (i < 0 || i > 65535) { - *err = ep_strdup_printf("Invalid port given."); + *err = g_strdup_printf("Invalid port given."); return FALSE; } } @@ -4847,13 +4847,13 @@ gboolean ssldecrypt_uat_fld_protocol_chk_cb(void* r _U_, const char* p, guint len _U_, const void* u1 _U_, const void* u2 _U_, const char** err) { if (!p || strlen(p) == 0u) { - *err = ep_strdup_printf("No protocol given."); + *err = g_strdup_printf("No protocol given."); return FALSE; } if (!find_dissector(p)) { char* ssl_str = ssl_association_info(); - *err = ep_strdup_printf("Could not find dissector for: '%s'\nValid dissectors are:\n%s", p, ssl_str); + *err = g_strdup_printf("Could not find dissector for: '%s'\nValid dissectors are:\n%s", p, ssl_str); g_free(ssl_str); return FALSE; } @@ -4868,11 +4868,11 @@ ssldecrypt_uat_fld_fileopen_chk_cb(void* r _U_, const char* p, guint len _U_, co ws_statb64 st; if (!p || strlen(p) == 0u) { - *err = ep_strdup_printf("No filename given."); + *err = g_strdup_printf("No filename given."); return FALSE; } else { if (ws_stat64(p, &st) != 0) { - *err = ep_strdup_printf("File '%s' does not exist or access is denied.", p); + *err = g_strdup_printf("File '%s' does not exist or access is denied.", p); return FALSE; } } @@ -4893,14 +4893,14 @@ ssldecrypt_uat_fld_password_chk_cb(void* r _U_, const char* p, guint len _U_, co char *msg = NULL; if (!ssl_load_pkcs12(fp, p, &msg)) { fclose(fp); - *err = ep_strdup_printf("Could not load PKCS#12 key file: %s", msg); + *err = g_strdup_printf("Could not load PKCS#12 key file: %s", msg); g_free(msg); return FALSE; } g_free(msg); fclose(fp); } else { - *err = ep_strdup_printf("Leave this field blank if the keyfile is not PKCS#12."); + *err = g_strdup_printf("Leave this field blank if the keyfile is not PKCS#12."); return FALSE; } } diff --git a/epan/dissectors/packet-ssl.c b/epan/dissectors/packet-ssl.c index 522f622620..04e5cced1e 100644 --- a/epan/dissectors/packet-ssl.c +++ b/epan/dissectors/packet-ssl.c @@ -369,6 +369,7 @@ ssl_parse_old_keys(void) if (!uat_load_str(ssldecrypt_uat, uat_entry, &err)) { ssl_debug_printf("ssl_parse_old_keys: Can't load UAT string %s: %s\n", uat_entry, err); + g_free(err); } wmem_free(NULL, uat_entry); } diff --git a/epan/prefs.c b/epan/prefs.c index 6f7128cf7f..415f3e57cb 100644 --- a/epan/prefs.c +++ b/epan/prefs.c @@ -3460,7 +3460,8 @@ static gboolean prefs_set_uat_pref(char *uat_entry) { gchar *p, *colonp; uat_t *uat; - gchar *err; + gchar *err = NULL; + gboolean ret; colonp = strchr(uat_entry, ':'); if (colonp == NULL) @@ -3492,10 +3493,9 @@ prefs_set_uat_pref(char *uat_entry) { return FALSE; } - if (uat_load_str(uat, p, &err)) { - return TRUE; - } - return FALSE; + ret = uat_load_str(uat, p, &err); + g_free(err); + return ret; } /* @@ -4531,6 +4531,7 @@ prefs_pref_to_str(pref_t *pref, pref_source_t source) { const char *pref_text = "[Unknown]"; void *valp; /* pointer to preference value */ color_t *pref_color; + gchar *tmp_value, *ret_value; if (!pref) { return g_strdup(pref_text); @@ -4603,8 +4604,11 @@ prefs_pref_to_str(pref_t *pref, pref_source_t source) { return g_strdup(*(const char **) valp); case PREF_RANGE: - pref_text = range_convert_range(*(range_t **) valp); - break; + /* Convert wmem to g_alloc memory */ + tmp_value = range_convert_range(NULL, *(range_t **) valp); + ret_value = g_strdup(tmp_value); + wmem_free(NULL, tmp_value); + return ret_value; case PREF_COLOR: return g_strdup_printf("%02x%02x%02x", diff --git a/epan/range.c b/epan/range.c index 6783ec9382..0101a8d86e 100644 --- a/epan/range.c +++ b/epan/range.c @@ -322,27 +322,27 @@ range_foreach(range_t *range, void (*callback)(guint32 val)) } } -/* This function converts a range_t to a (ep_alloc()-allocated) string. */ +/* This function converts a range_t to a (wmem-allocated) string. */ char * -range_convert_range(range_t *range) +range_convert_range(wmem_allocator_t *scope, range_t *range) { guint32 i; gboolean prepend_comma = FALSE; - emem_strbuf_t *strbuf; + wmem_strbuf_t *strbuf; - strbuf=ep_strbuf_new(NULL); + strbuf=wmem_strbuf_new(scope, ""); if (range) { for (i=0; i < range->nranges; i++) { if (range->ranges[i].low == range->ranges[i].high) { - ep_strbuf_append_printf(strbuf, "%s%u", prepend_comma?",":"", range->ranges[i].low); + wmem_strbuf_append_printf(strbuf, "%s%u", prepend_comma?",":"", range->ranges[i].low); } else { - ep_strbuf_append_printf(strbuf, "%s%u-%u", prepend_comma?",":"", range->ranges[i].low, range->ranges[i].high); + wmem_strbuf_append_printf(strbuf, "%s%u-%u", prepend_comma?",":"", range->ranges[i].low, range->ranges[i].high); } prepend_comma = TRUE; } } - return strbuf->str; + return wmem_strbuf_finalize(strbuf); } /* Create a copy of a range. */ diff --git a/epan/range.h b/epan/range.h index 1746bf1a9f..a7b8f5c748 100644 --- a/epan/range.h +++ b/epan/range.h @@ -28,6 +28,7 @@ #include <glib.h> #include "ws_symbol_export.h" +#include <epan/wmem/wmem.h> /** @file * Range strings a variant of value_strings @@ -113,9 +114,9 @@ WS_DLL_PUBLIC gboolean ranges_are_equal(range_t *a, range_t *b); WS_DLL_PUBLIC void range_foreach(range_t *range, void (*callback)(guint32 val)); /** - * This function converts a range_t to a (ep_alloc()-allocated) string. + * This function converts a range_t to a (wmem_alloc()-allocated) string. */ -WS_DLL_PUBLIC char *range_convert_range(range_t *range); +WS_DLL_PUBLIC char *range_convert_range(wmem_allocator_t *scope, range_t *range); /** * Create a copy of a range. diff --git a/epan/uat-int.h b/epan/uat-int.h index e797f3bee7..88c52f4b33 100644 --- a/epan/uat-int.h +++ b/epan/uat-int.h @@ -96,7 +96,7 @@ WS_DLL_PUBLIC void uat_clear(uat_t*); WS_DLL_PUBLIC -gboolean uat_save(uat_t* , const char** ); +gboolean uat_save(uat_t* , char** ); void uat_load_all(void); diff --git a/epan/uat.c b/epan/uat.c index 824e64d5a2..6868d4219f 100644 --- a/epan/uat.c +++ b/epan/uat.c @@ -160,16 +160,18 @@ void* uat_add_record(uat_t* uat, const void* data, gboolean valid_rec) { void uat_swap(uat_t* uat, guint a, guint b) { size_t s = uat->record_size; - void* tmp = ep_alloc(s); + void* tmp; gboolean tmp_bool; g_assert( a < uat->raw_data->len && b < uat->raw_data->len ); if (a == b) return; + tmp = g_malloc(s); memcpy(tmp, UAT_INDEX_PTR(uat,a), s); memcpy(UAT_INDEX_PTR(uat,a), UAT_INDEX_PTR(uat,b), s); memcpy(UAT_INDEX_PTR(uat,b), tmp, s); + g_free(tmp); tmp_bool = *(gboolean*)(uat->valid_data->data + (sizeof(gboolean) * (a))); *(gboolean*)(uat->valid_data->data + (sizeof(gboolean) * (a))) = *(gboolean*)(uat->valid_data->data + (sizeof(gboolean) * (b))); @@ -254,7 +256,7 @@ static void putfld(FILE* fp, void* rec, uat_field_t* f) { } putc('"',fp); - return; + break; } case PT_TXTMOD_HEXBYTES: { guint i; @@ -263,14 +265,16 @@ static void putfld(FILE* fp, void* rec, uat_field_t* f) { fprintf(fp,"%.2x",((const guint8*)fld_ptr)[i]); } - return; + break; } default: g_assert_not_reached(); } + + g_free((char*)fld_ptr); } -gboolean uat_save(uat_t* uat, const char** error) { +gboolean uat_save(uat_t* uat, char** error) { guint i; gchar* fname = uat_get_actual_filename(uat,TRUE); FILE* fp; @@ -283,7 +287,7 @@ gboolean uat_save(uat_t* uat, const char** error) { /* Parent directory does not exist, try creating first */ gchar *pf_dir_path = NULL; if (create_persconffile_dir(&pf_dir_path) != 0) { - *error = ep_strdup_printf("uat_save: error creating '%s'", pf_dir_path); + *error = g_strdup_printf("uat_save: error creating '%s'", pf_dir_path); g_free (pf_dir_path); return FALSE; } @@ -291,7 +295,7 @@ gboolean uat_save(uat_t* uat, const char** error) { } if (!fp) { - *error = ep_strdup_printf("uat_save: error opening '%s': %s",fname,g_strerror(errno)); + *error = g_strdup_printf("uat_save: error opening '%s': %s",fname,g_strerror(errno)); return FALSE; } @@ -426,7 +430,7 @@ void uat_foreach_table(uat_cb_t cb,void* user_data) { void uat_load_all(void) { guint i; - const gchar* err; + gchar* err; for (i=0; i < all_uats->len; i++) { uat_t* u = (uat_t *)g_ptr_array_index(all_uats,i); @@ -437,6 +441,7 @@ void uat_load_all(void) { if (err) { report_failure("Error loading table '%s': %s",u->name,err); + g_free(err); } } } @@ -444,7 +449,7 @@ void uat_load_all(void) { gboolean uat_fld_chk_str(void* u1 _U_, const char* strptr, guint len _U_, const void* u2 _U_, const void* u3 _U_, const char** err) { if (strptr == NULL) { - *err = "NULL pointer"; + *err = g_strdup("NULL pointer"); return FALSE; } @@ -457,21 +462,25 @@ gboolean uat_fld_chk_oid(void* u1 _U_, const char* strptr, guint len, const void *err = NULL; if (strptr == NULL) { - *err = "NULL pointer"; + *err = g_strdup("NULL pointer"); return FALSE; } for(i = 0; i < len; i++) if(!(g_ascii_isdigit(strptr[i]) || strptr[i] == '.')) { - *err = "Only digits [0-9] and \".\" allowed in an OID"; - break; + *err = g_strdup("Only digits [0-9] and \".\" allowed in an OID"); + return FALSE; } - if(strptr[len-1] == '.') - *err = "OIDs must not be terminated with a \".\""; + if(strptr[len-1] == '.') { + *err = g_strdup("OIDs must not be terminated with a \".\""); + return FALSE; + } - if(!((*strptr == '0' || *strptr == '1' || *strptr =='2') && (len > 1 && strptr[1] == '.'))) - *err = "OIDs must start with \"0.\" (ITU-T assigned), \"1.\" (ISO assigned) or \"2.\" (joint ISO/ITU-T assigned)"; + if(!((*strptr == '0' || *strptr == '1' || *strptr =='2') && (len > 1 && strptr[1] == '.'))) { + *err = g_strdup("OIDs must start with \"0.\" (ITU-T assigned), \"1.\" (ISO assigned) or \"2.\" (joint ISO/ITU-T assigned)"); + return FALSE; + } /* should also check that the second arc is in the range 0-39 */ @@ -480,15 +489,17 @@ gboolean uat_fld_chk_oid(void* u1 _U_, const char* strptr, guint len, const void gboolean uat_fld_chk_proto(void* u1 _U_, const char* strptr, guint len, const void* u2 _U_, const void* u3 _U_, const char** err) { if (len) { - char* name = ep_strndup(strptr,len); + char* name = g_strndup(strptr,len); ascii_strdown_inplace(name); g_strchug(name); if (find_dissector(name)) { *err = NULL; + g_free(name); return TRUE; } else { - *err = "dissector not found"; + *err = g_strdup("dissector not found"); + g_free(name); return FALSE; } } else { @@ -499,7 +510,7 @@ gboolean uat_fld_chk_proto(void* u1 _U_, const char* strptr, guint len, const vo static gboolean uat_fld_chk_num(int base, const char* strptr, guint len, const char** err) { if (len > 0) { - char* str = ep_strndup(strptr,len); + char* str = g_strndup(strptr,len); char* strn; long i; @@ -508,18 +519,23 @@ static gboolean uat_fld_chk_num(int base, const char* strptr, guint len, const c if (((i == G_MAXLONG || i == G_MINLONG) && errno == ERANGE) || (errno != 0 && i == 0)) { - *err = g_strerror(errno); + *err = g_strdup(g_strerror(errno)); + g_free(str); return FALSE; } if ((*strn != '\0') && (*strn != ' ')) { - *err = "Invalid value"; + *err = g_strdup("Invalid value"); + g_free(str); return FALSE; } /* Allow only 32bit values */ if ((sizeof(long) > 4) && ((i < G_MININT) || (i > G_MAXINT))) { - *err = "Value too large"; + *err = g_strdup("Value too large"); + g_free(str); return FALSE; } + + g_free(str); } *err = NULL; @@ -535,40 +551,50 @@ gboolean uat_fld_chk_num_hex(void* u1 _U_, const char* strptr, guint len, const } gboolean uat_fld_chk_enum(void* u1 _U_, const char* strptr, guint len, const void* v, const void* u3 _U_, const char** err) { - char* str = ep_strndup(strptr,len); + char* str = g_strndup(strptr,len); guint i; const value_string* vs = (const value_string *)v; for(i=0;vs[i].strptr;i++) { if (g_str_equal(vs[i].strptr,str)) { *err = NULL; + g_free(str); return TRUE; } } - *err = ep_strdup_printf("invalid value: %s",str); + *err = g_strdup_printf("invalid value: %s",str); + g_free(str); return FALSE; } gboolean uat_fld_chk_range(void* u1 _U_, const char* strptr, guint len, const void* v _U_, const void* u3, const char** err) { - char* str = ep_strndup(strptr,len); + char* str = g_strndup(strptr,len); range_t* r = NULL; convert_ret_t ret = range_convert_str(&r, str,GPOINTER_TO_UINT(u3)); + gboolean ret_value = FALSE; switch ( ret ) { case CVT_NO_ERROR: *err = NULL; - return TRUE; + ret_value = TRUE; + break; case CVT_SYNTAX_ERROR: - *err = ep_strdup_printf("syntax error in range: %s",str); - return FALSE; + *err = g_strdup_printf("syntax error in range: %s",str); + ret_value = FALSE; + break; case CVT_NUMBER_TOO_BIG: - *err = ep_strdup_printf("value too large in range: '%s' (max = %u)",str,GPOINTER_TO_UINT(u3)); - return FALSE; + *err = g_strdup_printf("value too large in range: '%s' (max = %u)",str,GPOINTER_TO_UINT(u3)); + ret_value = FALSE; + break; default: - *err = "This should not happen, it is a bug in wireshark! please report to wireshark-dev@wireshark.org"; - return FALSE; + *err = g_strdup("This should not happen, it is a bug in wireshark! please report to wireshark-dev@wireshark.org"); + ret_value = FALSE; + break; } + + g_free(str); + return ret_value; } char* uat_unbinstring(const char* si, guint in_len, guint* len_p) { @@ -685,7 +711,7 @@ char* uat_undquote(const char* si, guint in_len, guint* len_p) { char* uat_esc(const char* buf, guint len) { const guint8* end = ((const guint8*)buf)+len; - char* out = (char *)ep_alloc0((4*len)+1); + char* out = (char *)g_malloc0((4*len)+1); const guint8* b; char* s = out; diff --git a/epan/uat.h b/epan/uat.h index 3495579f96..60e6eb7556 100644 --- a/epan/uat.h +++ b/epan/uat.h @@ -278,7 +278,7 @@ uat_t* uat_new(const char* name, * @return TRUE on success, FALSE on failure. */ WS_DLL_PUBLIC -gboolean uat_load(uat_t* uat_in, const char** err); +gboolean uat_load(uat_t* uat_in, char** err); /** Create or update a single uat entry using a string. * @@ -355,7 +355,7 @@ gboolean uat_fld_chk_str_ ## what (void* UNUSED_PARAMETER(u1), const char* strpt guint i; for (i=0;i<len;i++) { \ char c = strptr[i]; \ if (! g_ascii_ ## what(c)) { \ - *err = ep_strdup_printf("invalid char pos=%d value=%.2x",i,c); return FALSE; } } \ + *err = g_strdup_printf("invalid char pos=%d value=%.2x",i,c); return FALSE; } } \ *err = NULL; return TRUE; } @@ -376,10 +376,10 @@ static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, g (((rec_t*)rec)->field_name) = new_buf; } \ static void basename ## _ ## field_name ## _tostr_cb(void* rec, const char** out_ptr, unsigned* out_len, const void* UNUSED_PARAMETER(u1), const void* UNUSED_PARAMETER(u2)) {\ if (((rec_t*)rec)->field_name ) { \ - *out_ptr = (((rec_t*)rec)->field_name); \ + *out_ptr = g_strdup((((rec_t*)rec)->field_name)); \ *out_len = (unsigned)strlen((((rec_t*)rec)->field_name)); \ } else { \ - *out_ptr = ""; *out_len = 0; } } + *out_ptr = g_strdup(""); *out_len = 0; } } #define UAT_FLD_CSTRING(basename,field_name,title,desc) \ {#field_name, title, PT_TXTMOD_STRING,{uat_fld_chk_str,basename ## _ ## field_name ## _set_cb,basename ## _ ## field_name ## _tostr_cb},{0,0,0},0,desc,FLDFILL} @@ -427,7 +427,10 @@ static void basename ## _ ## field_name ## _tostr_cb(void* rec, const char** out *out_ptr = uat_esc(((rec_t*)rec)->ptr_element, (((rec_t*)rec)->len_element)); \ *out_len = (unsigned)strlen(*out_ptr); \ } else { \ - *out_ptr = ""; *out_len = 0; } } + *out_ptr = g_strdup(""); \ + *out_len = 0; \ + } \ +} #define UAT_FLD_LSTRING(basename,field_name,title, desc) \ {#field_name, title, PT_TXTMOD_STRING,{0,basename ## _ ## field_name ## _set_cb,basename ## _ ## field_name ## _tostr_cb},{0,0,0},0,desc,FLDFILL} @@ -446,7 +449,7 @@ static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, g (((rec_t*)rec)->ptr_element) = new_buf; \ (((rec_t*)rec)->len_element) = len; } \ static void basename ## _ ## field_name ## _tostr_cb(void* rec, const char** out_ptr, unsigned* out_len, const void* UNUSED_PARAMETER(u1), const void* UNUSED_PARAMETER(u2)) {\ - *out_ptr = ((rec_t*)rec)->ptr_element ? (const char*)ep_memdup(((rec_t*)rec)->ptr_element,((rec_t*)rec)->len_element) : ""; \ + *out_ptr = ((rec_t*)rec)->ptr_element ? (const char*)g_memdup(((rec_t*)rec)->ptr_element,((rec_t*)rec)->len_element) : g_strdup(""); \ *out_len = ((rec_t*)rec)->len_element; } #define UAT_FLD_BUFFER(basename,field_name,title,desc) \ @@ -459,9 +462,11 @@ static void basename ## _ ## field_name ## _tostr_cb(void* rec, const char** out */ #define UAT_DEC_CB_DEF(basename,field_name,rec_t) \ static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, guint len, const void* UNUSED_PARAMETER(u1), const void* UNUSED_PARAMETER(u2)) {\ - ((rec_t*)rec)->field_name = (guint)strtol(ep_strndup(buf,len),NULL,10); } \ + char* tmp_str = g_strndup(buf,len); \ + ((rec_t*)rec)->field_name = (guint)strtol(tmp_str,NULL,10); \ + g_free(tmp_str); } \ static void basename ## _ ## field_name ## _tostr_cb(void* rec, const char** out_ptr, unsigned* out_len, const void* UNUSED_PARAMETER(u1), const void* UNUSED_PARAMETER(u2)) {\ - *out_ptr = ep_strdup_printf("%d",((rec_t*)rec)->field_name); \ + *out_ptr = g_strdup_printf("%d",((rec_t*)rec)->field_name); \ *out_len = (unsigned)strlen(*out_ptr); } #define UAT_FLD_DEC(basename,field_name,title,desc) \ @@ -477,9 +482,11 @@ static void basename ## _ ## field_name ## _tostr_cb(void* rec, const char** out */ #define UAT_HEX_CB_DEF(basename,field_name,rec_t) \ static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, guint len, const void* UNUSED_PARAMETER(u1), const void* UNUSED_PARAMETER(u2)) {\ - ((rec_t*)rec)->field_name = (guint)strtol(ep_strndup(buf,len),NULL,16); } \ + char* tmp_str = g_strndup(buf,len); \ + ((rec_t*)rec)->field_name = (guint)strtol(tmp_str,NULL,16); \ + g_free(tmp_str); } \ static void basename ## _ ## field_name ## _tostr_cb(void* rec, const char** out_ptr, unsigned* out_len, const void* UNUSED_PARAMETER(u1), const void* UNUSED_PARAMETER(u2)) {\ - *out_ptr = ep_strdup_printf("%x",((rec_t*)rec)->field_name); \ + *out_ptr = g_strdup_printf("%x",((rec_t*)rec)->field_name); \ *out_len = (unsigned)strlen(*out_ptr); } #define UAT_FLD_HEX(basename,field_name,title,desc) \ @@ -496,34 +503,50 @@ static void basename ## _ ## field_name ## _tostr_cb(void* rec, const char** out #define UAT_VS_DEF(basename,field_name,rec_t,default_t,default_val,default_str) \ static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, guint len, const void* vs, const void* UNUSED_PARAMETER(u2)) {\ guint i; \ - char* str = ep_strndup(buf,len); \ - const char* cstr; ((rec_t*)rec)->field_name = default_val; \ + char* str = g_strndup(buf,len); \ + const char* cstr; \ + ((rec_t*)rec)->field_name = default_val; \ for(i=0; ( cstr = ((const value_string*)vs)[i].strptr ) ;i++) { \ if (g_str_equal(cstr,str)) { \ - ((rec_t*)rec)->field_name = (default_t)((const value_string*)vs)[i].value; return; } } } \ + ((rec_t*)rec)->field_name = (default_t)((const value_string*)vs)[i].value; \ + g_free(str); \ + return; \ + } \ + } \ + g_free(str); } \ static void basename ## _ ## field_name ## _tostr_cb(void* rec, const char** out_ptr, unsigned* out_len, const void* vs, const void* UNUSED_PARAMETER(u2)) {\ guint i; \ - *out_ptr = ep_strdup(default_str); \ + *out_ptr = g_strdup(default_str); \ *out_len = (unsigned)strlen(default_str);\ for(i=0;((const value_string*)vs)[i].strptr;i++) { \ if ( ((const value_string*)vs)[i].value == ((rec_t*)rec)->field_name ) { \ - *out_ptr = ep_strdup(((const value_string*)vs)[i].strptr); \ - *out_len = (unsigned)strlen(*out_ptr); return; } } } + g_free((char*)*out_ptr); \ + *out_ptr = g_strdup(((const value_string*)vs)[i].strptr); \ + *out_len = (unsigned)strlen(*out_ptr); \ + return; \ + } \ + } } \ #define UAT_VS_CSTRING_DEF(basename,field_name,rec_t,default_val,default_str) \ static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, guint len, const void* vs, const void* UNUSED_PARAMETER(u2)) {\ guint i; \ - char* str = ep_strndup(buf,len); \ - const char* cstr; ((rec_t*)rec)->field_name = default_val; \ + char* str = g_strndup(buf,len); \ + const char* cstr; \ + ((rec_t*)rec)->field_name = default_val; \ for(i=0; ( cstr = ((const value_string*)vs)[i].strptr ) ;i++) { \ if (g_str_equal(cstr,str)) { \ - ((rec_t*)rec)->field_name = g_strdup(((const value_string*)vs)[i].strptr); return; } } } \ + ((rec_t*)rec)->field_name = g_strdup(((const value_string*)vs)[i].strptr); \ + g_free(str); \ + return; \ + } \ + } \ + g_free(str);} \ static void basename ## _ ## field_name ## _tostr_cb(void* rec, const char** out_ptr, unsigned* out_len, const void* UNUSED_PARAMETER(vs), const void* UNUSED_PARAMETER(u2)) {\ if (((rec_t*)rec)->field_name ) { \ - *out_ptr = (((rec_t*)rec)->field_name); \ + *out_ptr = g_strdup((((rec_t*)rec)->field_name)); \ *out_len = (unsigned)strlen((((rec_t*)rec)->field_name)); \ } else { \ - *out_ptr = ""; *out_len = 0; } } + *out_ptr = g_strdup(""); *out_len = 0; } } #define UAT_FLD_VS(basename,field_name,title,enum,desc) \ {#field_name, title, PT_TXTMOD_ENUM,{uat_fld_chk_enum,basename ## _ ## field_name ## _set_cb,basename ## _ ## field_name ## _tostr_cb},{&(enum),&(enum),&(enum)},&(enum),desc,FLDFILL} @@ -547,10 +570,10 @@ static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, g } } \ static void basename ## _ ## field_name ## _tostr_cb(void* rec, const char** out_ptr, unsigned* out_len, const void* UNUSED_PARAMETER(u1), const void* UNUSED_PARAMETER(u2)) {\ if ( ((rec_t*)rec)->name_field ) { \ - *out_ptr = (((rec_t*)rec)->name_field); \ + *out_ptr = g_strdup((((rec_t*)rec)->name_field)); \ *out_len = (unsigned)strlen(*out_ptr); \ } else { \ - *out_ptr = ""; *out_len = 0; } } + *out_ptr = g_strdup(""); *out_len = 0; } } #define UAT_FLD_PROTO(basename,field_name,title,desc) \ @@ -562,15 +585,16 @@ static void basename ## _ ## field_name ## _tostr_cb(void* rec, const char** out #define UAT_RANGE_CB_DEF(basename,field_name,rec_t) \ static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, guint len, const void* UNUSED_PARAMETER(u1), const void* u2) {\ - char* rng = ep_strndup(buf,len);\ + char* rng = g_strndup(buf,len);\ range_convert_str(&(((rec_t*)rec)->field_name), rng,GPOINTER_TO_UINT(u2)); \ + g_free(rng); \ } \ static void basename ## _ ## field_name ## _tostr_cb(void* rec, const char** out_ptr, unsigned* out_len, const void* UNUSED_PARAMETER(u1), const void* UNUSED_PARAMETER(u2)) {\ if ( ((rec_t*)rec)->field_name ) { \ - *out_ptr = range_convert_range(((rec_t*)rec)->field_name); \ + *out_ptr = range_convert_range(NULL, ((rec_t*)rec)->field_name); \ *out_len = (unsigned)strlen(*out_ptr); \ } else { \ - *out_ptr = ""; *out_len = 0; } } + *out_ptr = g_strdup(""); *out_len = 0; } } #define UAT_FLD_RANGE(basename,field_name,title,max,desc) \ diff --git a/epan/uat_load.l b/epan/uat_load.l index 140b917f09..800929710d 100644 --- a/epan/uat_load.l +++ b/epan/uat_load.l @@ -79,7 +79,9 @@ static gchar *parse_str; static guint parse_str_pos; #define ERROR(fmtd) do { \ - error = ep_strdup_printf("%s:%d: %s",uat->filename,linenum,ep_strdup_printf fmtd); \ + char* fmt_str = g_strdup_printf fmtd; \ + error = g_strdup_printf("%s:%d: %s",uat->filename,linenum,fmt_str); \ + g_free(fmt_str); \ yyterminate(); \ } while(0) @@ -87,7 +89,7 @@ static guint parse_str_pos; { const gchar* errx; \ if (uat->fields[colnum].cb.chk) { \ if ( ! uat->fields[colnum].cb.chk(record, ptrx, len, uat->fields[colnum].cbdata.chk, uat->fields[colnum].fld_data, &errx) ) { \ - error = ep_strdup_printf("%s:%d: %s",uat->filename,linenum,ep_strdup_printf("%s",errx)); \ + error = g_strdup_printf("%s:%d: %s",uat->filename,linenum,errx); \ valid_record = FALSE; \ }\ }\ @@ -251,12 +253,8 @@ comment #[^\n]*\n uat->update_cb(rec,&err); if (err) { - char *tmp = ep_strdup(err); - /* XXX bit of a hack to remove emem from dissectors, this can - * be removed as proper use of glib memory is propogated - * through the rest of the UAT code */ - g_free((char*)err); - ERROR(("%s",tmp)); + error = err; + yyterminate(); } valid_record = TRUE; @@ -286,7 +284,7 @@ comment #[^\n]*\n gboolean -uat_load(uat_t *uat_in, const char **errx) +uat_load(uat_t *uat_in, char **errx) { gchar *fname = uat_get_actual_filename(uat_in, FALSE); @@ -304,7 +302,7 @@ uat_load(uat_t *uat_in, const char **errx) if (!(yyin = ws_fopen(fname,"r"))) { - *errx = g_strerror(errno); + *errx = g_strdup(g_strerror(errno)); g_free(fname); return FALSE; } @@ -329,7 +327,7 @@ uat_load(uat_t *uat_in, const char **errx) UAT_UPDATE(uat); if (error) { - *errx = ep_strdup(error); + *errx = g_strdup(error); return FALSE; } @@ -368,7 +366,7 @@ uat_load_str(uat_t *uat_in, char *entry, char **err) UAT_UPDATE(uat); if (error) { - *err = ep_strdup(error); + *err = g_strdup(error); return FALSE; } diff --git a/epan/wslua/wslua_proto.c b/epan/wslua/wslua_proto.c index 7c24d28313..516b2c773c 100644 --- a/epan/wslua/wslua_proto.c +++ b/epan/wslua/wslua_proto.c @@ -427,7 +427,13 @@ WSLUA_METAMETHOD Prefs__index(lua_State* L) { case PREF_UINT: lua_pushnumber(L,(lua_Number)prefs_p->value.u); break; case PREF_STRING: lua_pushstring(L,prefs_p->value.s); break; case PREF_ENUM: lua_pushnumber(L,(lua_Number)prefs_p->value.e); break; - case PREF_RANGE: lua_pushstring(L,range_convert_range(prefs_p->value.r)); break; + case PREF_RANGE: + { + char *push_str = range_convert_range(NULL, prefs_p->value.r); + lua_pushstring(L, push_str); + wmem_free(NULL, push_str); + } + break; default: WSLUA_ERROR(Prefs__index,"Unknow Pref type"); return 0; } WSLUA_RETURN(1); /* The current value of the preference. */ diff --git a/plugins/stats_tree/pinfo_stats_tree.c b/plugins/stats_tree/pinfo_stats_tree.c index f09325162f..0fa870ac68 100644 --- a/plugins/stats_tree/pinfo_stats_tree.c +++ b/plugins/stats_tree/pinfo_stats_tree.c @@ -174,10 +174,14 @@ static const gchar *st_str_plen = "Packet Lengths"; static void plen_stats_tree_init(stats_tree *st) { guint i; char **str_range_array = (char **)ep_alloc(num_plen_uat*sizeof(char*)); + char *tmp_str, *range_str; /* Convert the ranges to strings for the stats tree API */ for (i = 0; i < num_plen_uat; i++) { - str_range_array[i] = range_convert_range(uat_plen_records[i].packet_range); + tmp_str = range_convert_range(NULL, uat_plen_records[i].packet_range), + range_str = ep_strdup(tmp_str); + str_range_array[i] = range_str; + wmem_free(NULL, tmp_str); } st_node_plen = stats_tree_create_range_node_string(st, st_str_plen, 0, num_plen_uat, str_range_array); diff --git a/ui/gtk/main_menubar.c b/ui/gtk/main_menubar.c index 773a822ed5..8d5ff84276 100644 --- a/ui/gtk/main_menubar.c +++ b/ui/gtk/main_menubar.c @@ -4936,7 +4936,7 @@ menu_prefs_edit_dlg (GtkWidget *w, gpointer data) { pref_t *pref = (pref_t *)data; module_t *module = (module_t *)g_object_get_data (G_OBJECT(w), "module"); - gchar *value = NULL, *label_str; + gchar *value = NULL, *tmp_value, *label_str; GtkWidget *win, *main_grid, *main_vb, *bbox, *cancel_bt, *ok_bt; GtkWidget *entry, *label; @@ -4962,7 +4962,10 @@ menu_prefs_edit_dlg (GtkWidget *w, gpointer data) value = g_strdup(*pref->varp.string); break; case PREF_RANGE: - value = g_strdup(range_convert_range (*pref->varp.range)); + /* Convert wmem to g_alloc memory */ + tmp_value = range_convert_range(NULL, *pref->varp.range); + value = g_strdup(tmp_value); + wmem_free(NULL, tmp_value); break; default: g_assert_not_reached(); @@ -5024,7 +5027,7 @@ add_protocol_prefs_generic_menu(pref_t *pref, gpointer data, GtkUIManager *ui_me GSList *group = NULL; module_t *module = (module_t *)data; const enum_val_t *enum_valp; - gchar *label = NULL; + gchar *label = NULL, *tmp_str; switch (pref->type) { case PREF_UINT: @@ -5080,7 +5083,9 @@ add_protocol_prefs_generic_menu(pref_t *pref, gpointer data, GtkUIManager *ui_me g_free (label); break; case PREF_RANGE: - label = g_strdup_printf ("%s: %s", pref->title, range_convert_range (*pref->varp.range)); + tmp_str = range_convert_range (NULL, *pref->varp.range); + label = g_strdup_printf ("%s: %s", pref->title, tmp_str); + wmem_free(NULL, tmp_str); menu_item = gtk_menu_item_new_with_label(label); g_object_set_data (G_OBJECT(menu_item), "module", module); g_signal_connect(menu_item, "activate", G_CALLBACK(menu_prefs_edit_dlg), pref); diff --git a/ui/gtk/prefs_dlg.c b/ui/gtk/prefs_dlg.c index 95bf16edb6..961c82398f 100644 --- a/ui/gtk/prefs_dlg.c +++ b/ui/gtk/prefs_dlg.c @@ -225,9 +225,11 @@ pref_show(pref_t *pref, gpointer user_data) case PREF_RANGE: { - char *range_str_p; + char *range_str_p, *tmp_range; - range_str_p = range_convert_range(*pref->varp.range); + tmp_range = range_convert_range(NULL, *pref->varp.range); + range_str_p = ep_strdup(tmp_range); + wmem_free(NULL, tmp_range); pref->control = create_preference_entry(main_grid, pref->ordinal, label_string, tooltip_txt, range_str_p); diff --git a/ui/gtk/uat_gui.c b/ui/gtk/uat_gui.c index 497b0e041a..3321420bf1 100644 --- a/ui/gtk/uat_gui.c +++ b/ui/gtk/uat_gui.c @@ -181,7 +181,7 @@ static char *fld_tostr(void *rec, uat_field_t *f) { case PT_TXTMOD_ENUM: case PT_TXTMOD_FILENAME: case PT_TXTMOD_DIRECTORYNAME: - out = ep_strndup(ptr, len); + out = g_strndup(ptr, len); break; case PT_TXTMOD_HEXBYTES: { GString *s = g_string_sized_new( len*2 + 1 ); @@ -189,7 +189,7 @@ static char *fld_tostr(void *rec, uat_field_t *f) { for (i=0; i<len;i++) g_string_append_printf(s, "%.2X", ((const guint8*)ptr)[i]); - out = ep_strdup(s->str); + out = g_strdup(s->str); g_string_free(s, TRUE); break; @@ -200,27 +200,27 @@ static char *fld_tostr(void *rec, uat_field_t *f) { break; } + g_free((char*)ptr); return out; } static void append_row(uat_t *uat, guint idx) { - GPtrArray *a = g_ptr_array_new(); void *rec = UAT_INDEX_PTR(uat, idx); uat_field_t *f = uat->fields; guint colnum; GtkTreeIter iter; + gchar* tmp_str; if (! uat->rep) return; gtk_list_store_insert_before(uat->rep->list_store, &iter, NULL); for ( colnum = 0; colnum < uat->ncols; colnum++ ) { - g_ptr_array_add(a, fld_tostr(rec, &(f[colnum]))); - gtk_list_store_set(uat->rep->list_store, &iter, colnum, fld_tostr(rec, &(f[colnum])), -1); + tmp_str = fld_tostr(rec, &(f[colnum])); + gtk_list_store_set(uat->rep->list_store, &iter, colnum, tmp_str, -1); + g_free(tmp_str); } - - g_ptr_array_free(a, TRUE); } static void reset_row(uat_t *uat, guint idx) { @@ -229,6 +229,7 @@ static void reset_row(uat_t *uat, guint idx) { guint colnum; GtkTreePath *path; GtkTreeIter iter; + gchar* tmp_str; if (! uat->rep) return; @@ -238,22 +239,24 @@ static void reset_row(uat_t *uat, guint idx) { } for ( colnum = 0; colnum < uat->ncols; colnum++ ) { - gtk_list_store_set(uat->rep->list_store, &iter, colnum, fld_tostr(rec, &(f[colnum])), -1); + tmp_str = fld_tostr(rec, &(f[colnum])); + gtk_list_store_set(uat->rep->list_store, &iter, colnum, tmp_str, -1); + g_free(tmp_str); } } -static guint8 *unhexbytes(const char *si, guint len, guint *len_p, const char** err) { +static guint8 *unhexbytes(const char *si, guint len, guint *len_p, char** err) { guint8 *buf; guint8 *p; const guint8 *s = (const guint8 *)si; guint i; if (len % 2) { - *err = ep_strdup_printf("Uneven number of chars hex string %u \n'%s'", len, si); + *err = g_strdup_printf("Uneven number of chars hex string %u \n'%s'", len, si); return NULL; } - buf = (guint8 *)ep_alloc(len/2+1); + buf = (guint8 *)g_malloc(len/2+1); p = buf; for (i = 0; i<len ; i += 2) { @@ -297,7 +300,7 @@ static guint8 *unhexbytes(const char *si, guint len, guint *len_p, const char** return buf; on_error: - *err = "Error parsing hex string"; + *err = g_strdup("Error parsing hex string"); return NULL; } @@ -306,7 +309,7 @@ static gboolean uat_dlg_cb(GtkWidget *win _U_, gpointer user_data) { struct _uat_dlg_data *dd = (struct _uat_dlg_data *)user_data; guint ncols = dd->uat->ncols; uat_field_t *f = dd->uat->fields; - const char *err = NULL; + char *err = NULL, *tmp_err = NULL; guint colnum; for ( colnum = 0; colnum < ncols; colnum++ ) { @@ -334,10 +337,13 @@ static gboolean uat_dlg_cb(GtkWidget *win _U_, gpointer user_data) { case PT_TXTMOD_HEXBYTES: { text = gtk_entry_get_text(GTK_ENTRY(e)); - text = (const char *) unhexbytes(text, (guint) strlen(text), &len, &err); + text_free = unhexbytes(text, (guint) strlen(text), &len, &err); + text = (const char *)text_free; if (err) { - err = ep_strdup_printf("error in field '%s': %s", f[colnum].title, err); + tmp_err = err; + err = g_strdup_printf("error in field '%s': %s", f[colnum].title, tmp_err); + g_free(tmp_err); goto on_failure; } @@ -356,8 +362,10 @@ static gboolean uat_dlg_cb(GtkWidget *win _U_, gpointer user_data) { } if (f[colnum].cb.chk) { - if (! f[colnum].cb.chk(dd->rec, text, len, f[colnum].cbdata.chk, f[colnum].fld_data, &err)) { - err = ep_strdup_printf("error in column '%s': %s", f[colnum].title, err); + if (! f[colnum].cb.chk(dd->rec, text, len, f[colnum].cbdata.chk, f[colnum].fld_data, (const char**)&err)) { + tmp_err = err; + err = g_strdup_printf("error in column '%s': %s", f[colnum].title, tmp_err); + g_free(tmp_err); goto on_failure; } } @@ -368,16 +376,12 @@ static gboolean uat_dlg_cb(GtkWidget *win _U_, gpointer user_data) { } if (dd->uat->update_cb) { - dd->uat->update_cb(dd->rec, &err); + dd->uat->update_cb(dd->rec, (const char**)&err); if (err) { - char *tmp; - tmp = ep_strdup_printf("error updating record: %s", err); - /* XXX bit of a hack to remove emem from dissectors, this can - * be removed as proper use of glib memory is propogated - * through the rest of the UAT code */ - g_free((char*)err); - err = tmp; + tmp_err = err; + err = g_strdup_printf("error updating record: %s", tmp_err); + g_free(tmp_err); goto on_failure; } } @@ -417,6 +421,7 @@ static gboolean uat_dlg_cb(GtkWidget *win _U_, gpointer user_data) { on_failure: report_failure("%s", err); + g_free(err); return FALSE; } @@ -451,12 +456,15 @@ static void uat_edit_dialog(uat_t *uat, gint row, gboolean copy) { struct _uat_dlg_data *dd = (struct _uat_dlg_data *)g_malloc(sizeof(struct _uat_dlg_data)); uat_field_t *f = uat->fields; guint colnum; + gchar *tmp_str; /* Only allow a single operation at a time, prevents bug 9129 */ limit_buttons(uat); dd->entries = g_ptr_array_new(); - dd->win = dlg_conf_window_new(ep_strdup_printf("%s: %s", uat->name, (row == -1 ? "New" : "Edit"))); + tmp_str = g_strdup_printf("%s: %s", uat->name, (row == -1 ? "New" : "Edit")); + dd->win = dlg_conf_window_new(tmp_str); + g_free(tmp_str); dd->uat = uat; if (copy && row >= 0) { dd->rec = g_malloc0(uat->record_size); @@ -501,14 +509,17 @@ static void uat_edit_dialog(uat_t *uat, gint row, gboolean copy) { for ( colnum = 0; colnum < uat->ncols; colnum++ ) { GtkWidget *entry, *label, *event_box; char *text = fld_tostr(dd->rec, &(f[colnum])); + char *label_text; gchar *fc_filename; event_box = gtk_event_box_new(); - label = gtk_label_new(ep_strdup_printf("%s:", f[colnum].title)); + label_text = g_strdup_printf("%s:", f[colnum].title); + label = gtk_label_new(label_text); if (f[colnum].desc != NULL) gtk_widget_set_tooltip_text(event_box, f[colnum].desc); + g_free(label_text); gtk_misc_set_alignment(GTK_MISC(label), 1.0f, 0.5f); ws_gtk_grid_attach_defaults(GTK_GRID(main_grid), event_box, 0, colnum, 1, 1); gtk_container_add(GTK_CONTAINER(event_box), label); @@ -584,6 +595,7 @@ static void uat_edit_dialog(uat_t *uat, gint row, gboolean copy) { g_assert_not_reached(); return; } + g_free(text); } gtk_widget_grab_default(bt_ok); @@ -639,6 +651,7 @@ static void uat_del_dlg(uat_t *uat, int idx) { uat_field_t *f = uat->fields; guint colnum; void *rec = UAT_INDEX_PTR(uat, idx); + gchar *tmp_str; struct _uat_del *ud = (struct _uat_del *)g_malloc(sizeof(struct _uat_del)); @@ -647,7 +660,9 @@ static void uat_del_dlg(uat_t *uat, int idx) { ud->uat = uat; ud->idx = idx; - ud->win = win = dlg_conf_window_new(ep_strdup_printf("%s: Confirm Delete", uat->name)); + tmp_str = g_strdup_printf("%s: Confirm Delete", uat->name); + ud->win = win = dlg_conf_window_new(tmp_str); + g_free(tmp_str); gtk_window_set_resizable(GTK_WINDOW(win), FALSE); gtk_window_resize(GTK_WINDOW(win), 400, 25*(uat->ncols+2)); @@ -665,13 +680,16 @@ static void uat_del_dlg(uat_t *uat, int idx) { GtkWidget *label; char *text = fld_tostr(rec, &(f[colnum])); - label = gtk_label_new(ep_strdup_printf("%s:", f[colnum].title)); + tmp_str = g_strdup_printf("%s:", f[colnum].title); + label = gtk_label_new(tmp_str); gtk_misc_set_alignment(GTK_MISC(label), 1.0f, 0.5f); ws_gtk_grid_attach_defaults(GTK_GRID(main_grid), label, 0, colnum, 1, 1); + g_free(tmp_str); label = gtk_label_new(text); gtk_misc_set_alignment(GTK_MISC(label), 1.0f, 0.5f); ws_gtk_grid_attach_defaults(GTK_GRID(main_grid), label, 1, colnum, 1, 1); + g_free(text); } bbox = dlg_button_row_new(GTK_STOCK_CANCEL, GTK_STOCK_DELETE, NULL); @@ -789,7 +807,7 @@ static void uat_apply_changes(uat_t *uat) { static void uat_cancel_cb(GtkWidget *button _U_, gpointer u) { uat_t *uat = (uat_t *)u; - const gchar *err = NULL; + gchar *err = NULL; if (uat->changed) { uat_clear(uat); @@ -797,6 +815,7 @@ static void uat_cancel_cb(GtkWidget *button _U_, gpointer u) { if (err) { report_failure("Error while loading %s: %s", uat->name, err); + g_free(err); } uat_apply_changes (uat); @@ -820,13 +839,14 @@ static void uat_apply_cb(GtkButton *button _U_, gpointer u) { static void uat_ok_cb(GtkButton *button _U_, gpointer u) { uat_t *uat = (uat_t *)u; - const gchar *err = NULL; + gchar *err = NULL; if (uat->changed) { uat_save(uat, &err); if (err) { report_failure("Error while saving %s: %s", uat->name, err); + g_free(err); } if (uat->post_update_cb) uat->post_update_cb(); @@ -850,7 +870,7 @@ static void uat_clear_cb(GtkButton *button _U_, gpointer u) { static void uat_refresh_cb(GtkButton *button _U_, gpointer u) { uat_t *uat = (uat_t *)u; - const gchar *err = NULL; + gchar *err = NULL; guint i; uat_clear_cb(button, u); @@ -862,6 +882,7 @@ static void uat_refresh_cb(GtkButton *button _U_, gpointer u) { if (err) { report_failure("Error while loading %s: %s", uat->name, err); + g_free(err); } for (i = 0 ; i < uat->raw_data->len; i++) { @@ -886,7 +907,7 @@ static void remember_selected_row(GtkWidget *w _U_, gpointer u) { static void uat_yessave_cb(GtkWindow *w _U_, void *u) { uat_t *uat = (uat_t *)u; - const gchar *err = NULL; + gchar *err = NULL; window_delete_event_cb(uat->rep->unsaved_window, NULL, NULL); @@ -894,6 +915,7 @@ static void uat_yessave_cb(GtkWindow *w _U_, void *u) { if (err) { report_failure("Error while saving %s: %s", uat->name, err); + g_free(err); } g_signal_handlers_disconnect_by_func(uat->rep->window, uat_window_delete_event_cb, uat); @@ -936,10 +958,11 @@ static gboolean unsaved_dialog(GtkWindow *w _U_, GdkEvent *e _U_, gpointer u) { gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); gtk_container_add(GTK_CONTAINER(win), vbox); - message = ep_strdup_printf("Changes to '%s' are not being saved!\n" + message = g_strdup_printf("Changes to '%s' are not being saved!\n" "Do you want to save '%s'?", uat->name, uat->name); label = gtk_label_new(message); + g_free(message); bbox = dlg_button_row_new(GTK_STOCK_YES, GTK_STOCK_NO, NULL); diff --git a/ui/qt/io_graph_dialog.cpp b/ui/qt/io_graph_dialog.cpp index 034d23cbc3..997c56702f 100644 --- a/ui/qt/io_graph_dialog.cpp +++ b/ui/qt/io_graph_dialog.cpp @@ -560,8 +560,9 @@ void IOGraphDialog::reject() io_graph_free_cb(&iogs); } } - const char* err = NULL; + char* err = NULL; uat_save(iog_uat_, &err); + g_free(err); } QDialog::reject(); @@ -1074,8 +1075,9 @@ void IOGraphDialog::loadProfileGraphs() io_graph_free_cb, NULL, io_graph_fields); - const char* err = NULL; + char* err = NULL; uat_load(iog_uat_, &err); + g_free(err); } diff --git a/ui/qt/packet_range_group_box.cpp b/ui/qt/packet_range_group_box.cpp index 4d4bf948bc..2a50bbd1ff 100644 --- a/ui/qt/packet_range_group_box.cpp +++ b/ui/qt/packet_range_group_box.cpp @@ -52,7 +52,9 @@ void PacketRangeGroupBox::initRange(packet_range_t *range) { } if (range_->user_range) { - pr_ui_->rangeLineEdit->setText(range_convert_range(range_->user_range)); + char* tmp_str = range_convert_range(NULL, range_->user_range); + pr_ui_->rangeLineEdit->setText(tmp_str); + wmem_free(NULL, tmp_str); } updateCounts(); } diff --git a/ui/qt/sctp_chunk_statistics_dialog.cpp b/ui/qt/sctp_chunk_statistics_dialog.cpp index e9b58ed888..216840668e 100644 --- a/ui/qt/sctp_chunk_statistics_dialog.cpp +++ b/ui/qt/sctp_chunk_statistics_dialog.cpp @@ -273,7 +273,7 @@ void SCTPChunkStatisticsDialog::on_actionHideChunkType_triggered() void SCTPChunkStatisticsDialog::on_actionChunkTypePreferences_triggered() { - const gchar* err = NULL; + gchar* err = NULL; pref_t *pref = prefs_find_preference(prefs_find_module("sctp"),"statistics_chunk_types"); uat_t *uat = pref->varp.uat; @@ -282,6 +282,7 @@ void SCTPChunkStatisticsDialog::on_actionChunkTypePreferences_triggered() uat_load(pref->varp.uat, &err); if (err) { printf("Error loading table '%s': %s",pref->varp.uat->name,err); + g_free(err); } UatDialog *uatdialog = new UatDialog(this, pref->varp.uat); diff --git a/ui/qt/uat_dialog.cpp b/ui/qt/uat_dialog.cpp index 9a1128ae32..9c0bb1051d 100644 --- a/ui/qt/uat_dialog.cpp +++ b/ui/qt/uat_dialog.cpp @@ -186,6 +186,7 @@ QString UatDialog::fieldString(guint row, guint column) break; } + g_free((char*)str); return string_rep; } @@ -377,6 +378,7 @@ void UatDialog::enumPrefCurrentIndexChanged(int index) field->cb.set(rec, enum_txt.constData(), (unsigned) enum_txt.size(), field->cbdata.set, field->fld_data); ok_button_->setEnabled(true); } else { + g_free((char*)err); ok_button_->setEnabled(false); } uat_->changed = TRUE; @@ -403,6 +405,7 @@ void UatDialog::stringPrefTextChanged(const QString &text) saved_string_pref_ = text; ss = SyntaxLineEdit::Valid; } else { + g_free((char*)err); enable_ok = false; ss = SyntaxLineEdit::Invalid; } @@ -493,11 +496,12 @@ void UatDialog::on_buttonBox_accepted() if (!uat_) return; if (uat_->changed) { - const gchar *err = NULL; + gchar *err = NULL; uat_save(uat_, &err); if (err) { report_failure("Error while saving %s: %s", uat_->name, err); + g_free(err); } if (uat_->post_update_cb) { @@ -512,12 +516,13 @@ void UatDialog::on_buttonBox_rejected() if (!uat_) return; if (uat_->changed) { - const gchar *err = NULL; + gchar *err = NULL; uat_clear(uat_); uat_load(uat_, &err); if (err) { report_failure("Error while loading %s: %s", uat_->name, err); + g_free(err); } applyChanges(); } diff --git a/ui/win32/file_dlg_win32.c b/ui/win32/file_dlg_win32.c index 708dd680e5..4145f1dd3a 100644 --- a/ui/win32/file_dlg_win32.c +++ b/ui/win32/file_dlg_win32.c @@ -2102,8 +2102,11 @@ range_handle_wm_initdialog(HWND dlg_hwnd, packet_range_t *range) { /* Retain the filter text, and fill it in. */ if(range->user_range != NULL) { + char* tmp_str; cur_ctrl = GetDlgItem(dlg_hwnd, EWFD_RANGE_EDIT); - SetWindowText(cur_ctrl, utf_8to16(range_convert_range(range->user_range))); + tmp_str = range_convert_range(NULL, range->user_range); + SetWindowText(cur_ctrl, utf_8to16(tmp_str)); + wmem_free(NULL, tmp_str); } /* dynamic values in the range frame */ |