util/base64: remove coverity reported dead code

New defect(s) Reported-by: Coverity Scan
Showing 1 of 1 defect(s)

** CID 1596621:  Control flow issues  (DEADCODE)
/src/util-base64.c: 238 in DecodeBase64RFC4648()

________________________________________________________________________________________________________
*** CID 1596621:  Control flow issues  (DEADCODE)
/src/util-base64.c: 238 in DecodeBase64RFC4648()
232         DEBUG_VALIDATE_BUG_ON(bbidx == B64_BLOCK);
233
234         /* Handle any leftover bytes by adding padding to them as long as they do not
235          * violate the destination buffer size */
236         if (bbidx > 0) {
237             padding = bbidx > 1 ? B64_BLOCK - bbidx : 2;
>>>     CID 1596621:  Control flow issues  (DEADCODE)
>>>     Execution cannot reach the expression "3U" inside this statement: "numDecoded_blk = 3U - ((pad...".
238             uint32_t numDecoded_blk = ASCII_BLOCK - (padding < B64_BLOCK ? padding : ASCII_BLOCK);
239             if (dest_size < *decoded_bytes + numDecoded_blk) {
240                 SCLogDebug("Destination buffer full");
241                 return BASE64_ECODE_BUF;
242             }
243             /* Decode base-64 block into ascii block and move pointer */

Also, add a comment explaining the padding logic for leftover data.

Bug 6985
pull/11015/head
Shivani Bhardwaj 2 years ago committed by Victor Julien
parent fcca5c7514
commit 99eaf3943a

@ -234,8 +234,21 @@ static inline Base64Ecode DecodeBase64RFC4648(uint8_t *dest, uint32_t dest_size,
/* Handle any leftover bytes by adding padding to them as long as they do not
* violate the destination buffer size */
if (bbidx > 0) {
/*
* --------------------
* | bbidx | padding |
* --------------------
* | 1 | 2 |
* | 2 | 2 |
* | 3 | 1 |
* --------------------
* Note: Padding for 1 byte is set to 2 to have at least one
* decoded byte while calculating numDecoded_blk
* This does not affect the decoding as the b64 array is already
* populated with all padding bytes unless overwritten.
* */
padding = bbidx > 1 ? B64_BLOCK - bbidx : 2;
uint32_t numDecoded_blk = ASCII_BLOCK - (padding < B64_BLOCK ? padding : ASCII_BLOCK);
uint32_t numDecoded_blk = ASCII_BLOCK - padding;
if (dest_size < *decoded_bytes + numDecoded_blk) {
SCLogDebug("Destination buffer full");
return BASE64_ECODE_BUF;

Loading…
Cancel
Save