allow escaping inside quotes
authorop <op@openbsd.org>
Sun, 28 Jan 2024 17:23:17 +0000 (17:23 +0000)
committerop <op@openbsd.org>
Sun, 28 Jan 2024 17:23:17 +0000 (17:23 +0000)
RFC5322 allows for escapes using \ inside quotes.  Otherwise, headers
such as

From: "\"Doe, John\"" <op>

get mangled as "\"Doe@localhost, John\" <op> since \ would be treated as
ordinary character and not the escape for the quote.

Bug reported by TobiasEgg on the OpenSMTPD-portable github repository.

ok millert@

usr.sbin/smtpd/smtp_session.c

index 94763e6..3a99cb4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: smtp_session.c,v 1.440 2024/01/20 09:01:03 claudio Exp $      */
+/*     $OpenBSD: smtp_session.c,v 1.441 2024/01/28 17:23:17 op Exp $   */
 
 /*
  * Copyright (c) 2008 Gilles Chehade <gilles@poolp.org>
@@ -489,7 +489,7 @@ header_domain_append_callback(struct smtp_tx *tx, const char *hdr,
                                quote = !quote;
                        if (line[i] == ')' && !escape && !quote && comment)
                                comment--;
-                       if (line[i] == '\\' && !escape && !comment && !quote)
+                       if (line[i] == '\\' && !escape && !comment)
                                escape = 1;
                        else
                                escape = 0;