From 2910b0434b33277fd660baaeca38f0aad76a38d8 Mon Sep 17 00:00:00 2001 From: Eric <5089238+emizzle@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:45:02 +1000 Subject: [PATCH] prevent IndexDefect when no parity data --- leopard/leopard.nim | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/leopard/leopard.nim b/leopard/leopard.nim index dd749b9..8be3354 100644 --- a/leopard/leopard.nim +++ b/leopard/leopard.nim @@ -142,15 +142,18 @@ func decode*( else: parityPtr[i] = nil - let - res = leoDecode( - self.bufSize.culonglong, - self.buffers.cuint, - self.parity.cuint, - self.decodeBufferCount.cuint, - cast[ptr pointer](addr dataPtr[0]), - cast[ptr pointer](addr parityPtr[0]), - cast[ptr pointer](addr self.decodeBufferPtr[0])) + let res = + if dataPtr.len == 0 or parityPtr.len == 0 or self.decodeBufferPtr.len == 0: + LeopardInvalidInput + else: + leoDecode( + self.bufSize.culonglong, + self.buffers.cuint, + self.parity.cuint, + self.decodeBufferCount.cuint, + cast[ptr pointer](addr dataPtr[0]), + cast[ptr pointer](addr parityPtr[0]), + cast[ptr pointer](addr self.decodeBufferPtr[0])) if ord(res) != ord(LeopardSuccess): return err(leoResultString(res.LeopardResult))