mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 20:20:07 +00:00
Do proper bounds checking in formats (bug #1356)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2694 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -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;
|
||||
if (whence != SEEK_FORCECUR) {
|
||||
// always protect against seeking past end of header
|
||||
offset = (offset < min)?min:offset;
|
||||
if (whence != SEEK_FORCECUR) {
|
||||
offset = (offset > max)?max:offset;
|
||||
} else if (offset > max) {
|
||||
int i;
|
||||
|
Reference in New Issue
Block a user