Browse Source

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@gmx.de>
tags/n0.11
Reimar Döffinger 14 years ago
parent
commit
2b336df3cb
1 changed files with 5 additions and 1 deletions
  1. +5
    -1
      libavutil/parseutils.c

+ 5
- 1
libavutil/parseutils.c View File

@@ -394,7 +394,11 @@ int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen,
if (!strncmp(alpha_string, "0x", 2)) { if (!strncmp(alpha_string, "0x", 2)) {
alpha = strtoul(alpha_string, &tail, 16); alpha = strtoul(alpha_string, &tail, 16);
} else { } 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) { if (tail == alpha_string || *tail || alpha > 255) {


Loading…
Cancel
Save