Re: Pod::Simple can treat binary as pod due to liberal/inconsistent regexp patterns
[email protected] ("David E. Wheeler") Wed, 7 Jan 2015 21:38:04 -0800
| Newsgroups | perl.pod-people |
|---|---|
| Message-ID | <[email protected]> |
On Jan 7, 2015, at 11:30 AM, Karl Williamson <[email protected]> wrote: >> I asked David about the inconsistency and he asked that I bring it up here. >> >> Shouldn't the more strict regexp be used in both places? > > I think so. Looking at the regexes though, I didn't know that directives could be capitals, and I thought that digits had to always be the last character (or characters ?) in a directive. It seems to me that both regexes should be tightened. perlpodspec says: > Pod content is contained in Pod blocks. A Pod block starts with a line > that matches <m/\A=[a-zA-Z]/>, and continues up to the next line that > matches "m/\A=cut/" or up to the end of the file if there is no > "m/\A=cut/" line. I agree that’s too liberal. I suggest /\A=([a-zA-Z]+\d*)\b/ >> On the first pass the parser marks the line as pod (presumably matching >> a directive) >> but on the second pass the line doesn't match any patterns and it all >> falls through as a paragraph. >> >> This inconsistency allows binary data to be treated as a pod document. >> Is there a recommended way to parse the pod out of a document that might >> have binary data in it? > > I don't know about this. It seems to me that if the second match does not think it is Pod, then it should not be a paragraph (unless it was already in a pod section from a previous declaration). I suspect that if we tighten up the first regex as I suggest year, and sync the second with it, we should be okay. Thoughts? Best, David
smime.p7s
(application/pkcs7-signature, 4 KB) - not displayed