Fix spool space check to account for SIZE. Bug 2552
authorErik Lax <erik@datahack.se>
Mon, 20 Apr 2020 20:34:33 +0000 (21:34 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Mon, 20 Apr 2020 20:34:33 +0000 (21:34 +0100)
doc/doc-txt/ChangeLog
src/src/receive.c
src/src/smtp_in.c

index edab6a829ea270f0d590601263810700270ccdf8..3fb7ed8a9671927e691c2ec3a4d02d95be165a60 100644 (file)
@@ -167,6 +167,11 @@ JH/35 The dsearch lookup now requires that the directory is an absolute path.
 JH/36 Bug 2554: Fix msg:defer event for the hosts_max_try_hardlimit case.
       Previously no event was raised.
 
+JH/37 Bug 2552: Fix the check on spool space during reception to use the SIZE
+      parameter supplied by the sender MAIL FROM command.  Previously it was
+      ignored, and only the check_spool_space option value for the required
+      leeway checked.
+
 
 Exim version 4.93
 -----------------
index 2d88d6476e355f489f2253c35b6e11edb6e5c5b4..f22816920da93f3bf72460add13cd48de066c06b 100644 (file)
@@ -270,8 +270,8 @@ if (check_spool_space > 0 || msg_size > 0 || check_spool_inodes > 0)
       "check_space = " PR_EXIM_ARITH "K inodes = %d msg_size = %d\n",
       space, inodes, check_spool_space, check_spool_inodes, msg_size);
 
-  if ((space >= 0 && space < check_spool_space) ||
-      (inodes >= 0 && inodes < check_spool_inodes))
+  if (  space >= 0 && space + msg_size / 1024 < check_spool_space
+     || inodes >= 0 && inodes < check_spool_inodes)
     {
     log_write(0, LOG_MAIN, "spool directory space check failed: space="
       PR_EXIM_ARITH " inodes=%d", space, inodes);
index 2c54a4ccfb1d7e1622f93862a4f40f5ea7e6ef51..1c02eb5c80bc40852df0736f9e4cc6564433f149 100644 (file)
@@ -4861,8 +4861,8 @@ while (done <= 0)
       and EXPN etc. to be used when space is short. */
 
       if (!receive_check_fs(
-          (smtp_check_spool_space && message_size >= 0)?
-             message_size + 5000 : 0))
+          smtp_check_spool_space && message_size >= 0
+             message_size + 5000 : 0))
        {
        smtp_printf("452 Space shortage, please try later\r\n", FALSE);
        sender_address = NULL;