ftype-protocol: do not return from TRY/CATCH
authorPeter Wu <peter@lekensteyn.nl>
Tue, 9 Oct 2018 15:14:11 +0000 (17:14 +0200)
committerAnders Broman <a.broman58@gmail.com>
Wed, 10 Oct 2018 04:03:15 +0000 (04:03 +0000)
TRY/CATCH are macros, before returning the ENDTRY block must be executed
or the weirdest crashes can occur.

Change-Id: Ic56871322f8567263e2b8a81cce5a3c7042301b7
Fixes: v2.1.0rc0-2939-g5493fe0167 ("Convert ftype-tvbuff.c to ftype-protocol.c")
Reviewed-on: https://code.wireshark.org/review/30095
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
epan/ftypes/ftype-protocol.c

index 8cdd1d4bf76cc7302be34c452260d8c333a2ccfe..0aadcc317aa9bae35055f50fee3cce632b99ef4d 100644 (file)
@@ -257,7 +257,7 @@ cmp_gt(const fvalue_t *fv_a, const fvalue_t *fv_b)
                                gt = (memcmp(tvb_get_ptr(a->tvb, 0, a_len), tvb_get_ptr(b->tvb, 0, a_len), a_len) > 0);
                        }
                } else {
-                       return (strcmp(a->proto_string, b->proto_string) > 0);
+                       gt = (strcmp(a->proto_string, b->proto_string) > 0);
                }
        }
        CATCH_ALL {
@@ -286,7 +286,7 @@ cmp_ge(const fvalue_t *fv_a, const fvalue_t *fv_b)
                                ge = (memcmp(tvb_get_ptr(a->tvb, 0, a_len), tvb_get_ptr(b->tvb, 0, a_len), a_len) >= 0);
                        }
                } else {
-                       return (strcmp(a->proto_string, b->proto_string) >= 0);
+                       ge = (strcmp(a->proto_string, b->proto_string) >= 0);
                }
        }
        CATCH_ALL {
@@ -315,7 +315,7 @@ cmp_lt(const fvalue_t *fv_a, const fvalue_t *fv_b)
                                lt = (memcmp(tvb_get_ptr(a->tvb, 0, a_len), tvb_get_ptr(b->tvb, 0, a_len), a_len) < 0);
                        }
                } else {
-                       return (strcmp(a->proto_string, b->proto_string) < 0);
+                       lt = (strcmp(a->proto_string, b->proto_string) < 0);
                }
        }
        CATCH_ALL {
@@ -344,7 +344,7 @@ cmp_le(const fvalue_t *fv_a, const fvalue_t *fv_b)
                                le = (memcmp(tvb_get_ptr(a->tvb, 0, a_len), tvb_get_ptr(b->tvb, 0, a_len), a_len) <= 0);
                        }
                } else {
-                       return (strcmp(a->proto_string, b->proto_string) <= 0);
+                       le = (strcmp(a->proto_string, b->proto_string) <= 0);
                }
        }
        CATCH_ALL {
@@ -428,7 +428,7 @@ cmp_matches(const fvalue_t *fv_a, const fvalue_t *fv_b)
                }
        }
        CATCH_ALL {
-               return FALSE;
+               rc = FALSE;
        }
        ENDTRY;
        return rc;