On Tue, Jun 24, 2003 at 01:09:23PM +0100, Brian Candler wrote:
> I have found a bug with sqwebmail when running under FastCGI.
> 
> In a virtual hosting environment (multiple DNS hostnames mapped to the same
> physical server) it spits out redirects for the wrong hosts. This is because
> some persistent data is being wrongly kept between invocations in
> cgi/cgihttpscriptptr.c:

The attached patch fixes the problem.

Regards,

Brian.
diff -uNr sqwebmail-3.5.3.20030629.orig/cgi/cgi.c sqwebmail-3.5.3.20030629/cgi/cgi.c
--- sqwebmail-3.5.3.20030629.orig/cgi/cgi.c     Tue Jun 17 16:38:37 2003
+++ sqwebmail-3.5.3.20030629/cgi/cgi.c  Mon Jun 30 11:11:20 2003
@@ -110,6 +110,8 @@
 struct cgi_arglist *argp;
 
 #if HAVE_LIBFCGI
+       cgihttpscriptptr_init();
+       cgihttpsscriptptr_init();
        hascgiformfd=0;
        rfc2045p=0;
        if(cgi_args) {
diff -uNr sqwebmail-3.5.3.20030629.orig/cgi/cgihttpscriptptr.c 
sqwebmail-3.5.3.20030629/cgi/cgihttpscriptptr.c
--- sqwebmail-3.5.3.20030629.orig/cgi/cgihttpscriptptr.c        Fri Feb 25 01:26:06 
2000
+++ sqwebmail-3.5.3.20030629/cgi/cgihttpscriptptr.c     Mon Jun 30 11:06:55 2003
@@ -24,6 +24,15 @@
 
 extern void error(const char *);
 
+void cgihttpscriptptr_init()
+{
+       /* Reinitialisation required when running as fastcgi */
+       if (scriptptr) {
+               free(scriptptr);
+               scriptptr=0;
+       }
+}
+
 const char *cgihttpscriptptr()
 {
        if (!scriptptr)
diff -uNr sqwebmail-3.5.3.20030629.orig/cgi/cgihttpsscriptptr.c 
sqwebmail-3.5.3.20030629/cgi/cgihttpsscriptptr.c
--- sqwebmail-3.5.3.20030629.orig/cgi/cgihttpsscriptptr.c       Fri Feb 25 01:26:06 
2000
+++ sqwebmail-3.5.3.20030629/cgi/cgihttpsscriptptr.c    Mon Jun 30 11:08:16 2003
@@ -23,6 +23,15 @@
 static const char *scriptptr=0;
 extern void error(const char *);
 
+void cgihttpsscriptptr_init()
+{
+       /* Reinitialisation required when running as fastcgi */ 
+       if (scriptptr) {
+               free(scriptptr);
+               scriptptr=0;
+       }
+}
+
 const char *cgihttpsscriptptr()
 {
        if (!scriptptr)

Reply via email to