[FFmpeg-devel] [PATCH 2/3] pmpdec: fix signedness
Michael Niedermayer
michaelni at gmx.at
Sun Feb 24 23:20:31 CET 2013
On Sun, Feb 24, 2013 at 05:06:24PM -0500, Don Moir wrote:
> ----- Original Message ----- From: "Reimar Döffinger"
> <Reimar.Doeffinger at gmx.de>
> To: "FFmpeg development discussions and patches" <ffmpeg-devel at ffmpeg.org>
> Sent: Saturday, February 23, 2013 5:46 PM
> Subject: Re: [FFmpeg-devel] [PATCH 2/3] pmpdec: fix signedness
>
> >On 23 Feb 2013, at 22:08, Michael Niedermayer <michaelni at gmx.at> wrote:
> >
> >
> >>>Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> >>>---
> >>>libavformat/pmpdec.c | 4 ++--
> >>>1 file changed, 2 insertions(+), 2 deletions(-)
> >>>
> >>>diff --git a/libavformat/pmpdec.c b/libavformat/pmpdec.c
> >>>index 358f7b6..38eba14 100644
> >>>--- a/libavformat/pmpdec.c
> >>>+++ b/libavformat/pmpdec.c
> >>>@@ -44,7 +44,7 @@ static int pmp_header(AVFormatContext *s)
> >>> PMPContext *pmp = s->priv_data;
> >>> AVIOContext *pb = s->pb;
> >>> int tb_num, tb_den;
> >>>- int index_cnt;
> >>>+ unsigned index_cnt;
> >>> int audio_codec_id = AV_CODEC_ID_NONE;
> >>> int srate, channels;
> >>> int i;
> >>>@@ -93,7 +93,7 @@ static int pmp_header(AVFormatContext *s)
> >>> channels = avio_rl32(pb) + 1;
> >>> pos = avio_tell(pb) + 4*index_cnt;
> >>> for (i = 0; i < index_cnt; i++) {
> >>>- int size = avio_rl32(pb);
> >>>+ unsigned size = avio_rl32(pb);
>
> >>Why not go all the way and use uint32_t ?
> >>Seems safest to do.
> >>All patches look ok to me.
>
> >By changing size and index_cnt to uint32_t it introduces 3
> >warnings for signed/unsigned mismatch for me when compiling that
> >code in Visual Studio. You don't see that in mingw. But more than
> >that, it seems to me by keeping them as int you get an automatic
> >check for an out of bounds condition. That is, an exceesively
> >large number will be negative and fail accordingly.
>
> Also if index_cnt is a number greater than INT_MAX since it's now uint32_t and since ' i ' is an int, an endless loop will occur.
no
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Breaking DRM is a little like attempting to break through a door even
though the window is wide open and the only thing in the house is a bunch
of things you dont want and which you would get tomorrow for free anyway
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20130224/39188502/attachment.asc>
More information about the ffmpeg-devel
mailing list