aboutsummaryrefslogtreecommitdiffstats
path: root/epan/uat.h
diff options
context:
space:
mode:
authorLuis Ontanon <luis.ontanon@gmail.com>2007-04-01 14:55:25 +0000
committerLuis Ontanon <luis.ontanon@gmail.com>2007-04-01 14:55:25 +0000
commitb2e5988e63c7a7f75ed0c21f465abdad81ab49ea (patch)
treef5edd4535bf947cace94168acb9c473c01c08bee /epan/uat.h
parent0e34913ca883483d3f9a470a9a85aa84792f6bfd (diff)
Fix management of lstrings in uat code so that arbitrary chars (even '\0's) can be used inside.
Fixes bug 1502 svn path=/trunk/; revision=21294
Diffstat (limited to 'epan/uat.h')
-rw-r--r--epan/uat.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/epan/uat.h b/epan/uat.h
index c950e7fae6..65afbb06d4 100644
--- a/epan/uat.h
+++ b/epan/uat.h
@@ -318,11 +318,11 @@ static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr,
#define UAT_LSTRING_CB_DEF(basename,field_name,rec_t,ptr_element,len_element) \
static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, unsigned len, void* u1 _U_, void* u2 _U_) {\
if ((((rec_t*)rec)->ptr_element)) g_free((((rec_t*)rec)->ptr_element)); \
- (((rec_t*)rec)->ptr_element) = g_strndup(buf,len); \
- (((rec_t*)rec)->len_element) = len; } \
+ (((rec_t*)rec)->ptr_element) = uat_unesc(buf,len,&(((rec_t*)rec)->len_element)); }\
static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr, unsigned* out_len, void* u1 _U_, void* u2 _U_) {\
if (((rec_t*)rec)->ptr_element ) { \
- *out_ptr = (((rec_t*)rec)->ptr_element); *out_len = (((rec_t*)rec)->len_element); \
+ *out_ptr = uat_esc(((rec_t*)rec)->ptr_element, (((rec_t*)rec)->len_element)); \
+ *out_len = strlen(*out_ptr); \
} else { \
*out_ptr = ""; *out_len = 0; } }