From 2a66007bd9741a343a55fc1156703020aa5e5100 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Wed, 23 Jan 2002 03:54:12 +0000
Subject: [PATCH] lprintf now checks validity of lputs function pointer before
 calling (on Win32). Hopefully solves problem of asynchronous log output
 during sbbsctrl shutdown.

---
 src/sbbs3/ftpsrvr.c  | 6 +++++-
 src/sbbs3/mailsrvr.c | 5 +++++
 src/sbbs3/main.cpp   | 5 +++++
 src/sbbs3/services.c | 5 +++++
 4 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index a92d567d80..ed80a5757f 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -145,6 +145,11 @@ static int lprintf(char *fmt, ...)
     if(startup==NULL || startup->lputs==NULL)
         return(0);
 
+#if defined(_WIN32)
+	if(IsBadCodePtr((FARPROC)startup->lputs))
+		return(0);
+#endif
+
     va_start(argptr,fmt);
     vsprintf(sbuf,fmt,argptr);
     va_end(argptr);
@@ -2159,7 +2164,6 @@ static void ctrl_thread(void* arg)
 	char		qwkfile[MAX_PATH+1];
 	char		aliasfile[MAX_PATH+1];
 	char		aliasline[512];
-	char		alias_buf[80];
 	char		desc[501]="";
 	char		sys_pass[128];
 	char*		host_name;
diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index 9250378fe6..edee9664be 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -107,6 +107,11 @@ static int lprintf(char *fmt, ...)
     if(startup==NULL || startup->lputs==NULL)
         return(0);
 
+#if defined(_WIN32)
+	if(IsBadCodePtr((FARPROC)startup->lputs))
+		return(0);
+#endif
+
 	va_start(argptr,fmt);
     vsprintf(sbuf,fmt,argptr);
     va_end(argptr);
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index a15b214f2d..4d19d27c9e 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -141,6 +141,11 @@ int lprintf(char *fmt, ...)
     if(startup==NULL || startup->lputs==NULL)
         return(0);
 
+#if defined(_WIN32)
+	if(IsBadCodePtr((FARPROC)startup->lputs))
+		return(0);
+#endif
+
     va_start(argptr,fmt);
     vsprintf(sbuf,fmt,argptr);
     va_end(argptr);
diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index b1f9715a99..b7cd15a9e6 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -113,6 +113,11 @@ static int lprintf(char *fmt, ...)
     if(startup==NULL || startup->lputs==NULL)
         return(0);
 
+#if defined(_WIN32)
+	if(IsBadCodePtr((FARPROC)startup->lputs))
+		return(0);
+#endif
+
 	va_start(argptr,fmt);
     vsprintf(sbuf,fmt,argptr);
     va_end(argptr);
-- 
GitLab