summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-tds.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-tds.c')
-rw-r--r--epan/dissectors/packet-tds.c24
1 files changed, 10 insertions, 14 deletions
diff --git a/epan/dissectors/packet-tds.c b/epan/dissectors/packet-tds.c
index e272baaa5b..f761c31dbf 100644
--- a/epan/dissectors/packet-tds.c
+++ b/epan/dissectors/packet-tds.c
@@ -156,8 +156,7 @@
#include <epan/packet.h>
#include <epan/conversation.h>
#include <epan/strutil.h>
-
-#include "packet-frame.h"
+#include <epan/show_exception.h>
#include <epan/reassemble.h>
#include <epan/prefs.h>
#include <epan/emem.h>
@@ -2578,30 +2577,27 @@ dissect_tds_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/*
* Dissect the Netlib buffer.
*
- * Catch the ReportedBoundsError exception; if this
- * particular Netlib buffer happens to get a
- * ReportedBoundsError exception, that doesn't mean
- * that we should stop dissecting PDUs within this frame
- * or chunk of reassembled data.
+ * If it gets an error that means there's no point in
+ * dissecting any more Netlib buffers, rethrow the
+ * exception in question.
*
- * If it gets a BoundsError, we can stop, as there's nothing
- * more to see, so we just re-throw it.
+ * If it gets any other error, report it and continue, as that
+ * means that Netlib buffer got an error, but that doesn't mean
+ * we should stop dissecting Netlib buffers within this frame
+ * or chunk of reassembled data.
*/
pd_save = pinfo->private_data;
TRY {
dissect_netlib_buffer(next_tvb, pinfo, tree);
}
- CATCH(BoundsError) {
- RETHROW;
- }
- CATCH(ReportedBoundsError) {
+ CATCH_NONFATAL_ERRORS {
/* Restore the private_data structure in case one of the
* called dissectors modified it (and, due to the exception,
* was unable to restore it).
*/
pinfo->private_data = pd_save;
- show_reported_bounds_error(tvb, pinfo, tree);
+ show_exception(tvb, pinfo, tree, EXCEPT_CODE, GET_MESSAGE);
}
ENDTRY;