diff --git a/epan/reassemble.c b/epan/reassemble.c
index 5ff9dcf..0838cb1 100644
--- a/epan/reassemble.c
+++ b/epan/reassemble.c
@@ -1008,9 +1008,11 @@ fragment_add_work(fragment_data *fd_head, tvbuff_t *tvb, const int offset,
/* If we have reached this point, the packet is not defragmented yet.
* Save all payload in a buffer until we can defragment.
- * XXX - what if we didn't capture the entire fragment due
- * to a too-short snapshot length?
*/
+ if (!tvb_bytes_exist(tvb, offset, fd->len)) {
+ g_slice_free(fragment_data, fd);
+ THROW(BoundsError);
+ }
fd->data = (unsigned char *)g_malloc(fd->len);
tvb_memcpy(tvb, fd->data, offset, fd->len);
LINK_FRAG(fd_head,fd);