diff options
author | Hadriel Kaplan <hadrielk@yahoo.com> | 2014-12-30 17:39:56 -0500 |
---|---|---|
committer | Hadriel Kaplan <hadrielk@yahoo.com> | 2014-12-31 06:34:21 +0000 |
commit | 0bf38f7aec22a1a6e4acfbfec4a9a2201fd6f8de (patch) | |
tree | c0ca280301509b492201ef9255268f578a6b5bf8 /epan/wslua | |
parent | 27be466c9b6ac1bdd62a5b86bf9c684ac55482ee (diff) |
Lua: getting fieldinfo.value for FT_NONE causes assert
Retrieving an FT_NONE field's value through `fieldinfo.value` or
`fieldinfo()` causes an assert. It should retrieve the label instead.
Bug: 10815
Change-Id: Ia80443f3dd046b2cc31d1dff70d599e96d6f6fe3
Reviewed-on: https://code.wireshark.org/review/6150
Petri-Dish: Hadriel Kaplan <hadrielk@yahoo.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Reviewed-by: Hadriel Kaplan <hadrielk@yahoo.com>
Tested-by: Hadriel Kaplan <hadrielk@yahoo.com>
Diffstat (limited to 'epan/wslua')
-rw-r--r-- | epan/wslua/wslua_field.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/epan/wslua/wslua_field.c b/epan/wslua/wslua_field.c index 6abbd1ccad..7712f0e2c7 100644 --- a/epan/wslua/wslua_field.c +++ b/epan/wslua/wslua_field.c @@ -175,11 +175,13 @@ WSLUA_METAMETHOD FieldInfo__call(lua_State* L) { return 1; } case FT_NONE: - if (fi->ws_fi->length == 0) { - lua_pushnil(L); - return 1; + if (fi->ws_fi->length > 0 && fi->ws_fi->rep) { + /* it has a length, but calling fvalue_get() on an FT_NONE asserts, + so get the label instead (it's a FT_NONE, so a label is what it basically is) */ + lua_pushstring(L, fi->ws_fi->rep->representation); + return 1; } - /* FALLTHROUGH */ + return 0; case FT_BYTES: case FT_UINT_BYTES: case FT_REL_OID: |