Author: rjung
Date: Sun Dec 28 17:12:59 2014
New Revision: 1648227

URL: http://svn.apache.org/r1648227
Log:
Let JK_SHM_STR_SIZ be the full byte size including
terminating 0 byte.

Keep copying and comparing JK_SHM_STR_SIZ bytes.
This is now one more byte, but we assume string
length to be at most JK_SHM_STR_SIZ-1 and we
don't want unexpected string truncation to happen.

Still need to add length checks for the configuration
input parameters.

Modified:
    tomcat/jk/trunk/native/common/jk_ajp_common.c
    tomcat/jk/trunk/native/common/jk_ajp_common.h
    tomcat/jk/trunk/native/common/jk_lb_worker.h
    tomcat/jk/trunk/native/common/jk_shm.h
    tomcat/jk/trunk/native/common/jk_status.c

Modified: tomcat/jk/trunk/native/common/jk_ajp_common.c
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_ajp_common.c?rev=1648227&r1=1648226&r2=1648227&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_ajp_common.c (original)
+++ tomcat/jk/trunk/native/common/jk_ajp_common.c Sun Dec 28 17:12:59 2014
@@ -1099,7 +1099,7 @@ void jk_ajp_pull(ajp_worker_t * aw, int
 {
     int address_change = JK_FALSE;
     int port = 0;
-    char host[JK_SHM_STR_SIZ+1];
+    char host[JK_SHM_STR_SIZ];
     jk_sockaddr_t inet_addr;
     JK_TRACE_ENTER(l);
 

Modified: tomcat/jk/trunk/native/common/jk_ajp_common.h
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_ajp_common.h?rev=1648227&r1=1648226&r2=1648227&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_ajp_common.h (original)
+++ tomcat/jk/trunk/native/common/jk_ajp_common.h Sun Dec 28 17:12:59 2014
@@ -287,7 +287,7 @@ struct ajp_worker
     /* Shared memory worker data */
     jk_shm_ajp_worker_t *s;
 
-    char         name[JK_SHM_STR_SIZ+1];
+    char         name[JK_SHM_STR_SIZ];
     /* Sequence counter starting at 0 and increasing
      * every time we change the config
      */
@@ -300,7 +300,7 @@ struct ajp_worker
 
     jk_sockaddr_t worker_inet_addr;    /* Contains host and port */
     unsigned connect_retry_attempts;
-    char host[JK_SHM_STR_SIZ+1];
+    char host[JK_SHM_STR_SIZ];
     int port;
     int addr_sequence;  /* Whether the address is resolved */
     int maintain_time;

Modified: tomcat/jk/trunk/native/common/jk_lb_worker.h
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_lb_worker.h?rev=1648227&r1=1648226&r2=1648227&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_lb_worker.h (original)
+++ tomcat/jk/trunk/native/common/jk_lb_worker.h Sun Dec 28 17:12:59 2014
@@ -140,18 +140,18 @@ struct lb_sub_worker
     /* Shared memory worker data */
     jk_shm_lb_sub_worker_t *s;
 
-    char         name[JK_SHM_STR_SIZ+1];
+    char         name[JK_SHM_STR_SIZ];
     /* Sequence counter starting at 0 and increasing
      * every time we change the config
      */
     volatile unsigned int sequence;
 
     /* route */
-    char    route[JK_SHM_STR_SIZ+1];
+    char    route[JK_SHM_STR_SIZ];
     /* worker domain */
-    char    domain[JK_SHM_STR_SIZ+1];
+    char    domain[JK_SHM_STR_SIZ];
     /* worker redirect route */
-    char    redirect[JK_SHM_STR_SIZ+1];
+    char    redirect[JK_SHM_STR_SIZ];
     /* worker distance */
     int distance;
     /* current activation state (config) of the worker */
@@ -171,7 +171,7 @@ struct lb_worker
     /* Shared memory worker data */
     jk_shm_lb_worker_t *s;
 
-    char         name[JK_SHM_STR_SIZ+1];
+    char         name[JK_SHM_STR_SIZ];
     /* Sequence counter starting at 0 and increasing
      * every time we change the config
      */
@@ -197,11 +197,11 @@ struct lb_worker
     unsigned int max_packet_size;
     unsigned int next_offset;
     /* Session cookie */
-    char         session_cookie[JK_SHM_STR_SIZ+1];
+    char         session_cookie[JK_SHM_STR_SIZ];
     /* Session path */
-    char         session_path[JK_SHM_STR_SIZ+1];
+    char         session_path[JK_SHM_STR_SIZ];
     int          set_session_cookie;
-    char         session_cookie_path[JK_SHM_STR_SIZ+1];
+    char         session_cookie_path[JK_SHM_STR_SIZ];
 };
 typedef struct lb_worker lb_worker_t;
 

Modified: tomcat/jk/trunk/native/common/jk_shm.h
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_shm.h?rev=1648227&r1=1648226&r2=1648227&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_shm.h (original)
+++ tomcat/jk/trunk/native/common/jk_shm.h Sun Dec 28 17:12:59 2014
@@ -42,7 +42,7 @@ extern "C"
 
 #define JK_SHM_MAJOR    '1'
 #define JK_SHM_MINOR    '3'
-#define JK_SHM_STR_SIZ  (JK_ALIGN(JK_MAX_NAME_LEN + 1, 8) - 1)
+#define JK_SHM_STR_SIZ  (JK_ALIGN(JK_MAX_NAME_LEN + 1, 8))
 #define JK_SHM_MAGIC    '!', 'J', 'K', 'S', 'H', 'M', JK_SHM_MAJOR, 
JK_SHM_MINOR
 #define JK_SHM_MAGIC_SIZ  8
 
@@ -62,7 +62,7 @@ struct jk_shm_worker_header
     /* JK_XXX_WORKER_TYPE */
     int     type;
     /* worker name */
-    char    name[JK_SHM_STR_SIZ+1];
+    char    name[JK_SHM_STR_SIZ];
     /* parent slot id.
      * Zero in case worker does not belong to balancer.
      */
@@ -78,7 +78,7 @@ typedef struct jk_shm_worker_header jk_s
 struct jk_shm_ajp_worker
 {
     jk_shm_worker_header_t h;
-    char host[JK_SHM_STR_SIZ+1];
+    char host[JK_SHM_STR_SIZ];
     int port;
     volatile int addr_sequence;
 
@@ -130,11 +130,11 @@ struct jk_shm_lb_sub_worker
     jk_shm_worker_header_t h;
 
     /* route */
-    char    route[JK_SHM_STR_SIZ+1];
+    char    route[JK_SHM_STR_SIZ];
     /* worker domain */
-    char    domain[JK_SHM_STR_SIZ+1];
+    char    domain[JK_SHM_STR_SIZ];
     /* worker redirect route */
-    char    redirect[JK_SHM_STR_SIZ+1];
+    char    redirect[JK_SHM_STR_SIZ];
     /* Number of currently busy channels */
     volatile int busy;
     /* worker distance */

Modified: tomcat/jk/trunk/native/common/jk_status.c
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_status.c?rev=1648227&r1=1648226&r2=1648227&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_status.c (original)
+++ tomcat/jk/trunk/native/common/jk_status.c Sun Dec 28 17:12:59 2014
@@ -3279,7 +3279,7 @@ static int commit_member(jk_ws_service_t
     int i;
     int old;
     int resolve = JK_FALSE;
-    char host[JK_SHM_STR_SIZ+1];
+    char host[JK_SHM_STR_SIZ];
     int  port = 0;
 
     JK_TRACE_ENTER(l);
@@ -3314,11 +3314,11 @@ static int commit_member(jk_ws_service_t
             *side_effect |= JK_STATUS_NEEDS_UPDATE_MULT | JK_STATUS_NEEDS_PUSH;
         if ((rv = status_get_string(p, JK_STATUS_ARG_LBM_ROUTE,
                                     NULL, &arg, l)) == JK_TRUE) {
-            if (strncmp(wr->route, arg, JK_SHM_STR_SIZ)) {
+            if (strncmp(wr->route, arg, JK_SHM_STR_SIZ )) {
                 jk_log(l, JK_LOG_INFO,
                        "Status worker '%s' changing 'route' for sub worker 
'%s' of lb worker '%s' from '%s' to '%s'",
                        w->name, wr->name, lb_name, wr->route, arg);
-                strncpy(wr->route, arg, JK_SHM_STR_SIZ);
+                strncpy(wr->route, arg, JK_SHM_STR_SIZ );
                 *side_effect |= JK_STATUS_NEEDS_PUSH;
                 if (!wr->domain[0]) {
                     char * id_domain = strchr(wr->route, '.');
@@ -3332,17 +3332,17 @@ static int commit_member(jk_ws_service_t
         }
         if ((rv = status_get_string(p, JK_STATUS_ARG_LBM_REDIRECT,
                                     NULL, &arg, l)) == JK_TRUE) {
-            if (strncmp(wr->redirect, arg, JK_SHM_STR_SIZ)) {
+            if (strncmp(wr->redirect, arg, JK_SHM_STR_SIZ )) {
                 jk_log(l, JK_LOG_INFO,
                        "Status worker '%s' changing 'redirect' for sub worker 
'%s' of lb worker '%s' from '%s' to '%s'",
                        w->name, wr->name, lb_name, wr->redirect, arg);
-                strncpy(wr->redirect, arg, JK_SHM_STR_SIZ);
+                strncpy(wr->redirect, arg, JK_SHM_STR_SIZ );
                 *side_effect |= JK_STATUS_NEEDS_PUSH;
             }
         }
         if ((rv = status_get_string(p, JK_STATUS_ARG_LBM_DOMAIN,
                                     NULL, &arg, l)) == JK_TRUE) {
-            if (strncmp(wr->domain, arg, JK_SHM_STR_SIZ)) {
+            if (strncmp(wr->domain, arg, JK_SHM_STR_SIZ )) {
                 jk_log(l, JK_LOG_INFO,
                        "Status worker '%s' changing 'domain' for sub worker 
'%s' of lb worker '%s' from '%s' to '%s'",
                        w->name, wr->name, lb_name, wr->domain, arg);



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

Reply via email to