pre-memcpy source size check.
diff --git a/src/libbz3.c b/src/libbz3.c
index ea5a420..d5d90cc 100644
--- a/src/libbz3.c
+++ b/src/libbz3.c
@@ -264,6 +264,11 @@ PUBLIC_API s32 bz3_decode_block(struct bz3_state * state, u8 * buffer, s32 data_
state->last_error = BZ3_OK;
+ if(size_src > state->block_size + state->block_size / 50 + 16 || size_src < 0) {
+ state->last_error = BZ3_ERR_MALFORMED_HEADER;
+ return -1;
+ }
+
// XXX: Better solution
if (b1 != buffer) memcpy(buffer, b1, size_src);
