summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOmar Polo <op@cvs.openbsd.org>2024-01-28 17:23:18 +0000
committerOmar Polo <op@cvs.openbsd.org>2024-01-28 17:23:18 +0000
commite2a5c75b38233d25d02b7b92170ccb8dbff8340d (patch)
tree22bb6c27adc35f6ca3653dafb9b199a70da21d56
parent4da4dffb447534e8dea58b4ec3e6079d01b212e2 (diff)
allow escaping inside quotes
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@
-rw-r--r--usr.sbin/smtpd/smtp_session.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/usr.sbin/smtpd/smtp_session.c b/usr.sbin/smtpd/smtp_session.c
index 94763e6d078..3a99cb4f6b9 100644
--- a/usr.sbin/smtpd/smtp_session.c
+++ b/usr.sbin/smtpd/smtp_session.c
@@ -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;