You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mt...@apache.org on 2007/02/24 12:45:40 UTC

svn commit: r511252 - in /tomcat/connectors/trunk/jk/native/iis: Makefile.amd64 Makefile.vc isapi.dsp jk_isapi_plugin.c

Author: mturk
Date: Sat Feb 24 03:45:39 2007
New Revision: 511252

URL: http://svn.apache.org/viewvc?view=rev&rev=511252
Log:
Use Microsoft strsafe library for string operations.

Modified:
    tomcat/connectors/trunk/jk/native/iis/Makefile.amd64
    tomcat/connectors/trunk/jk/native/iis/Makefile.vc
    tomcat/connectors/trunk/jk/native/iis/isapi.dsp
    tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c

Modified: tomcat/connectors/trunk/jk/native/iis/Makefile.amd64
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/Makefile.amd64?view=diff&rev=511252&r1=511251&r2=511252
==============================================================================
--- tomcat/connectors/trunk/jk/native/iis/Makefile.amd64 (original)
+++ tomcat/connectors/trunk/jk/native/iis/Makefile.amd64 Sat Feb 24 03:45:39 2007
@@ -59,7 +59,7 @@
 BSC32_SBRS= \
 	
 LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib bufferoverflowu.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\isapi_redirect.pdb" /debug /machine:AMD64 /def:".\isapi.def" /out:"$(OUTDIR)\isapi_redirect.dll" /implib:"$(OUTDIR)\isapi_redirect.lib" 
+LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib bufferoverflowu.lib strsafe.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\isapi_redirect.pdb" /debug /machine:AMD64 /def:".\isapi.def" /out:"$(OUTDIR)\isapi_redirect.dll" /implib:"$(OUTDIR)\isapi_redirect.lib" 
 DEF_FILE= \
 	".\isapi.def"
 LINK32_OBJS= \

Modified: tomcat/connectors/trunk/jk/native/iis/Makefile.vc
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/Makefile.vc?view=diff&rev=511252&r1=511251&r2=511252
==============================================================================
--- tomcat/connectors/trunk/jk/native/iis/Makefile.vc (original)
+++ tomcat/connectors/trunk/jk/native/iis/Makefile.vc Sat Feb 24 03:45:39 2007
@@ -74,7 +74,7 @@
 BSC32_SBRS= \
 	
 LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /base:"0x6A6B0000" /dll /incremental:no /pdb:"$(OUTDIR)\isapi_redirect.pdb" /debug /machine:I386 /def:".\isapi.def" /out:"$(OUTDIR)\isapi_redirect.dll" /implib:"$(OUTDIR)\isapi_redirect.lib" 
+LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib strsafe.lib /nologo /base:"0x6A6B0000" /dll /incremental:no /pdb:"$(OUTDIR)\isapi_redirect.pdb" /debug /machine:I386 /def:".\isapi.def" /out:"$(OUTDIR)\isapi_redirect.dll" /implib:"$(OUTDIR)\isapi_redirect.lib" 
 DEF_FILE= \
 	".\isapi.def"
 LINK32_OBJS= \

Modified: tomcat/connectors/trunk/jk/native/iis/isapi.dsp
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/isapi.dsp?view=diff&rev=511252&r1=511251&r2=511252
==============================================================================
--- tomcat/connectors/trunk/jk/native/iis/isapi.dsp (original)
+++ tomcat/connectors/trunk/jk/native/iis/isapi.dsp Sat Feb 24 03:45:39 2007
@@ -53,7 +53,7 @@
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /base:"0x6A6B0000" /dll /debug /machine:I386 /out:"Release\isapi_redirect.dll"
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib strsafe.lib /nologo /base:"0x6A6B0000" /dll /debug /machine:I386 /out:"Release\isapi_redirect.dll"
 
 !ELSEIF  "$(CFG)" == "isapi - Win32 Debug"
 
@@ -79,7 +79,7 @@
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /base:"0x6A6B0000" /dll /incremental:no /debug /machine:I386 /out:"Debug\isapi_redirect.dll"
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib strsafe.lib /nologo /base:"0x6A6B0000" /dll /incremental:no /debug /machine:I386 /out:"Debug\isapi_redirect.dll"
 
 !ENDIF 
 

Modified: tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c?view=diff&rev=511252&r1=511251&r2=511252
==============================================================================
--- tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c (original)
+++ tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c Sat Feb 24 03:45:39 2007
@@ -40,6 +40,8 @@
 #include "jk_uri_worker_map.h"
 #include "jk_shm.h"
 
