Do proper bounds checking in formats (bug #1356)
[asterisk/asterisk.git] / formats / format_pcm_alaw.c
index 6210306..db6b0c3 100755 (executable)
@@ -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 = 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);
 }
 
        return lseek(fs->fd, offset, SEEK_SET);
 }