On Tue, Apr 06, 2004 at 09:09:06AM +0100, sq sub wrote: > I would be interested to see the proper fix.
It's below. However I have to say I don't understand why generating returnaddr before the fork is a problem; all that login_returnaddr does is malloc a buffer and copy in the contents of AUTHADDR @ hostname Explanations on a postcard please :-) Regards, Brian. $ diff -uNr sqwebmail-4.0.2 sqwebmail-4.0.3 ... diff -uNr sqwebmail-4.0.2/sqwebmail/newmsg.c sqwebmail-4.0.3/sqwebmail/newmsg.c --- sqwebmail-4.0.2/sqwebmail/newmsg.c Sun Jan 25 05:38:50 2004 +++ sqwebmail-4.0.3/sqwebmail/newmsg.c Mon Apr 5 23:47:48 2004 @@ -5,7 +5,7 @@ /* -** $Id: newmsg.c,v 1.51 2004/01/25 05:38:50 mrsam Exp $ +** $Id: newmsg.c,v 1.52 2004/04/05 22:47:48 mrsam Exp $ */ #include "config.h" #include "sqwebmail.h" @@ -747,8 +747,6 @@ return (0); } - returnaddr=login_returnaddr(); - dsn= *cgi("dsn") != 0; pid=fork(); @@ -792,9 +790,12 @@ putenv("DSN="); if (fd == 0) + { + returnaddr=login_returnaddr(); execl(SENDITSH, "sendit.sh", returnaddr, sqwebmail_mailboxid, NULL); - + } + fwrite(noexec, 1, sizeof(noexec)-1, stderr); _exit(1); }