]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid error in icalendar--read-element
authorPeder O. Klingenberg <peder@klingenberg.no>
Tue, 30 Aug 2016 12:44:16 +0000 (14:44 +0200)
committerNoam Postavsky <npostavs@gmail.com>
Wed, 7 Sep 2016 23:02:43 +0000 (19:02 -0400)
* lisp/calendar/icalendar.el (icalendar--read-element): Avoid a regex
stack overflow by not using regex to extract values from calendar
events. (Bug#24315)

lisp/calendar/icalendar.el

index 386c554c0687b149d43dda6c8dfd9913fee46116..c88f4abcb6e199096e632f065b55876b405f6f23 100644 (file)
@@ -361,7 +361,8 @@ Pass arguments REGEXP REP STRING FIXEDCASE LITERAL to
 INVALUE gives the current iCalendar element we are reading.
 INPARAMS gives the current parameters.....
 This function calls itself recursively for each nested calendar element
-it finds."
+it finds.  The current buffer should be an unfolded buffer as returned
+from `icalendar--get-unfolded-buffer'."
   (let (element children line name params param param-name param-value
                 value
                 (continue t))
@@ -391,8 +392,9 @@ it finds."
       (unless (looking-at ":")
         (error "Oops"))
       (forward-char 1)
-      (re-search-forward  "\\(.*\\)\\(\r?\n[ \t].*\\)*" nil t)
-      (setq value (icalendar--rris "\r?\n[ \t]" "" (match-string 0)))
+      (let ((start (point)))
+        (end-of-line)
+        (setq value (buffer-substring start (point))))
       (setq line (list name params value))
       (cond ((eq name 'BEGIN)
              (setq children