On Fri, Jul 19, 2019 at 05:14:03PM -0400, Bryan Steele wrote:
> I suspect that in secure/-S mode, the :pre[serve] should either be
> disabled, or modified to stop calling sendmail. The mail it is sending
> is purely advisory, and should be easy to disable. See common/recover.c.

Oh, you're right.  A bit ironic that I didn't notice the exec violation
due to the fork being permitted now.  Thanks for pointing this out!

Scrap my old patch, here's a better proposal:


Index: common/recover.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/common/recover.c,v
retrieving revision 1.29
diff -u -p -r1.29 recover.c
--- common/recover.c    10 Nov 2017 18:25:48 -0000      1.29
+++ common/recover.c    19 Jul 2019 21:57:16 -0000
@@ -264,7 +264,7 @@ rcv_sync(SCR *sp, u_int flags)
                        F_SET(ep, F_RCV_NORM);
 
                /* REQUEST: send email. */
-               if (LF_ISSET(RCV_EMAIL))
+               if (O_ISSET(sp, O_SECURE) == 0 && LF_ISSET(RCV_EMAIL))
                        rcv_email(sp, ep->rcv_fd);
        }
 
@@ -289,7 +289,8 @@ rcv_sync(SCR *sp, u_int flags)
                sp->gp->scr_busy(sp,
                    "Copying file for recovery...", BUSY_ON);
                if (rcv_copy(sp, fd, ep->rcv_path) ||
-                   close(fd) || rcv_mailfile(sp, 1, buf)) {
+                   close(fd) || (O_ISSET(sp, O_SECURE) == 0 &&
+                   rcv_mailfile(sp, 1, buf))) {
                        (void)unlink(buf);
                        (void)close(fd);
                        rval = 1;

Reply via email to