aboutsummaryrefslogtreecommitdiffstats
path: root/epan/wslua
diff options
context:
space:
mode:
authorHadriel Kaplan <hadrielk@yahoo.com>2014-12-30 17:39:56 -0500
committerHadriel Kaplan <hadrielk@yahoo.com>2014-12-31 06:34:21 +0000
commit0bf38f7aec22a1a6e4acfbfec4a9a2201fd6f8de (patch)
treec0ca280301509b492201ef9255268f578a6b5bf8 /epan/wslua
parent27be466c9b6ac1bdd62a5b86bf9c684ac55482ee (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.c10
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: