diff options
author | Luis Ontanon <luis.ontanon@gmail.com> | 2007-04-01 14:55:25 +0000 |
---|---|---|
committer | Luis Ontanon <luis.ontanon@gmail.com> | 2007-04-01 14:55:25 +0000 |
commit | b2e5988e63c7a7f75ed0c21f465abdad81ab49ea (patch) | |
tree | f5edd4535bf947cace94168acb9c473c01c08bee /epan/uat.h | |
parent | 0e34913ca883483d3f9a470a9a85aa84792f6bfd (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.h | 6 |
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; } } |