diff --git a/libavcodec/xpmdec.c b/libavcodec/xpmdec.c index 5bc02378c8..e7f8a90fdc 100644 --- a/libavcodec/xpmdec.c +++ b/libavcodec/xpmdec.c @@ -233,14 +233,12 @@ static size_t mod_strcspn(const char *string, const char *reject) return i; } -static uint32_t color_string_to_rgba(const char *p, int len) +static uint32_t color_string_to_rgba(const char *p, size_t len) { uint32_t ret = 0xFF000000; const ColorEntry *entry; char color_name[100]; - len = FFMIN(FFMAX(len, 0), sizeof(color_name) - 1); - if (*p == '#') { p++; len--; @@ -271,6 +269,7 @@ static uint32_t color_string_to_rgba(const char *p, int len) (hex_char_to_number(p[0]) << 28); } } else { + len = FFMIN(len, sizeof(color_name) - 1); strncpy(color_name, p, len); color_name[len] = '\0'; @@ -375,7 +374,7 @@ static int xpm_decode_frame(AVCodecContext *avctx, AVFrame *p, for (i = 0; i < ncolors; i++) { const uint8_t *index; - int len; + size_t len; ptr += mod_strcspn(ptr, "\"") + 1; if (end - ptr < cpp)