From 95f7778aeabe2421efbe4c92a8bcc85dff6c646f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Fri, 26 Feb 1999 18:57:11 +0100
Subject: [PATCH] Ignore trailing white-space (in particular, \r-characters) in
 boundary lines.

Rev: lib/modules/Tools.pmod/_PEM.pmod:1.2
---
 lib/modules/Tools.pmod/_PEM.pmod | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/lib/modules/Tools.pmod/_PEM.pmod b/lib/modules/Tools.pmod/_PEM.pmod
index 96adbf9387..b17c979677 100644
--- a/lib/modules/Tools.pmod/_PEM.pmod
+++ b/lib/modules/Tools.pmod/_PEM.pmod
@@ -10,9 +10,13 @@ object rfc822_start_re = Regexp("^([-a-zA-Z][a-zA-Z0-9]*[ \t]*:|[ \t]*\n\n)");
 
 /* Regexp used to extract the interesting part of an encapsulation
  * boundary. Also strips spaces, and requires that the string in the
- * middle between ---foo  --- is at least two characters long. */
+ * middle between ---foo  --- is at least two characters long. Also
+ * allow a trailing \r or other white space characters. */
 
-object rfc934_eb_re = Regexp("^-*[ \t]*([^- \t].*[^- \t])[ \t]*-*$");
+object rfc934_eb_re = Regexp(
+  "^-*[ \r\t]*([^- \r\t]"	/* First non dash-or-space character */
+  ".*[^- \r\t])"		/* Last non dash-or-space character */
+  "[ \r\t]*-*[ \r\t]*$");	/* Trailing space, dashes and space */
 
 /* Start and end markers for PEM */
 
@@ -44,6 +48,15 @@ string dash_stuff(string msg)
   return parts * "- -";
 }
 
+#if 0
+string chop_cr(string s)
+{
+  return (strlen(s) && (s[-1] == '\r'))
+    ? s[..strlen(s) - 2]
+    : s;
+}
+#endif
+
 /* Strip dashes */
 string extract_boundary(string s)
 {
-- 
GitLab