From c629eb1e60b8830171477c4e1a3d78645f05cb80 Mon Sep 17 00:00:00 2001 From: qndel Date: Wed, 18 Sep 2019 00:51:49 +0200 Subject: [PATCH] codec_decode cleanup (#1661) --- Source/codec.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/Source/codec.cpp b/Source/codec.cpp index 748fa2925..157c23141 100644 --- a/Source/codec.cpp +++ b/Source/codec.cpp @@ -34,20 +34,21 @@ int codec_decode(BYTE *pbSrcDst, DWORD size, char *pszPassword) memset(buf, 0, sizeof(buf)); sig = (CodecSignature *)pbSrcDst; if (sig->error > 0) { - size = 0; - SHA1Clear(); - } else { - SHA1Result(0, dst); - if (sig->checksum != *(DWORD *)dst) { - memset(dst, 0, sizeof(dst)); - size = 0; - SHA1Clear(); - } else { - size += sig->last_chunk_size - 64; - SHA1Clear(); - } + goto error; + } + + SHA1Result(0, dst); + if (sig->checksum != *(DWORD *)dst) { + memset(dst, 0, sizeof(dst)); + goto error; } + + size += sig->last_chunk_size - 64; + SHA1Clear(); return size; +error: + SHA1Clear(); + return 0; } void codec_init_key(int unused, char *pszPassword)