diff --git a/axl_rle.c b/axl_rle.c index 5d436af..8812b20 100644 --- a/axl_rle.c +++ b/axl_rle.c @@ -4,6 +4,11 @@ u32 axl_rle_encode(const u8* src, u32 src_size, u8* dst, u32 dst_size) { + if (src == NULL || dst == NULL || src_size == 0 || dst_size == 0) + { + return 0; + } + u8 vlq_buff[AXL_VLQ_MAX_LEN]; const u8* head = src; u32 used_size = 0; @@ -40,6 +45,11 @@ u32 axl_rle_encode(const u8* src, u32 src_size, u8* dst, u32 dst_size) u32 axl_rle_decode(const u8* src, u32 src_size, u8* dst, u32 dst_size) { + if (src == NULL || dst == NULL || src_size == 0 || dst_size == 0) + { + return 0; + } + const u8* head = src; u32 used_size = 0; @@ -48,7 +58,7 @@ u32 axl_rle_decode(const u8* src, u32 src_size, u8* dst, u32 dst_size) u32 repeat_count; u32 vlq_len = axl_vlq_decode(head, &repeat_count); - if(vlq_len == 0 || head + vlq_len + 1 >= src + src_size) + if(vlq_len == 0 || head + vlq_len + 1 > src + src_size) { return 0; }