summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeder O. Klingenberg <peder@klingenberg.no>2016-08-30 14:44:16 +0200
committerNoam Postavsky <npostavs@gmail.com>2016-10-02 09:55:30 -0400
commit171ec164bc684c2bc48f74a7aa47c7a70d875922 (patch)
tree2e52665cbf79c17df774c91e7ec7a86d8e9d5b08
parent0876366cc5cdf52748f5e5abb7c3567eab2efbff (diff)
downloademacs-171ec164bc684c2bc48f74a7aa47c7a70d875922.tar.gz
Avoid error in icalendar--read-element
* lisp/calendar/icalendar.el (icalendar--read-element): Avoid a regex stack overflow by not using regex to extract values from calendar events. (Bug#24315) (cherry picked from commit 55dde6c1a21a792d3d75c19e612c74dd054aaf1e)
-rw-r--r--lisp/calendar/icalendar.el8
1 files changed, 5 insertions, 3 deletions
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el
index 386c554c068..c88f4abcb6e 100644
--- a/lisp/calendar/icalendar.el
+++ b/lisp/calendar/icalendar.el
@@ -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