aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeder O. Klingenberg2016-08-30 14:44:16 +0200
committerNoam Postavsky2016-09-07 19:02:43 -0400
commit55dde6c1a21a792d3d75c19e612c74dd054aaf1e (patch)
tree44978e45c4fe9b0da8c5a9a80c838cb34a9f3f04
parent32078ec8c444cd886a51c1a63103b230371d7a54 (diff)
downloademacs-55dde6c1a21a792d3d75c19e612c74dd054aaf1e.tar.gz
emacs-55dde6c1a21a792d3d75c19e612c74dd054aaf1e.zip
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)
-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
361INVALUE gives the current iCalendar element we are reading. 361INVALUE gives the current iCalendar element we are reading.
362INPARAMS gives the current parameters..... 362INPARAMS gives the current parameters.....
363This function calls itself recursively for each nested calendar element 363This function calls itself recursively for each nested calendar element
364it finds." 364it finds. The current buffer should be an unfolded buffer as returned
365from `icalendar--get-unfolded-buffer'."
365 (let (element children line name params param param-name param-value 366 (let (element children line name params param param-name param-value
366 value 367 value
367 (continue t)) 368 (continue t))
@@ -391,8 +392,9 @@ it finds."
391 (unless (looking-at ":") 392 (unless (looking-at ":")
392 (error "Oops")) 393 (error "Oops"))
393 (forward-char 1) 394 (forward-char 1)
394 (re-search-forward "\\(.*\\)\\(\r?\n[ \t].*\\)*" nil t) 395 (let ((start (point)))
395 (setq value (icalendar--rris "\r?\n[ \t]" "" (match-string 0))) 396 (end-of-line)
397 (setq value (buffer-substring start (point))))
396 (setq line (list name params value)) 398 (setq line (list name params value))
397 (cond ((eq name 'BEGIN) 399 (cond ((eq name 'BEGIN)
398 (setq children 400 (setq children