mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-28 12:32:17 +02:00
mov: Validate spherical metadata version
This commit is contained in:
parent
2365772300
commit
0f8512c4a8
@ -3235,7 +3235,7 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
|||||||
{
|
{
|
||||||
AVStream *st;
|
AVStream *st;
|
||||||
MOVStreamContext *sc;
|
MOVStreamContext *sc;
|
||||||
int size;
|
int size, version;
|
||||||
int32_t yaw, pitch, roll;
|
int32_t yaw, pitch, roll;
|
||||||
uint32_t tag;
|
uint32_t tag;
|
||||||
enum AVSphericalProjection projection;
|
enum AVSphericalProjection projection;
|
||||||
@ -3260,7 +3260,13 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
|||||||
av_log(c->fc, AV_LOG_ERROR, "Missing spherical video header\n");
|
av_log(c->fc, AV_LOG_ERROR, "Missing spherical video header\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
avio_skip(pb, 4); /* version + flags */
|
version = avio_r8(pb);
|
||||||
|
if (version != 0) {
|
||||||
|
av_log(c->fc, AV_LOG_WARNING, "Unknown spherical version %d\n",
|
||||||
|
version);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
avio_skip(pb, 3); /* flags */
|
||||||
avio_skip(pb, size - 12); /* metadata_source */
|
avio_skip(pb, size - 12); /* metadata_source */
|
||||||
|
|
||||||
size = avio_rb32(pb);
|
size = avio_rb32(pb);
|
||||||
@ -3282,7 +3288,13 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
|||||||
av_log(c->fc, AV_LOG_ERROR, "Missing projection header box\n");
|
av_log(c->fc, AV_LOG_ERROR, "Missing projection header box\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
avio_skip(pb, 4); /* version + flags */
|
version = avio_r8(pb);
|
||||||
|
if (version != 0) {
|
||||||
|
av_log(c->fc, AV_LOG_WARNING, "Unknown spherical version %d\n",
|
||||||
|
version);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
avio_skip(pb, 3); /* flags */
|
||||||
|
|
||||||
/* 16.16 fixed point */
|
/* 16.16 fixed point */
|
||||||
yaw = avio_rb32(pb);
|
yaw = avio_rb32(pb);
|
||||||
@ -3294,7 +3306,13 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
|||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
|
|
||||||
tag = avio_rl32(pb);
|
tag = avio_rl32(pb);
|
||||||
avio_skip(pb, 4); /* version + flags */
|
version = avio_r8(pb);
|
||||||
|
if (version != 0) {
|
||||||
|
av_log(c->fc, AV_LOG_WARNING, "Unknown spherical version %d\n",
|
||||||
|
version);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
avio_skip(pb, 3); /* flags */
|
||||||
switch (tag) {
|
switch (tag) {
|
||||||
case MKTAG('c','b','m','p'):
|
case MKTAG('c','b','m','p'):
|
||||||
projection = AV_SPHERICAL_CUBEMAP;
|
projection = AV_SPHERICAL_CUBEMAP;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user