[FFmpeg-cvslog] base64: more thorough decode tests.
Reimar Döffinger
git at videolan.org
Sat Jan 21 12:05:10 CET 2012
ffmpeg | branch: master | Reimar Döffinger <Reimar.Doeffinger at gmx.de> | Fri Jan 20 23:26:10 2012 +0100| [8650d5faf95e319a59f40e08b2eff67bcbb4bc1a] | committer: Reimar Döffinger
base64: more thorough decode tests.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger at gmx.de>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8650d5faf95e319a59f40e08b2eff67bcbb4bc1a
---
libavutil/base64.c | 21 ++++++++++++++++++++-
1 files changed, 20 insertions(+), 1 deletions(-)
diff --git a/libavutil/base64.c b/libavutil/base64.c
index af4a420..8d18af1 100644
--- a/libavutil/base64.c
+++ b/libavutil/base64.c
@@ -136,15 +136,34 @@ static int test_encode_decode(const uint8_t *data, unsigned int data_size,
return 1;
}
- if ((data2_size = av_base64_decode(data2, encoded, max_data2_size)) < 0) {
+ if ((data2_size = av_base64_decode(data2, encoded, max_data2_size)) != data_size) {
printf("Failed: cannot decode the encoded string\n"
"Encoded:\n%s\n", encoded);
return 1;
}
+ if ((data2_size = av_base64_decode(data2, encoded, data_size)) != data_size) {
+ printf("Failed: cannot decode with minimal buffer\n"
+ "Encoded:\n%s\n", encoded);
+ return 1;
+ }
if (memcmp(data2, data, data_size)) {
printf("Failed: encoded/decoded data differs from original data\n");
return 1;
}
+ if (av_base64_decode(NULL, encoded, 0) != 0) {
+ printf("Failed: decode to NULL buffer\n");
+ return 1;
+ }
+ if (strlen(encoded)) {
+ char *end = strchr(encoded, '=');
+ if (!end)
+ end = encoded + strlen(encoded) - 1;
+ *end = '%';
+ if (av_base64_decode(NULL, encoded, 0) >= 0) {
+ printf("Failed: error detection\n");
+ return 1;
+ }
+ }
printf("Passed!\n");
return 0;
More information about the ffmpeg-cvslog
mailing list