Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
fd9badd3
Commit
fd9badd3
authored
Nov 16, 2014
by
Luca Barbato
Committed by
Vittorio Giovara
Nov 21, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
xwma: Do not leak on failure path
CC: libav-stable@libav.org Bug-Id: CID 1087092
parent
aa8b39d9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
8 deletions
+15
-8
xwma.c
libavformat/xwma.c
+15
-8
No files found.
libavformat/xwma.c
View file @
fd9badd3
...
@@ -44,7 +44,7 @@ static int xwma_probe(AVProbeData *p)
...
@@ -44,7 +44,7 @@ static int xwma_probe(AVProbeData *p)
static
int
xwma_read_header
(
AVFormatContext
*
s
)
static
int
xwma_read_header
(
AVFormatContext
*
s
)
{
{
int64_t
size
;
int64_t
size
;
int
ret
;
int
ret
=
0
;
uint32_t
dpds_table_size
=
0
;
uint32_t
dpds_table_size
=
0
;
uint32_t
*
dpds_table
=
0
;
uint32_t
*
dpds_table
=
0
;
unsigned
int
tag
;
unsigned
int
tag
;
...
@@ -130,8 +130,10 @@ static int xwma_read_header(AVFormatContext *s)
...
@@ -130,8 +130,10 @@ static int xwma_read_header(AVFormatContext *s)
/* parse the remaining RIFF chunks */
/* parse the remaining RIFF chunks */
for
(;;)
{
for
(;;)
{
if
(
pb
->
eof_reached
)
if
(
pb
->
eof_reached
)
{
return
-
1
;
ret
=
AVERROR_INVALIDDATA
;
goto
fail
;
}
/* read next chunk tag */
/* read next chunk tag */
tag
=
avio_rl32
(
pb
);
tag
=
avio_rl32
(
pb
);
size
=
avio_rl32
(
pb
);
size
=
avio_rl32
(
pb
);
...
@@ -152,7 +154,8 @@ static int xwma_read_header(AVFormatContext *s)
...
@@ -152,7 +154,8 @@ static int xwma_read_header(AVFormatContext *s)
/* Error out if there is more than one dpds chunk. */
/* Error out if there is more than one dpds chunk. */
if
(
dpds_table
)
{
if
(
dpds_table
)
{
av_log
(
s
,
AV_LOG_ERROR
,
"two dpds chunks present
\n
"
);
av_log
(
s
,
AV_LOG_ERROR
,
"two dpds chunks present
\n
"
);
return
-
1
;
ret
=
AVERROR_INVALIDDATA
;
goto
fail
;
}
}
/* Compute the number of entries in the dpds chunk. */
/* Compute the number of entries in the dpds chunk. */
...
@@ -184,8 +187,10 @@ static int xwma_read_header(AVFormatContext *s)
...
@@ -184,8 +187,10 @@ static int xwma_read_header(AVFormatContext *s)
}
}
/* Determine overall data length */
/* Determine overall data length */
if
(
size
<
0
)
if
(
size
<
0
)
{
return
-
1
;
ret
=
AVERROR_INVALIDDATA
;
goto
fail
;
}
if
(
!
size
)
{
if
(
!
size
)
{
xwma
->
data_end
=
INT64_MAX
;
xwma
->
data_end
=
INT64_MAX
;
}
else
}
else
...
@@ -204,7 +209,8 @@ static int xwma_read_header(AVFormatContext *s)
...
@@ -204,7 +209,8 @@ static int xwma_read_header(AVFormatContext *s)
av_log
(
s
,
AV_LOG_ERROR
,
av_log
(
s
,
AV_LOG_ERROR
,
"Invalid bits_per_coded_sample %d for %d channels
\n
"
,
"Invalid bits_per_coded_sample %d for %d channels
\n
"
,
st
->
codec
->
bits_per_coded_sample
,
st
->
codec
->
channels
);
st
->
codec
->
bits_per_coded_sample
,
st
->
codec
->
channels
);
return
AVERROR_INVALIDDATA
;
ret
=
AVERROR_INVALIDDATA
;
goto
fail
;
}
}
st
->
duration
=
total_decoded_bytes
/
bytes_per_sample
;
st
->
duration
=
total_decoded_bytes
/
bytes_per_sample
;
...
@@ -239,9 +245,10 @@ static int xwma_read_header(AVFormatContext *s)
...
@@ -239,9 +245,10 @@ static int xwma_read_header(AVFormatContext *s)
st
->
duration
=
(
size
<<
3
)
*
st
->
codec
->
sample_rate
/
st
->
codec
->
bit_rate
;
st
->
duration
=
(
size
<<
3
)
*
st
->
codec
->
sample_rate
/
st
->
codec
->
bit_rate
;
}
}
fail:
av_free
(
dpds_table
);
av_free
(
dpds_table
);
return
0
;
return
ret
;
}
}
static
int
xwma_read_packet
(
AVFormatContext
*
s
,
AVPacket
*
pkt
)
static
int
xwma_read_packet
(
AVFormatContext
*
s
,
AVPacket
*
pkt
)
...
...
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