From 30ffc256abe7443a02b44490c518baf9a122b4c8 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Sat, 30 Dec 2017 13:14:32 +0200 Subject: [PATCH] Fix regex stack overflow in gdb-mi.el when parsing complex locals * lisp/progmodes/gdb-mi.el (gdb-jsonify-buffer): Skip string literals with (forward-sexp) instead of matching with regex. (Bug#29868) Copyright-paperwork-exempt: yes --- lisp/progmodes/gdb-mi.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 58552759b95..84b8c6b44b1 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -2717,10 +2717,10 @@ If `default-directory' is remote, full file names are adapted accordingly." (insert "]")))))) (goto-char (point-min)) (insert "{") - (let ((re (concat "\\([[:alnum:]-_]+\\)=\\({\\|\\[\\|\"\"\\|" - gdb--string-regexp "\\)"))) + (let ((re (concat "\\([[:alnum:]-_]+\\)="))) (while (re-search-forward re nil t) - (replace-match "\"\\1\":\\2" nil nil))) + (replace-match "\"\\1\":" nil nil) + (if (eq (char-after) ?\") (forward-sexp) (forward-char)))) (goto-char (point-max)) (insert "}"))) -- 2.39.2