Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
| ... | ... |
@@ -26,6 +26,7 @@ |
| 26 | 26 |
|
| 27 | 27 |
#include "common.h" |
| 28 | 28 |
#include "base64.h" |
| 29 |
+#include "avassert.h" |
|
| 29 | 30 |
|
| 30 | 31 |
/* ---------------- private code */ |
| 31 | 32 |
static const uint8_t map2[] = |
| ... | ... |
@@ -48,10 +49,10 @@ int av_base64_decode(uint8_t *out, const char *in, int out_size) |
| 48 | 48 |
uint8_t *dst = out; |
| 49 | 49 |
|
| 50 | 50 |
v = 0; |
| 51 |
- for (i = 0; in[i] && in[i] != '='; i++) {
|
|
| 51 |
+ for (i = 0; ; i++) {
|
|
| 52 | 52 |
unsigned int index= in[i]-43; |
| 53 | 53 |
if (index>=FF_ARRAY_ELEMS(map2) || map2[index] == 0xff) |
| 54 |
- return -1; |
|
| 54 |
+ return in[i] && in[i] != '=' ? -1 : dst - out; |
|
| 55 | 55 |
v = (v << 6) + map2[index]; |
| 56 | 56 |
if (i & 3) {
|
| 57 | 57 |
if (dst - out < out_size) {
|
| ... | ... |
@@ -60,7 +61,8 @@ int av_base64_decode(uint8_t *out, const char *in, int out_size) |
| 60 | 60 |
} |
| 61 | 61 |
} |
| 62 | 62 |
|
| 63 |
- return dst - out; |
|
| 63 |
+ av_assert1(0); |
|
| 64 |
+ return 0; |
|
| 64 | 65 |
} |
| 65 | 66 |
|
| 66 | 67 |
/***************************************************************************** |