Do proper bounds checking in formats (bug #1356)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2694 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.0
Mark Spencer 21 years ago
parent de51a91db3
commit a3d9d7b58b

@ -183,8 +183,9 @@ static int g729_seek(struct ast_filestream *fs, long sample_offset, int whence)
offset = max - bytes;
if (whence != SEEK_FORCECUR) {
offset = (offset > max)?max:offset;
offset = (offset < min)?min:offset;
}
// protect against seeking beyond begining.
offset = (offset < min)?min:offset;
if (lseek(fs->fd, offset, SEEK_SET) < 0)
return -1;
return 0;

@ -197,9 +197,10 @@ static int gsm_seek(struct ast_filestream *fs, long sample_offset, int whence)
offset = distance + cur;
else if(whence == SEEK_END)
offset = max - distance;
// Always protect against seeking past the begining.
offset = (offset < min)?min:offset;
if (whence != SEEK_FORCECUR) {
offset = (offset > max)?max:offset;
offset = (offset < min)?min:offset;
} else if (offset > max) {
int i;
lseek(fs->fd, 0, SEEK_END);

@ -172,8 +172,9 @@ static int pcm_seek(struct ast_filestream *fs, long sample_offset, int whence)
offset = max - sample_offset;
if (whence != SEEK_FORCECUR) {
offset = (offset > max)?max:offset;
offset = (offset < min)?min:offset;
}
// always protect against seeking past begining.
offset = (offset < min)?min:offset;
return lseek(fs->fd, offset, SEEK_SET);
}

@ -253,8 +253,9 @@ static int pcm_seek(struct ast_filestream *fs, long sample_offset, int whence)
offset = max - sample_offset;
if (whence != SEEK_FORCECUR) {
offset = (offset > max)?max:offset;
offset = (offset < min)?min:offset;
}
// Always protect against seeking past begining
offset = (offset < min)?min:offset;
return lseek(fs->fd, offset, SEEK_SET);
}

@ -525,8 +525,9 @@ static int wav_seek(struct ast_filestream *fs, long sample_offset, int whence)
offset = max - samples;
if (whence != SEEK_FORCECUR) {
offset = (offset > max)?max:offset;
offset = (offset < min)?min:offset;
}
// always protect the header space.
offset = (offset < min)?min:offset;
return lseek(fs->fd,offset,SEEK_SET);
}

@ -493,8 +493,9 @@ static int wav_seek(struct ast_filestream *fs, long sample_offset, int whence)
offset = distance + cur;
else if(whence == SEEK_END)
offset = max - distance;
// always protect against seeking past end of header
offset = (offset < min)?min:offset;
if (whence != SEEK_FORCECUR) {
offset = (offset < min)?min:offset;
offset = (offset > max)?max:offset;
} else if (offset > max) {
int i;

Loading…
Cancel
Save