Raise CaptionReadSyntaxError for malformed SRT instead of IndexError/ValueError - #417
Raise CaptionReadSyntaxError for malformed SRT instead of IndexError/ValueError#417eeshsaxena wants to merge 1 commit into
Conversation
…ValueError SRTReader.detect read lines[1] without checking there were two lines, and SRTReader.read parsed the '-->' timing line and each timestamp without validating them. Single-line content, a timing line missing its end timestamp, or a non-numeric timestamp raised a bare IndexError or ValueError. detect now returns False for short content and read raises CaptionReadSyntaxError for a malformed timing line.
|
Thanks for this — your later PR #419 covers most of the same ground (and adds a changelog entry + more test cases), so we'll merge that one instead. One thing #419 is missing that you have here: the Closing this one as superseded by #419. |
|
Hi! Gentle nudge on this one whenever you have some bandwidth. It's a small, self-contained fix ( |
|
Hi @eeshsaxena — as mentioned above, this is superseded by your #419. I've just commented there asking for the |
The SRT reader raises bare
IndexError/ValueErroron some malformed input instead of aCaptionRead*error:SRTReader().detect("1")->IndexError(readslines[1]without checking there are two lines)SRTReader().read("1\n00:00:01,000 -->\nHi")->IndexErrorfrom an empty end timestampValueErrorI made
detectreturnFalsefor content with fewer than two lines, andreadvalidate the-->timing line and wrap timestamp parsing so a malformed timing line raisesCaptionReadSyntaxError. Valid SRT parsing is unchanged.Added tests for single-line detection and malformed timing; they fail on
mainwith IndexError/ValueError and pass with the change, and the rest of the SRT tests still pass. Found it by fuzzing the readers with mutated captions.