Author: rjung
Date: Mon Dec 21 23:33:10 2009
New Revision: 893032

URL: http://svn.apache.org/viewvc?rev=893032&view=rev
Log:
BZ45610: Don't accept status worker requests with
empty value for sub worker parameter.

Modified:
    tomcat/jk/trunk/native/common/jk_status.c
    tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml

Modified: tomcat/jk/trunk/native/common/jk_status.c
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_status.c?rev=893032&r1=893031&r2=893032&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_status.c (original)
+++ tomcat/jk/trunk/native/common/jk_status.c Mon Dec 21 23:33:10 2009
@@ -1266,7 +1266,7 @@
         if (value) {
             *value = '\0';
             value++;
-    /* XXX Depending on the params values, we might need to trim and decode */
+            /* XXX Depending on the params values, we might need to trim and 
decode */
             if (strlen(key)) {
                 if (JK_IS_DEBUG_LEVEL(l))
                     jk_log(l, JK_LOG_DEBUG,
@@ -1313,6 +1313,22 @@
                "Status worker '%s' %s worker '%s' sub worker '%s'",
                w->name, operation,
                *worker ? *worker : "(null)", *sub_worker ? *sub_worker : 
"(null)");
+    if (!*worker || !(*worker)[0]) {
+        jk_log(l, JK_LOG_WARNING,
+               "Status worker '%s' NULL or EMPTY worker param",
+               w->name);
+        p->msg = "NULL or EMPTY worker param";
+        JK_TRACE_EXIT(l);
+        return JK_FALSE;
+    }
+    if (*sub_worker && !(*sub_worker)[0]) {
+        jk_log(l, JK_LOG_WARNING,
+               "Status worker '%s' EMPTY sub worker param",
+               w->name);
+        p->msg = "EMPTY sub worker param";
+        JK_TRACE_EXIT(l);
+        return JK_FALSE;
+    }
     JK_TRACE_EXIT(l);
     return JK_TRUE;
 }
@@ -3696,8 +3712,8 @@
     lb_sub_worker_t *wr = NULL;
 
     JK_TRACE_ENTER(l);
-    fetch_worker_and_sub_worker(p, "checking", &worker, &sub_worker, l);
-    if (search_worker(s, p, &jw, worker, l) == JK_FALSE) {
+    if (fetch_worker_and_sub_worker(p, "checking", &worker, &sub_worker, l) == 
JK_FALSE ||
+        search_worker(s, p, &jw, worker, l) == JK_FALSE) {
         JK_TRACE_EXIT(l);
         return JK_FALSE;
     }
@@ -3920,8 +3936,8 @@
     lb_sub_worker_t *wr = NULL;
 
     JK_TRACE_ENTER(l);
-    fetch_worker_and_sub_worker(p, "showing", &worker, &sub_worker, l);
-    if (search_worker(s, p, &jw, worker, l) == JK_FALSE) {
+    if (fetch_worker_and_sub_worker(p, "showing", &worker, &sub_worker, l) == 
JK_FALSE ||
+        search_worker(s, p, &jw, worker, l) == JK_FALSE) {
         JK_TRACE_EXIT(l);
         return JK_FALSE;
     }
@@ -3951,8 +3967,8 @@
     ajp_worker_t *aw = NULL;
 
     JK_TRACE_ENTER(l);
-    fetch_worker_and_sub_worker(p, "editing", &worker, &sub_worker, l);
-    if (search_worker(s, p, &jw, worker, l) == JK_FALSE) {
+    if (fetch_worker_and_sub_worker(p, "editing", &worker, &sub_worker, l) == 
JK_FALSE ||
+        search_worker(s, p, &jw, worker, l) == JK_FALSE) {
         JK_TRACE_EXIT(l);
         return JK_FALSE;
     }
@@ -4046,8 +4062,8 @@
     int rv;
 
     JK_TRACE_ENTER(l);
-    fetch_worker_and_sub_worker(p, "updating", &worker, &sub_worker, l);
-    if (search_worker(s, p, &jw, worker, l) == JK_FALSE) {
+    if (fetch_worker_and_sub_worker(p, "updating", &worker, &sub_worker, l) == 
JK_FALSE ||
+        search_worker(s, p, &jw, worker, l) == JK_FALSE) {
         JK_TRACE_EXIT(l);
         return JK_FALSE;
     }
@@ -4212,8 +4228,8 @@
     time_t now = 0;
 
     JK_TRACE_ENTER(l);
-    fetch_worker_and_sub_worker(p, "resetting", &worker, &sub_worker, l);
-    if (search_worker(s, p, &jw, worker, l) == JK_FALSE) {
+    if (fetch_worker_and_sub_worker(p, "resetting", &worker, &sub_worker, l) 
== JK_FALSE ||
+        search_worker(s, p, &jw, worker, l) == JK_FALSE) {
         JK_TRACE_EXIT(l);
         return JK_FALSE;
     }
@@ -4325,8 +4341,8 @@
     status_worker_t *w = p->worker;
 
     JK_TRACE_ENTER(l);
-    fetch_worker_and_sub_worker(p, "recovering", &worker, &sub_worker, l);
-    if (search_worker(s, p, &jw, worker, l) == JK_FALSE) {
+    if (fetch_worker_and_sub_worker(p, "recovering", &worker, &sub_worker, l) 
== JK_FALSE ||
+        search_worker(s, p, &jw, worker, l) == JK_FALSE) {
         JK_TRACE_EXIT(l);
         return JK_FALSE;
     }

Modified: tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml?rev=893032&r1=893031&r2=893032&view=diff
==============================================================================
--- tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml Mon Dec 21 23:33:10 2009
@@ -44,6 +44,10 @@
   <subsection name="Native">
     <changelog>
       <fix>
+        <bug>45610</bug>: Status: Don't accept requests with
+        empty value for sub worker parameter. (rjung)
+      </fix>
+      <fix>
         <bug>45610</bug>: Status: Fix erroneous unsetting of
         sticky_session and sticky_session_force when updating other
         load balancer attributes via the status worker. (rjung)



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

Reply via email to