ox-html: Fix stack overflow in regexp matching
authorNicolas Goaziou <n.goaziou@gmail.com>
Mon, 25 Feb 2013 23:29:04 +0000 (26 00:29 +0100)
committerNicolas Goaziou <n.goaziou@gmail.com>
Mon, 25 Feb 2013 23:29:04 +0000 (26 00:29 +0100)
* lisp/ox-html.el (org-html-fontify-code): Do not use [^\000] in
  regexps that may match large strings.

Thanks to Kyle Machulis for reporting it.

lisp/ox-html.el

index 628cf84..a3ec565 100644 (file)
@@ -1478,10 +1478,10 @@ is the language used for CODE, as a string, or nil."
                       ;; Htmlize region.
                       (org-html-htmlize-region-for-paste
                        (point-min) (point-max))))
-         ;; Strip any encolosing <pre></pre> tags.
-         (if (string-match "<pre[^>]*>\n*\\([^\000]*\\)</pre>" code)
-             (match-string 1 code)
-           code))))))))
+         ;; Strip any enclosing <pre></pre> tags.
+         (let* ((beg (and (string-match "\\`<pre[^>]*>\n*" code) (match-end 0)))
+                (end (and beg (string-match "</pre>\\'" code))))
+           (if (and beg end) (substring code beg end) code)))))))))
 
 (defun org-html-do-format-code
   (code &optional lang refs retain-labels num-start)