Do proper bounds checking in formats (bug #1356)
[asterisk/asterisk.git] / formats / format_wav_gsm.c
index 1d33caf..6c988bd 100755 (executable)
@@ -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;
                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) {
        if (whence != SEEK_FORCECUR) {
-               offset = (offset < min)?min:offset;
                offset = (offset > max)?max:offset;
        } else if (offset > max) {
                int i;
                offset = (offset > max)?max:offset;
        } else if (offset > max) {
                int i;