]> granicus.if.org Git - php/commitdiff
Report access violations
authorZeev Suraski <zeev@php.net>
Sun, 13 Feb 2000 01:24:51 +0000 (01:24 +0000)
committerZeev Suraski <zeev@php.net>
Sun, 13 Feb 2000 01:24:51 +0000 (01:24 +0000)
sapi/isapi/php4isapi.c

index 72ba226b3d93d8a858d1e6136d8bc93c5dcd2444..797eb73310274fff2ee3b0b6a8c3e572eed74cef 100644 (file)
@@ -452,6 +452,27 @@ static void init_request_info(sapi_globals_struct *sapi_globals, LPEXTENSION_CON
 }
 
 
+static void php_isapi_report_exception(char *message, int message_len SLS_DC)
+{
+       if (!SG(headers_sent)) {
+               HSE_SEND_HEADER_EX_INFO header_info;
+               LPEXTENSION_CONTROL_BLOCK lpECB = (LPEXTENSION_CONTROL_BLOCK) SG(server_context);
+
+               header_info.pszStatus = "500 Internal Server Error";
+#ifndef WITH_ZEUS
+               header_info.cchStatus = strlen(header_info.pszStatus);
+#endif
+               header_info.pszHeader = "Content-Type: text/html\r\n\r\n";
+               header_info.cchHeader = strlen(header_info.pszHeader);
+
+               lpECB->dwHttpStatusCode = 500;
+               lpECB->ServerSupportFunction(lpECB->ConnID, HSE_REQ_SEND_RESPONSE_HEADER_EX, &header_info, NULL, NULL);
+               SG(headers_sent)=1;
+       }
+       sapi_isapi_ub_write(message, message_len);
+}
+
+
 BOOL WINAPI GetExtensionVersion(HSE_VERSION_INFO *pVer)
 {
        pVer->dwExtensionVersion = HSE_VERSION;
@@ -516,22 +537,10 @@ DWORD WINAPI HttpExtensionProc(LPEXTENSION_CONTROL_BLOCK lpECB)
                        }
 
                        CG(unclean_shutdown)=1;
-
-                       if (!SG(headers_sent)) {
-                               HSE_SEND_HEADER_EX_INFO header_info;
-
-                               header_info.pszStatus = "500 Internal Server Error";
-#ifndef WITH_ZEUS
-                               header_info.cchStatus = strlen(header_info.pszStatus);
-#endif
-                               header_info.pszHeader = "Content-Type: text/html\r\n\r\n";
-                               header_info.cchHeader = strlen(header_info.pszHeader);
-
-                               lpECB->dwHttpStatusCode = 500;
-                               lpECB->ServerSupportFunction(lpECB->ConnID, HSE_REQ_SEND_RESPONSE_HEADER_EX, &header_info, NULL, NULL);
-                               SG(headers_sent)=1;
-                       }
-                       sapi_isapi_ub_write("Stack Overflow", sizeof("Stack Overflow")-1);              
+                       php_isapi_report_exception("Stack overflow", sizeof("Stack overflow")-1 SLS_CC);
+               } else if (_exception_code()==EXCEPTION_ACCESS_VIOLATION) {
+                       php_isapi_report_exception("Access violation", sizeof("Access violation")-1 SLS_CC);
+                       ExitThread(0);
                } else {
                        ExitThread(0);
                }