From 2b336df3cb9d9bcc12c4b398ea1dbdfe224d152e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reimar=20D=C3=B6ffinger?= Date: Tue, 24 Apr 2012 20:18:57 +0200 Subject: [PATCH] parseutils: reliably detect out-of-range alpha. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- libavutil/parseutils.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libavutil/parseutils.c b/libavutil/parseutils.c index 064d490a04..037c4fb9f6 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) {