mirror of
https://github.com/nyanmisaka/ffmpeg-rockchip.git
synced 2026-01-23 23:21:06 +01:00
pixdesc: Only check against valid entries when iterating over lists of enums
Some of these enums have gaps in between their values, since they correspond
to the values in various specs, instead of being an incrementing list.
Fixes segfaults when, for example, using the valid API call:
av_color_primaries_from_name("jecdec-p22");
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
This commit is contained in:
parent
8c20ea8ee0
commit
238a8ae92f
1 changed files with 24 additions and 4 deletions
|
|
@ -2737,7 +2737,12 @@ int av_color_primaries_from_name(const char *name)
|
|||
int i;
|
||||
|
||||
for (i = 0; i < FF_ARRAY_ELEMS(color_primaries_names); i++) {
|
||||
size_t len = strlen(color_primaries_names[i]);
|
||||
size_t len;
|
||||
|
||||
if (!color_primaries_names[i])
|
||||
continue;
|
||||
|
||||
len = strlen(color_primaries_names[i]);
|
||||
if (!strncmp(color_primaries_names[i], name, len))
|
||||
return i;
|
||||
}
|
||||
|
|
@ -2756,7 +2761,12 @@ int av_color_transfer_from_name(const char *name)
|
|||
int i;
|
||||
|
||||
for (i = 0; i < FF_ARRAY_ELEMS(color_transfer_names); i++) {
|
||||
size_t len = strlen(color_transfer_names[i]);
|
||||
size_t len;
|
||||
|
||||
if (!color_transfer_names[i])
|
||||
continue;
|
||||
|
||||
len = strlen(color_transfer_names[i]);
|
||||
if (!strncmp(color_transfer_names[i], name, len))
|
||||
return i;
|
||||
}
|
||||
|
|
@ -2775,7 +2785,12 @@ int av_color_space_from_name(const char *name)
|
|||
int i;
|
||||
|
||||
for (i = 0; i < FF_ARRAY_ELEMS(color_space_names); i++) {
|
||||
size_t len = strlen(color_space_names[i]);
|
||||
size_t len;
|
||||
|
||||
if (!color_space_names[i])
|
||||
continue;
|
||||
|
||||
len = strlen(color_space_names[i]);
|
||||
if (!strncmp(color_space_names[i], name, len))
|
||||
return i;
|
||||
}
|
||||
|
|
@ -2794,7 +2809,12 @@ int av_chroma_location_from_name(const char *name)
|
|||
int i;
|
||||
|
||||
for (i = 0; i < FF_ARRAY_ELEMS(chroma_location_names); i++) {
|
||||
size_t len = strlen(chroma_location_names[i]);
|
||||
size_t len;
|
||||
|
||||
if (!chroma_location_names[i])
|
||||
continue;
|
||||
|
||||
len = strlen(chroma_location_names[i]);
|
||||
if (!strncmp(chroma_location_names[i], name, len))
|
||||
return i;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue