Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
e66fa353
Commit
e66fa353
authored
Feb 24, 2016
by
Vittorio Giovara
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vc1dec: Check group allocations separatedly
This avoids accessing NULL pointers in case of error.
parent
01f0e6a0
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
6 deletions
+19
-6
vc1dec.c
libavcodec/vc1dec.c
+19
-6
No files found.
libavcodec/vc1dec.c
View file @
e66fa353
...
@@ -324,31 +324,50 @@ av_cold int ff_vc1_decode_init_alloc_tables(VC1Context *v)
...
@@ -324,31 +324,50 @@ av_cold int ff_vc1_decode_init_alloc_tables(VC1Context *v)
v
->
fieldtx_plane
=
av_mallocz
(
s
->
mb_stride
*
mb_height
);
v
->
fieldtx_plane
=
av_mallocz
(
s
->
mb_stride
*
mb_height
);
v
->
acpred_plane
=
av_malloc
(
s
->
mb_stride
*
mb_height
);
v
->
acpred_plane
=
av_malloc
(
s
->
mb_stride
*
mb_height
);
v
->
over_flags_plane
=
av_malloc
(
s
->
mb_stride
*
mb_height
);
v
->
over_flags_plane
=
av_malloc
(
s
->
mb_stride
*
mb_height
);
if
(
!
v
->
mv_type_mb_plane
||
!
v
->
direct_mb_plane
||
!
v
->
forward_mb_plane
||
!
v
->
fieldtx_plane
||
!
v
->
acpred_plane
||
!
v
->
over_flags_plane
)
goto
error
;
v
->
n_allocated_blks
=
s
->
mb_width
+
2
;
v
->
n_allocated_blks
=
s
->
mb_width
+
2
;
v
->
block
=
av_malloc
(
sizeof
(
*
v
->
block
)
*
v
->
n_allocated_blks
);
v
->
block
=
av_malloc
(
sizeof
(
*
v
->
block
)
*
v
->
n_allocated_blks
);
v
->
cbp_base
=
av_malloc
(
sizeof
(
v
->
cbp_base
[
0
])
*
2
*
s
->
mb_stride
);
v
->
cbp_base
=
av_malloc
(
sizeof
(
v
->
cbp_base
[
0
])
*
2
*
s
->
mb_stride
);
if
(
!
v
->
block
||
!
v
->
cbp_base
)
goto
error
;
v
->
cbp
=
v
->
cbp_base
+
s
->
mb_stride
;
v
->
cbp
=
v
->
cbp_base
+
s
->
mb_stride
;
v
->
ttblk_base
=
av_malloc
(
sizeof
(
v
->
ttblk_base
[
0
])
*
2
*
s
->
mb_stride
);
v
->
ttblk_base
=
av_malloc
(
sizeof
(
v
->
ttblk_base
[
0
])
*
2
*
s
->
mb_stride
);
if
(
!
v
->
ttblk_base
)
goto
error
;
v
->
ttblk
=
v
->
ttblk_base
+
s
->
mb_stride
;
v
->
ttblk
=
v
->
ttblk_base
+
s
->
mb_stride
;
v
->
is_intra_base
=
av_mallocz
(
sizeof
(
v
->
is_intra_base
[
0
])
*
2
*
s
->
mb_stride
);
v
->
is_intra_base
=
av_mallocz
(
sizeof
(
v
->
is_intra_base
[
0
])
*
2
*
s
->
mb_stride
);
if
(
!
v
->
is_intra_base
)
goto
error
;
v
->
is_intra
=
v
->
is_intra_base
+
s
->
mb_stride
;
v
->
is_intra
=
v
->
is_intra_base
+
s
->
mb_stride
;
v
->
luma_mv_base
=
av_malloc
(
sizeof
(
v
->
luma_mv_base
[
0
])
*
2
*
s
->
mb_stride
);
v
->
luma_mv_base
=
av_malloc
(
sizeof
(
v
->
luma_mv_base
[
0
])
*
2
*
s
->
mb_stride
);
if
(
!
v
->
luma_mv_base
)
goto
error
;
v
->
luma_mv
=
v
->
luma_mv_base
+
s
->
mb_stride
;
v
->
luma_mv
=
v
->
luma_mv_base
+
s
->
mb_stride
;
/* allocate block type info in that way so it could be used with s->block_index[] */
/* allocate block type info in that way so it could be used with s->block_index[] */
v
->
mb_type_base
=
av_malloc
(
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
*
(
mb_height
+
1
)
*
2
);
v
->
mb_type_base
=
av_malloc
(
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
*
(
mb_height
+
1
)
*
2
);
if
(
!
v
->
mb_type_base
)
goto
error
;
v
->
mb_type
[
0
]
=
v
->
mb_type_base
+
s
->
b8_stride
+
1
;
v
->
mb_type
[
0
]
=
v
->
mb_type_base
+
s
->
b8_stride
+
1
;
v
->
mb_type
[
1
]
=
v
->
mb_type_base
+
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
+
1
;
v
->
mb_type
[
1
]
=
v
->
mb_type_base
+
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
+
1
;
v
->
mb_type
[
2
]
=
v
->
mb_type
[
1
]
+
s
->
mb_stride
*
(
mb_height
+
1
);
v
->
mb_type
[
2
]
=
v
->
mb_type
[
1
]
+
s
->
mb_stride
*
(
mb_height
+
1
);
/* allocate memory to store block level MV info */
/* allocate memory to store block level MV info */
v
->
blk_mv_type_base
=
av_mallocz
(
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
*
(
mb_height
+
1
)
*
2
);
v
->
blk_mv_type_base
=
av_mallocz
(
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
*
(
mb_height
+
1
)
*
2
);
if
(
!
v
->
blk_mv_type_base
)
goto
error
;
v
->
blk_mv_type
=
v
->
blk_mv_type_base
+
s
->
b8_stride
+
1
;
v
->
blk_mv_type
=
v
->
blk_mv_type_base
+
s
->
b8_stride
+
1
;
v
->
mv_f_base
=
av_mallocz
(
2
*
(
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
*
(
mb_height
+
1
)
*
2
));
v
->
mv_f_base
=
av_mallocz
(
2
*
(
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
*
(
mb_height
+
1
)
*
2
));
if
(
!
v
->
mv_f_base
)
goto
error
;
v
->
mv_f
[
0
]
=
v
->
mv_f_base
+
s
->
b8_stride
+
1
;
v
->
mv_f
[
0
]
=
v
->
mv_f_base
+
s
->
b8_stride
+
1
;
v
->
mv_f
[
1
]
=
v
->
mv_f
[
0
]
+
(
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
*
(
mb_height
+
1
)
*
2
);
v
->
mv_f
[
1
]
=
v
->
mv_f
[
0
]
+
(
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
*
(
mb_height
+
1
)
*
2
);
v
->
mv_f_next_base
=
av_mallocz
(
2
*
(
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
*
(
mb_height
+
1
)
*
2
));
v
->
mv_f_next_base
=
av_mallocz
(
2
*
(
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
*
(
mb_height
+
1
)
*
2
));
if
(
!
v
->
mv_f_next_base
)
goto
error
;
v
->
mv_f_next
[
0
]
=
v
->
mv_f_next_base
+
s
->
b8_stride
+
1
;
v
->
mv_f_next
[
0
]
=
v
->
mv_f_next_base
+
s
->
b8_stride
+
1
;
v
->
mv_f_next
[
1
]
=
v
->
mv_f_next
[
0
]
+
(
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
*
(
mb_height
+
1
)
*
2
);
v
->
mv_f_next
[
1
]
=
v
->
mv_f_next
[
0
]
+
(
s
->
b8_stride
*
(
mb_height
*
2
+
1
)
+
s
->
mb_stride
*
(
mb_height
+
1
)
*
2
);
...
@@ -362,12 +381,6 @@ av_cold int ff_vc1_decode_init_alloc_tables(VC1Context *v)
...
@@ -362,12 +381,6 @@ av_cold int ff_vc1_decode_init_alloc_tables(VC1Context *v)
}
}
}
}
if
(
!
v
->
mv_type_mb_plane
||
!
v
->
direct_mb_plane
||
!
v
->
acpred_plane
||
!
v
->
over_flags_plane
||
!
v
->
block
||
!
v
->
cbp_base
||
!
v
->
ttblk_base
||
!
v
->
is_intra_base
||
!
v
->
luma_mv_base
||
!
v
->
mb_type_base
)
{
goto
error
;
}
return
0
;
return
0
;
error:
error:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment