diff
- static inline void DecodeBase64Block(uint8_t ascii[ASCII_BLOCK], uint8_t b64[B64_BLOCK])
+ static inline int DecodeBase64Block(uint8_t *ascii, size_t ascii_size, uint8_t b64[B64_BLOCK])
3     if (ascii_size < 3) return -1;
      ascii[0] = (uint8_t) (b64[0] << 2) | (b64[1] >> 4);
4     ascii[1] = (uint8_t) (b64[1] << 4) | (b64[2] >> 2);
5     ascii[2] = (uint8_t) (b64[2] << 6) | (b64[3]);
+     return 0;

// In the main function:
-1405             DecodeBase64Block(dptr, b64);
+1405             if (DecodeBase64Block(dptr, dest_size - *decoded_bytes, b64) < 0) {
+                    ecode = BASE64_ECODE_BUF;
+                    break;
+                }
