[FFmpeg-cvslog] parseutils: reliably detect out-of-range alpha.

Reimar Döffinger git at videolan.org
Tue Apr 24 21:28:48 CEST 2012


ffmpeg | branch: master | Reimar Döffinger <Reimar.Doeffinger at gmx.de> | Tue Apr 24 20:18:57 2012 +0200| [2b336df3cb9d9bcc12c4b398ea1dbdfe224d152e] | committer: Reimar Döffinger

parseutils: reliably detect out-of-range alpha.

This should fix the FATE test on ARM (not tested),
but it should also detect alpha values like 2^128
reliably as invalid which would be another out-of-range
case with implementation-dependant behaviour.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger at gmx.de>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2b336df3cb9d9bcc12c4b398ea1dbdfe224d152e
---

 libavutil/parseutils.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/libavutil/parseutils.c b/libavutil/parseutils.c
index 064d490..037c4fb 100644
--- a/libavutil/parseutils.c
+++ b/libavutil/parseutils.c
@@ -394,7 +394,11 @@ int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen,
         if (!strncmp(alpha_string, "0x", 2)) {
             alpha = strtoul(alpha_string, &tail, 16);
         } else {
-            alpha = 255 * strtod(alpha_string, &tail);
+            double norm_alpha = strtod(alpha_string, &tail);
+            if (norm_alpha < 0.0 || norm_alpha > 1.0)
+                alpha = 256;
+            else
+                alpha = 255 * norm_alpha;
         }
 
         if (tail == alpha_string || *tail || alpha > 255) {



More information about the ffmpeg-cvslog mailing list