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: [email protected]
For additional commands, e-mail: [email protected]