File Make-vcard-parser-more-robust-to-invalid-vcards.patch of Package emacs-vcard
From: Egbert Eich <eich@suse.com>
Date: Tue Dec 2 15:15:59 2025 +0100
Subject: Make vcard parser more robust to invalid vcards
Patch-mainline: Not yet
Git-commit: 754148eae7d781b901dfd873549128ec35ce35fb
References:
Signed-off-by: Egbert Eich <eich@suse.com>
Signed-off-by: Egbert Eich <eich@suse.de>
---
vcard.el | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/vcard.el b/vcard.el
index f7dc308..1cadf63 100644
--- a/vcard.el
+++ b/vcard.el
@@ -242,22 +242,22 @@ Note: this function modifies the buffer!"
(delete-char 1))
(goto-char (point-min))
- (re-search-forward "^begin:[ \t]*vcard[ \t]*\n")
- (set-marker pos (point))
- (while (and (not (looking-at "^end[ \t]*:[ \t]*vcard[ \t]*$"))
- (re-search-forward ":[ \t]*" nil t))
- (set-marker newpos (match-end 0))
- (setq properties
- (vcard-parse-region-properties pos (match-beginning 0)))
- (set-marker pos (marker-position newpos))
- (re-search-forward "[ \t]*\n")
- (set-marker newpos (match-end 0))
- (setq value
- (vcard-parse-region-value properties pos (match-beginning 0)))
- (set-marker pos (marker-position newpos))
- (goto-char pos)
- (funcall filter properties value)
- (setq vcard-data (cons (cons properties value) vcard-data)))))
+ (if (re-search-forward "^begin:[ \t]*vcard[ \t]*\n" nil t)
+ (set-marker pos (point))
+ (while (and (not (looking-at "^end[ \t]*:[ \t]*vcard[ \t]*$"))
+ (re-search-forward ":[ \t]*" nil t))
+ (set-marker newpos (match-end 0))
+ (setq properties
+ (vcard-parse-region-properties pos (match-beginning 0)))
+ (set-marker pos (marker-position newpos))
+ (re-search-forward "[ \t]*\n")
+ (set-marker newpos (match-end 0))
+ (setq value
+ (vcard-parse-region-value properties pos (match-beginning 0)))
+ (set-marker pos (marker-position newpos))
+ (goto-char pos)
+ (funcall filter properties value)
+ (setq vcard-data (cons (cons properties value) vcard-data))))))
(nreverse vcard-data)))
(defun vcard-parse-region-properties (beg end)