diff options
author | Peder O. Klingenberg <peder@klingenberg.no> | 2016-08-30 14:44:16 +0200 |
---|---|---|
committer | Noam Postavsky <npostavs@gmail.com> | 2016-09-07 19:02:43 -0400 |
commit | 55dde6c1a21a792d3d75c19e612c74dd054aaf1e (patch) | |
tree | 44978e45c4fe9b0da8c5a9a80c838cb34a9f3f04 /lisp/calendar/icalendar.el | |
parent | 32078ec8c444cd886a51c1a63103b230371d7a54 (diff) | |
download | emacs-55dde6c1a21a792d3d75c19e612c74dd054aaf1e.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)
Diffstat (limited to 'lisp/calendar/icalendar.el')
-rw-r--r-- | lisp/calendar/icalendar.el | 8 |
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 |