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)