+#include <strsafe.h>
+
 #define VERSION_STRING "Jakarta/ISAPI/" JK_VERSTRING
 #define SHM_DEF_NAME   "JKISAPISHMEM"
 #define DEFAULT_WORKER_NAME ("ajp13")
@@ -70,14 +72,14 @@
 #define HEADER_TEMPLATE      ("%s%p:")
 #define HTTP_HEADER_TEMPLATE ("HTTP_%s%p")
 
-static char URI_HEADER_NAME[_MAX_FNAME];
-static char QUERY_HEADER_NAME[_MAX_FNAME];
-static char WORKER_HEADER_NAME[_MAX_FNAME];
-static char TOMCAT_TRANSLATE_HEADER_NAME[_MAX_FNAME];
-
-static char HTTP_URI_HEADER_NAME[_MAX_FNAME];
-static char HTTP_QUERY_HEADER_NAME[_MAX_FNAME];
-static char HTTP_WORKER_HEADER_NAME[_MAX_FNAME];
+static char URI_HEADER_NAME[MAX_PATH];
+static char QUERY_HEADER_NAME[MAX_PATH];
+static char WORKER_HEADER_NAME[MAX_PATH];
+static char TOMCAT_TRANSLATE_HEADER_NAME[MAX_PATH];
+
+static char HTTP_URI_HEADER_NAME[MAX_PATH];
+static char HTTP_QUERY_HEADER_NAME[MAX_PATH];
+static char HTTP_WORKER_HEADER_NAME[MAX_PATH];
 
 #define REGISTRY_LOCATION       ("Software\\Apache Software Foundation\\Jakarta Isapi Redirector\\1.0")
 #define W3SVC_REGISTRY_KEY      ("SYSTEM\\CurrentControlSet\\Services\\W3SVC\\Parameters")
@@ -528,7 +530,7 @@
         return JK_FALSE;
     }
 
-    if (s && s->ws_private) {        
+    if (s && s->ws_private) {
         int rv = JK_TRUE;
         isapi_private_data_t *p = s->ws_private;
         if (!p->request_started) {
@@ -545,7 +547,7 @@
                 reason = status_reason(status);
             }
             status_str = (char *)malloc((6 + strlen(reason)));
-            sprintf(status_str, "%d %s", status, reason);
+            StringCbPrintf(status_str, 6 + strlen(reason), "%d %s", status, reason);
             hi.pszStatus = status_str;
             hi.cchStatus = strlen(status_str);
 
@@ -565,12 +567,12 @@
                 headers_str[0] = '\0';
 
                 for (i = 0; i < num_of_headers; i++) {
-                    strcat(headers_str, header_names[i]);
-                    strcat(headers_str, ": ");
-                    strcat(headers_str, header_values[i]);
-                    strcat(headers_str, crlf);
+                    StringCbCat(headers_str, len_of_headers, header_names[i]);
+                    StringCbCat(headers_str, len_of_headers, ": ");
+                    StringCbCat(headers_str, len_of_headers, header_values[i]);
+                    StringCbCat(headers_str, len_of_headers, crlf);
                 }
-                strcat(headers_str, crlf);
+                StringCbCat(headers_str, len_of_headers, crlf);
                 hi.pszHeader = headers_str;
                 hi.cchHeader = strlen(headers_str);
             }
@@ -578,7 +580,7 @@
                 hi.pszHeader = crlf;
                 hi.cchHeader = 2;
             }
-            hi.fKeepConn = keep_alive;            
+            hi.fKeepConn = keep_alive;
             if (!p->lpEcb->ServerSupportFunction(p->lpEcb->ConnID,
                                                  HSE_REQ_SEND_RESPONSE_HEADER_EX,
                                                  &hi,
@@ -722,7 +724,7 @@
                         SF_NOTIFY_PREPROC_HEADERS;
     }
 
-    strcpy(pVer->lpszFilterDesc, VERSION_STRING);
+    StringCbCopy(pVer->lpszFilterDesc, SF_MAX_FILTER_DESC_LEN, VERSION_STRING);
     return rv;
 }
 
@@ -734,9 +736,9 @@
         for (i = 0; i < jk_map_size(rewrite_map); i++) {
             const char *src = jk_map_name_at(rewrite_map, i);
             if (strncmp(uri, src, strlen(src)) == 0) {
-                strcpy(buf, jk_map_value_at(rewrite_map, i));
-                strcat(buf, uri + strlen(src));
-                strcpy(uri, buf);
+                StringCbCopy(buf, INTERNET_MAX_URL_LENGTH, jk_map_value_at(rewrite_map, i));
+                StringCbCat(buf,  INTERNET_MAX_URL_LENGTH, uri + strlen(src));
+                StringCbCopy(uri, INTERNET_MAX_URL_LENGTH, buf);
                 return 1;
             }
         }
