summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--caputils/airpcap_loader.c14
-rw-r--r--epan/dfilter/dfilter-macro.c4
-rw-r--r--epan/dissectors/packet-dtls.c1
-rw-r--r--epan/dissectors/packet-k12.c4
-rw-r--r--epan/dissectors/packet-lbm.h12
-rw-r--r--epan/dissectors/packet-ssl-utils.c22
-rw-r--r--epan/dissectors/packet-ssl.c1
-rw-r--r--epan/prefs.c18
-rw-r--r--epan/range.c14
-rw-r--r--epan/range.h5
-rw-r--r--epan/uat-int.h2
-rw-r--r--epan/uat.c90
-rw-r--r--epan/uat.h76
-rw-r--r--epan/uat_load.l22
-rw-r--r--epan/wslua/wslua_proto.c8
-rw-r--r--plugins/stats_tree/pinfo_stats_tree.c6
-rw-r--r--ui/gtk/main_menubar.c13
-rw-r--r--ui/gtk/prefs_dlg.c6
-rw-r--r--ui/gtk/uat_gui.c91
-rw-r--r--ui/qt/io_graph_dialog.cpp6
-rw-r--r--ui/qt/packet_range_group_box.cpp4
-rw-r--r--ui/qt/sctp_chunk_statistics_dialog.cpp3
-rw-r--r--ui/qt/uat_dialog.cpp9
-rw-r--r--ui/win32/file_dlg_win32.c5
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 */