From d2d30b3a196719e2d49d2e801ec5c4d4858b4e89 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Tue, 25 Feb 2020 17:03:14 +0000 Subject: fsqueue_envelope_dump() returns 0 on temporary failure, not -1. We should only exit the loop that creates the queue file if we successfully created the file or we've exceeded the max number of tries. From gilles@ based on feedback from Qualys. --- usr.sbin/smtpd/queue_fs.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'usr.sbin/smtpd/queue_fs.c') diff --git a/usr.sbin/smtpd/queue_fs.c b/usr.sbin/smtpd/queue_fs.c index d1cd4800a9e..924bd2617c2 100644 --- a/usr.sbin/smtpd/queue_fs.c +++ b/usr.sbin/smtpd/queue_fs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: queue_fs.c,v 1.19 2019/06/28 13:32:51 deraadt Exp $ */ +/* $OpenBSD: queue_fs.c,v 1.20 2020/02/25 17:03:13 millert Exp $ */ /* * Copyright (c) 2011 Gilles Chehade @@ -228,8 +228,7 @@ queue_fs_envelope_create(uint32_t msgid, const char *buf, size_t len, fsqueue_envelope_incoming_path(*evpid, path, sizeof(path)); - r = fsqueue_envelope_dump(path, buf, len, 0, 0); - if (r >= 0) + if ((r = fsqueue_envelope_dump(path, buf, len, 0, 0)) != 0) goto done; } r = 0; -- cgit v1.2.3