@@ -824,7 +826,7 @@
             query = strchr(uri, '?');
             if (query) {
                 *query++ = '\0';
-                strcpy(squery, query);
+                StringCbCopy(squery, INTERNET_MAX_URL_LENGTH, query);
             }
 
             rc = unescape_url(uri);
@@ -862,12 +864,12 @@
             }
             szPort = atoi(Port);
             if (szPort != 80 && szPort != 443 && szHost > 0) {
-                strcat(Host, ":");
-                strcat(Host, Port);
+                StringCbCat(Host, INTERNET_MAX_URL_LENGTH, ":");
+                StringCbCat(Host, INTERNET_MAX_URL_LENGTH, Port);
             }
             if (szHost > 0) {
-                strcat(snuri, Host);
-                strcat(snuri, uri);
+                StringCbCat(snuri, INTERNET_MAX_URL_LENGTH, Host);
+                StringCbCat(snuri, INTERNET_MAX_URL_LENGTH, uri);
                 if (JK_IS_DEBUG_LEVEL(logger))
                     jk_log(logger, JK_LOG_DEBUG,
                            "Virtual Host redirection of %s",
@@ -948,7 +950,7 @@
                  */
                 if (JK_IS_DEBUG_LEVEL(logger)) {
                     char duri[INTERNET_MAX_URL_LENGTH];
-                    strcpy(duri, forwardURI);
+                    StringCbCopy(duri, INTERNET_MAX_URL_LENGTH, forwardURI);
                     if (simple_rewrite(forwardURI)) {
                         jk_log(logger, JK_LOG_DEBUG,
                                "rewriten URI [%s]->[%s]",
@@ -994,14 +996,14 @@
                         return SF_STATUS_REQ_ERROR;
                     }
                     memset(ld, 0, sizeof(isapi_log_data_t));
-                    strcpy(ld->uri, forwardURI);
-                    strcpy(ld->query, squery);
+                    StringCbCopy(ld->uri, INTERNET_MAX_URL_LENGTH, forwardURI);
+                    StringCbCopy(ld->query, INTERNET_MAX_URL_LENGTH, squery);
                     pfc->pFilterContext = ld;
                 } else {
                     isapi_log_data_t *ld = (isapi_log_data_t *)pfc->pFilterContext;
                     memset(ld, 0, sizeof(isapi_log_data_t));
-                    strcpy(ld->uri, forwardURI);
-                    strcpy(ld->query, squery);
+                    StringCbCopy(ld->uri, INTERNET_MAX_URL_LENGTH, forwardURI);
+                    StringCbCopy(ld->query, INTERNET_MAX_URL_LENGTH, squery);
                 }
             }
             else {
@@ -1038,7 +1040,7 @@
 {
     pVer->dwExtensionVersion = MAKELONG(HSE_VERSION_MINOR, HSE_VERSION_MAJOR);
 
-    strcpy(pVer->lpszExtensionDesc, VERSION_STRING);
+    StringCbCopy(pVer->lpszExtensionDesc, HSE_MAX_EXT_DLL_NAME_LEN, VERSION_STRING);
 
 
     if (!is_inited) {
@@ -1183,8 +1185,8 @@
     BOOL fReturn = TRUE;
     char drive[_MAX_DRIVE];
     char dir[_MAX_DIR];
-    char fname[_MAX_FNAME];
-    char file_name[_MAX_PATH];
+    char fname[MAX_PATH];
+    char file_name[MAX_PATH];
 
     UNREFERENCED_PARAMETER(lpReserved);
 
@@ -1198,14 +1200,14 @@
             fReturn = JK_FALSE;
         }
         /* Construct redirector headers to use for this redirector instance */
-        sprintf(URI_HEADER_NAME, HEADER_TEMPLATE, URI_HEADER_NAME_BASE, hInst);
-        sprintf(QUERY_HEADER_NAME, HEADER_TEMPLATE, QUERY_HEADER_NAME_BASE, hInst);
-        sprintf(WORKER_HEADER_NAME, HEADER_TEMPLATE, WORKER_HEADER_NAME_BASE, hInst);
-        sprintf(TOMCAT_TRANSLATE_HEADER_NAME, HEADER_TEMPLATE, TOMCAT_TRANSLATE_HEADER_NAME_BASE, hInst);
-
-        sprintf(HTTP_URI_HEADER_NAME, HTTP_HEADER_TEMPLATE, URI_HEADER_NAME_BASE, hInst);
-        sprintf(HTTP_QUERY_HEADER_NAME, HTTP_HEADER_TEMPLATE, QUERY_HEADER_NAME_BASE, hInst);
-        sprintf(HTTP_WORKER_HEADER_NAME, HTTP_HEADER_TEMPLATE, WORKER_HEADER_NAME_BASE, hInst);
+        StringCbPrintf(URI_HEADER_NAME, MAX_PATH, HEADER_TEMPLATE, URI_HEADER_NAME_BASE, hInst);
+        StringCbPrintf(QUERY_HEADER_NAME, MAX_PATH, HEADER_TEMPLATE, QUERY_HEADER_NAME_BASE, hInst);
+        StringCbPrintf(WORKER_HEADER_NAME, MAX_PATH, HEADER_TEMPLATE, WORKER_HEADER_NAME_BASE, hInst);
+        StringCbPrintf(TOMCAT_TRANSLATE_HEADER_NAME, MAX_PATH, HEADER_TEMPLATE, TOMCAT_TRANSLATE_HEADER_NAME_BASE, hInst);
+
+        StringCbPrintf(HTTP_URI_HEADER_NAME, MAX_PATH, HTTP_HEADER_TEMPLATE, URI_HEADER_NAME_BASE, hInst);
+        StringCbPrintf(HTTP_QUERY_HEADER_NAME, MAX_PATH, HTTP_HEADER_TEMPLATE, QUERY_HEADER_NAME_BASE, hInst);
+        StringCbPrintf(HTTP_WORKER_HEADER_NAME, MAX_PATH, HTTP_HEADER_TEMPLATE, WORKER_HEADER_NAME_BASE, hInst);
 
     break;
     case DLL_PROCESS_DETACH:
@@ -1225,17 +1227,17 @@
 
 static int init_jk(char *serverName)
 {
-    char shm_name[MAX_SERVERNAME + sizeof(SHM_DEF_NAME) + 1];
+    char shm_name[MAX_PATH];
     int rc = JK_FALSE;
 
     if (!jk_open_file_logger(&logger, log_file, log_level)) {
         logger = NULL;
     }
-    strcpy(shm_name, SHM_DEF_NAME);
+    StringCbCopy(shm_name, MAX_PATH, SHM_DEF_NAME);
     if (*serverName) {
         size_t i;
-        strcat(shm_name, "_");
-        strcpy(shm_name, serverName);
+        StringCbCat(shm_name, MAX_PATH, "_");
+        StringCbCat(shm_name, MAX_PATH, serverName);
         for(i = 0; i < strlen(shm_name); i++) {
             shm_name[i] = toupper(shm_name[i]);
             if (!isalnum(shm_name[i]))
@@ -1413,7 +1415,7 @@
     if (using_ini_file) {
         tmp = jk_map_get_string((jk_map_t*)src, tag, NULL);
         if (tmp && (strlen(tmp) < sz)) {
-            strcpy(val, tmp);
+            StringCbCopy(val, sz, tmp);
             return JK_TRUE;
         }
         else {



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r511252 - in /tomcat/connectors/trunk/jk/native/iis: Makefile.amd64 Makefile.vc isapi.dsp jk_isapi_plugin.c

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
Mladen Turk wrote:
> William A. Rowe, Jr. wrote:
>> GOOD GOD you can't be serious :)
>>
>> strncat strncpy exist for a reason, C's been safe for decades if
>> only the correct functions are chosen :)
>>
> 
> Didn't say it's wrong or something like that,
> but beside constantly fighting with hacking
> and suppressing newest MS compilers security presumptions,
> I see nothing wrong of using provided SDK functions
> for MS only related code.

My 2c - since MS doesn't want to play in C POSIX land and work with
the appropriate spec bodies, but would rather invent their unique
mindset (again) and work against the communities, I'm rather partial
to ignoring their 'security overtures'.

Fortunately I've seen some blog feedback to the effect that 'we made
a mistake with this draconian change' or words to that effect, so
hopefully VC 8.1 might see some course correction.

FWIW there is some community source licensing and portable implementation
around this MS Strings Lib, but that doesn't really change my opinion.
The reason against this commit is that you break older ms clibs (which
is precisely what they would like you to do.)

Bill

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r511252 - in /tomcat/connectors/trunk/jk/native/iis: Makefile.amd64 Makefile.vc isapi.dsp jk_isapi_plugin.c

Posted by Mladen Turk <mt...@apache.org>.
William A. Rowe, Jr. wrote:
> GOOD GOD you can't be serious :)
> 
> strncat strncpy exist for a reason, C's been safe for decades if
> only the correct functions are chosen :)
>

Didn't say it's wrong or something like that,
but beside constantly fighting with hacking
and suppressing newest MS compilers security presumptions,
I see nothing wrong of using provided SDK functions
for MS only related code.

Regards,
Mladen.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r511252 - in /tomcat/connectors/trunk/jk/native/iis: Makefile.amd64 Makefile.vc isapi.dsp jk_isapi_plugin.c

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
GOOD GOD you can't be serious :)

strncat strncpy exist for a reason, C's been safe for decades if
only the correct functions are chosen :)

It would be a -1, but I don't count myself amongst the voters here.

mturk@apache.org wrote:
> Author: mturk
> Date: Sat Feb 24 03:45:39 2007
> New Revision: 511252
> 
> URL: http://svn.apache.org/viewvc?view=rev&rev=511252
> Log:
> Use Microsoft strsafe library for string operations.
> 
> Modified:
>     tomcat/connectors/trunk/jk/native/iis/Makefile.amd64
>     tomcat/connectors/trunk/jk/native/iis/Makefile.vc
>     tomcat/connectors/trunk/jk/native/iis/isapi.dsp
>     tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c
> 
> Modified: tomcat/connectors/trunk/jk/native/iis/Makefile.amd64
> URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/Makefile.amd64?view=diff&rev=511252&r1=511251&r2=511252
> ==============================================================================
> --- tomcat/connectors/trunk/jk/native/iis/Makefile.amd64 (original)
> +++ tomcat/connectors/trunk/jk/native/iis/Makefile.amd64 Sat Feb 24 03:45:39 2007
> @@ -59,7 +59,7 @@
>  BSC32_SBRS= \
>  	
>  LINK32=link.exe
> -LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib bufferoverflowu.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\isapi_redirect.pdb" /debug /machine:AMD64 /def:".\isapi.def" /out:"$(OUTDIR)\isapi_redirect.dll" /implib:"$(OUTDIR)\isapi_redirect.lib" 
> +LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib bufferoverflowu.lib strsafe.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\isapi_redirect.pdb" /debug /machine:AMD64 /def:".\isapi.def" /out:"$(OUTDIR)\isapi_redirect.dll" /implib:"$(OUTDIR)\isapi_redirect.lib" 
>  DEF_FILE= \
>  	".\isapi.def"
>  LINK32_OBJS= \
> 
> Modified: tomcat/connectors/trunk/jk/native/iis/Makefile.vc
> URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/Makefile.vc?view=diff&rev=511252&r1=511251&r2=511252
> ==============================================================================
> --- tomcat/connectors/trunk/jk/native/iis/Makefile.vc (original)
> +++ tomcat/connectors/trunk/jk/native/iis/Makefile.vc Sat Feb 24 03:45:39 2007
> @@ -74,7 +74,7 @@
>  BSC32_SBRS= \
>  	
>  LINK32=link.exe
> -LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /base:"0x6A6B0000" /dll /incremental:no /pdb:"$(OUTDIR)\isapi_redirect.pdb" /debug /machine:I386 /def:".\isapi.def" /out:"$(OUTDIR)\isapi_redirect.dll" /implib:"$(OUTDIR)\isapi_redirect.lib" 
> +LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib strsafe.lib /nologo /base:"0x6A6B0000" /dll /incremental:no /pdb:"$(OUTDIR)\isapi_redirect.pdb" /debug /machine:I386 /def:".\isapi.def" /out:"$(OUTDIR)\isapi_redirect.dll" /implib:"$(OUTDIR)\isapi_redirect.lib" 
>  DEF_FILE= \
>  	".\isapi.def"
>  LINK32_OBJS= \
> 
> Modified: tomcat/connectors/trunk/jk/native/iis/isapi.dsp
> URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/isapi.dsp?view=diff&rev=511252&r1=511251&r2=511252
> ==============================================================================
> --- tomcat/connectors/trunk/jk/native/iis/isapi.dsp (original)
> +++ tomcat/connectors/trunk/jk/native/iis/isapi.dsp Sat Feb 24 03:45:39 2007
> @@ -53,7 +53,7 @@
>  # ADD BSC32 /nologo
>  LINK32=link.exe
>  # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
> -# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /base:"0x6A6B0000" /dll /debug /machine:I386 /out:"Release\isapi_redirect.dll"
> +# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib strsafe.lib /nologo /base:"0x6A6B0000" /dll /debug /machine:I386 /out:"Release\isapi_redirect.dll"
>  
>  !ELSEIF  "$(CFG)" == "isapi - Win32 Debug"
>  
> @@ -79,7 +79,7 @@
>  # ADD BSC32 /nologo
>  LINK32=link.exe
>  # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
> -# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /base:"0x6A6B0000" /dll /incremental:no /debug /machine:I386 /out:"Debug\isapi_redirect.dll"
> +# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib strsafe.lib /nologo /base:"0x6A6B0000" /dll /incremental:no /debug /machine:I386 /out:"Debug\isapi_redirect.dll"
>  
>  !ENDIF 
>  
> 
> Modified: tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c
> URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c?view=diff&rev=511252&r1=511251&r2=511252
> ==============================================================================
> --- tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c (original)
> +++ tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c Sat Feb 24 03:45:39 2007
> @@ -40,6 +40,8 @@
>  #include "jk_uri_worker_map.h"
>  #include "jk_shm.h"
>  
> +#include <strsafe.h>
> +
>  #define VERSION_STRING "Jakarta/ISAPI/" JK_VERSTRING
>  #define SHM_DEF_NAME   "JKISAPISHMEM"
>  #define DEFAULT_WORKER_NAME ("ajp13")
> @@ -70,14 +72,14 @@
>  #define HEADER_TEMPLATE      ("%s%p:")
>  #define HTTP_HEADER_TEMPLATE ("HTTP_%s%p")
>  
> -static char URI_HEADER_NAME[_MAX_FNAME];
> -static char QUERY_HEADER_NAME[_MAX_FNAME];
> -static char WORKER_HEADER_NAME[_MAX_FNAME];
> -static char TOMCAT_TRANSLATE_HEADER_NAME[_MAX_FNAME];
> -
> -static char HTTP_URI_HEADER_NAME[_MAX_FNAME];
> -static char HTTP_QUERY_HEADER_NAME[_MAX_FNAME];
> -static char HTTP_WORKER_HEADER_NAME[_MAX_FNAME];
> +static char URI_HEADER_NAME[MAX_PATH];
> +static char QUERY_HEADER_NAME[MAX_PATH];
> +static char WORKER_HEADER_NAME[MAX_PATH];
> +static char TOMCAT_TRANSLATE_HEADER_NAME[MAX_PATH];
> +
> +static char HTTP_URI_HEADER_NAME[MAX_PATH];
> +static char HTTP_QUERY_HEADER_NAME[MAX_PATH];
> +static char HTTP_WORKER_HEADER_NAME[MAX_PATH];
>  
>  #define REGISTRY_LOCATION       ("Software\\Apache Software Foundation\\Jakarta Isapi Redirector\\1.0")
>  #define W3SVC_REGISTRY_KEY      ("SYSTEM\\CurrentControlSet\\Services\\W3SVC\\Parameters")
> @@ -528,7 +530,7 @@
>          return JK_FALSE;
>      }
>  
> -    if (s && s->ws_private) {        
> +    if (s && s->ws_private) {
>          int rv = JK_TRUE;
>          isapi_private_data_t *p = s->ws_private;
>          if (!p->request_started) {
> @@ -545,7 +547,7 @@
>                  reason = status_reason(status);
>              }
>              status_str = (char *)malloc((6 + strlen(reason)));
> -            sprintf(status_str, "%d %s", status, reason);
> +            StringCbPrintf(status_str, 6 + strlen(reason), "%d %s", status, reason);
>              hi.pszStatus = status_str;
>              hi.cchStatus = strlen(status_str);
>  
> @@ -565,12 +567,12 @@
>                  headers_str[0] = '\0';
>  
>                  for (i = 0; i < num_of_headers; i++) {
> -                    strcat(headers_str, header_names[i]);
> -                    strcat(headers_str, ": ");
> -                    strcat(headers_str, header_values[i]);
> -                    strcat(headers_str, crlf);
> +                    StringCbCat(headers_str, len_of_headers, header_names[i]);
> +                    StringCbCat(headers_str, len_of_headers, ": ");
> +                    StringCbCat(headers_str, len_of_headers, header_values[i]);
> +                    StringCbCat(headers_str, len_of_headers, crlf);
>                  }
> -                strcat(headers_str, crlf);
> +                StringCbCat(headers_str, len_of_headers, crlf);
>                  hi.pszHeader = headers_str;
>                  hi.cchHeader = strlen(headers_str);
>              }
> @@ -578,7 +580,7 @@
>                  hi.pszHeader = crlf;
>                  hi.cchHeader = 2;
>              }
> -            hi.fKeepConn = keep_alive;            
> +            hi.fKeepConn = keep_alive;
>              if (!p->lpEcb->ServerSupportFunction(p->lpEcb->ConnID,
>                                                   HSE_REQ_SEND_RESPONSE_HEADER_EX,
>                                                   &hi,
> @@ -722,7 +724,7 @@
>                          SF_NOTIFY_PREPROC_HEADERS;
>      }
>  
> -    strcpy(pVer->lpszFilterDesc, VERSION_STRING);
> +    StringCbCopy(pVer->lpszFilterDesc, SF_MAX_FILTER_DESC_LEN, VERSION_STRING);
>      return rv;
>  }
>  
> @@ -734,9 +736,9 @@
>          for (i = 0; i < jk_map_size(rewrite_map); i++) {
>              const char *src = jk_map_name_at(rewrite_map, i);
>              if (strncmp(uri, src, strlen(src)) == 0) {
> -                strcpy(buf, jk_map_value_at(rewrite_map, i));
> -                strcat(buf, uri + strlen(src));
> -                strcpy(uri, buf);
> +                StringCbCopy(buf, INTERNET_MAX_URL_LENGTH, jk_map_value_at(rewrite_map, i));
> +                StringCbCat(buf,  INTERNET_MAX_URL_LENGTH, uri + strlen(src));
> +                StringCbCopy(uri, INTERNET_MAX_URL_LENGTH, buf);
>                  return 1;
>              }
>          }
> @@ -824,7 +826,7 @@
>              query = strchr(uri, '?');
>              if (query) {
>                  *query++ = '\0';
> -                strcpy(squery, query);
> +                StringCbCopy(squery, INTERNET_MAX_URL_LENGTH, query);
>              }
>  
>              rc = unescape_url(uri);
> @@ -862,12 +864,12 @@
>              }
>              szPort = atoi(Port);
>              if (szPort != 80 && szPort != 443 && szHost > 0) {
> -                strcat(Host, ":");
> -                strcat(Host, Port);
> +                StringCbCat(Host, INTERNET_MAX_URL_LENGTH, ":");
> +                StringCbCat(Host, INTERNET_MAX_URL_LENGTH, Port);
>              }
>              if (szHost > 0) {
> -                strcat(snuri, Host);
> -                strcat(snuri, uri);
> +                StringCbCat(snuri, INTERNET_MAX_URL_LENGTH, Host);
> +                StringCbCat(snuri, INTERNET_MAX_URL_LENGTH, uri);
>                  if (JK_IS_DEBUG_LEVEL(logger))
>                      jk_log(logger, JK_LOG_DEBUG,
>                             "Virtual Host redirection of %s",
> @@ -948,7 +950,7 @@
>                   */
>                  if (JK_IS_DEBUG_LEVEL(logger)) {
>                      char duri[INTERNET_MAX_URL_LENGTH];
> -                    strcpy(duri, forwardURI);
> +                    StringCbCopy(duri, INTERNET_MAX_URL_LENGTH, forwardURI);
>                      if (simple_rewrite(forwardURI)) {
>                          jk_log(logger, JK_LOG_DEBUG,
>                                 "rewriten URI [%s]->[%s]",
> @@ -994,14 +996,14 @@
>                          return SF_STATUS_REQ_ERROR;
>                      }
>                      memset(ld, 0, sizeof(isapi_log_data_t));
> -                    strcpy(ld->uri, forwardURI);
> -                    strcpy(ld->query, squery);
> +                    StringCbCopy(ld->uri, INTERNET_MAX_URL_LENGTH, forwardURI);
> +                    StringCbCopy(ld->query, INTERNET_MAX_URL_LENGTH, squery);
>                      pfc->pFilterContext = ld;
>                  } else {
>                      isapi_log_data_t *ld = (isapi_log_data_t *)pfc->pFilterContext;
>                      memset(ld, 0, sizeof(isapi_log_data_t));
> -                    strcpy(ld->uri, forwardURI);
> -                    strcpy(ld->query, squery);
> +                    StringCbCopy(ld->uri, INTERNET_MAX_URL_LENGTH, forwardURI);
> +                    StringCbCopy(ld->query, INTERNET_MAX_URL_LENGTH, squery);
>                  }
>              }
>              else {
> @@ -1038,7 +1040,7 @@
>  {
>      pVer->dwExtensionVersion = MAKELONG(HSE_VERSION_MINOR, HSE_VERSION_MAJOR);
>  
> -    strcpy(pVer->lpszExtensionDesc, VERSION_STRING);
> +    StringCbCopy(pVer->lpszExtensionDesc, HSE_MAX_EXT_DLL_NAME_LEN, VERSION_STRING);
>  
>  
>      if (!is_inited) {
> @@ -1183,8 +1185,8 @@
>      BOOL fReturn = TRUE;
>      char drive[_MAX_DRIVE];
>      char dir[_MAX_DIR];
> -    char fname[_MAX_FNAME];
> -    char file_name[_MAX_PATH];
> +    char fname[MAX_PATH];
> +    char file_name[MAX_PATH];
>  
>      UNREFERENCED_PARAMETER(lpReserved);
>  
> @@ -1198,14 +1200,14 @@
>              fReturn = JK_FALSE;
>          }
>          /* Construct redirector headers to use for this redirector instance */
> -        sprintf(URI_HEADER_NAME, HEADER_TEMPLATE, URI_HEADER_NAME_BASE, hInst);
> -        sprintf(QUERY_HEADER_NAME, HEADER_TEMPLATE, QUERY_HEADER_NAME_BASE, hInst);
> -        sprintf(WORKER_HEADER_NAME, HEADER_TEMPLATE, WORKER_HEADER_NAME_BASE, hInst);
> -        sprintf(TOMCAT_TRANSLATE_HEADER_NAME, HEADER_TEMPLATE, TOMCAT_TRANSLATE_HEADER_NAME_BASE, hInst);
> -
> -        sprintf(HTTP_URI_HEADER_NAME, HTTP_HEADER_TEMPLATE, URI_HEADER_NAME_BASE, hInst);
> -        sprintf(HTTP_QUERY_HEADER_NAME, HTTP_HEADER_TEMPLATE, QUERY_HEADER_NAME_BASE, hInst);
> -        sprintf(HTTP_WORKER_HEADER_NAME, HTTP_HEADER_TEMPLATE, WORKER_HEADER_NAME_BASE, hInst);
> +        StringCbPrintf(URI_HEADER_NAME, MAX_PATH, HEADER_TEMPLATE, URI_HEADER_NAME_BASE, hInst);
> +        StringCbPrintf(QUERY_HEADER_NAME, MAX_PATH, HEADER_TEMPLATE, QUERY_HEADER_NAME_BASE, hInst);
> +        StringCbPrintf(WORKER_HEADER_NAME, MAX_PATH, HEADER_TEMPLATE, WORKER_HEADER_NAME_BASE, hInst);
> +        StringCbPrintf(TOMCAT_TRANSLATE_HEADER_NAME, MAX_PATH, HEADER_TEMPLATE, TOMCAT_TRANSLATE_HEADER_NAME_BASE, hInst);
> +
> +        StringCbPrintf(HTTP_URI_HEADER_NAME, MAX_PATH, HTTP_HEADER_TEMPLATE, URI_HEADER_NAME_BASE, hInst);
> +        StringCbPrintf(HTTP_QUERY_HEADER_NAME, MAX_PATH, HTTP_HEADER_TEMPLATE, QUERY_HEADER_NAME_BASE, hInst);
> +        StringCbPrintf(HTTP_WORKER_HEADER_NAME, MAX_PATH, HTTP_HEADER_TEMPLATE, WORKER_HEADER_NAME_BASE, hInst);
>  
>      break;
>      case DLL_PROCESS_DETACH:
> @@ -1225,17 +1227,17 @@
>  
>  static int init_jk(char *serverName)
>  {
> -    char shm_name[MAX_SERVERNAME + sizeof(SHM_DEF_NAME) + 1];
> +    char shm_name[MAX_PATH];
>      int rc = JK_FALSE;
>  
>      if (!jk_open_file_logger(&logger, log_file, log_level)) {
>          logger = NULL;
>      }
> -    strcpy(shm_name, SHM_DEF_NAME);
> +    StringCbCopy(shm_name, MAX_PATH, SHM_DEF_NAME);
>      if (*serverName) {
>          size_t i;
> -        strcat(shm_name, "_");
> -        strcpy(shm_name, serverName);
> +        StringCbCat(shm_name, MAX_PATH, "_");
> +        StringCbCat(shm_name, MAX_PATH, serverName);
>          for(i = 0; i < strlen(shm_name); i++) {
>              shm_name[i] = toupper(shm_name[i]);
>              if (!isalnum(shm_name[i]))
> @@ -1413,7 +1415,7 @@
>      if (using_ini_file) {
>          tmp = jk_map_get_string((jk_map_t*)src, tag, NULL);
>          if (tmp && (strlen(tmp) < sz)) {
> -            strcpy(val, tmp);
> +            StringCbCopy(val, sz, tmp);
>              return JK_TRUE;
>          }
>          else {
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
> 
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org