You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Carlos Amengual <we...@healthnet-sl.es> on 1998/09/06 19:47:40 UTC

mod_jserv/2962: initArgs are not parsed correctly

>Number:         2962
>Category:       mod_jserv
>Synopsis:       initArgs are not parsed correctly
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    jserv
>State:          open
>Class:          sw-bug
>Submitter-Id:   apache
>Arrival-Date:   Sun Sep  6 10:50:00 PDT 1998
>Last-Modified:
>Originator:     webmaster@healthnet-sl.es
>Organization:
apache
>Release:        1.3.1
>Environment:
FreeBSD 2.2.6, JDK1.1.6, JSDK 2.0, Jserv snapshot of 980906.
>Description:
When initArgs has more than one parameters set, e.g.:

xxxx.xxxx.initArgs=name1=value1,\
    name2=value2,\
    name3=value3

the args will not be correctly parsed. If one puts a "\" to "join" the lines,
as above, the "name2", "name3" etc will not be parsed. Even the trace file
will not list them. For the above example, trace will give:

initArgs: '{ name1=value1 }'
>How-To-Repeat:

>Fix:
The problem is at "load" method at the "Configurations" class.
It is not able to identify "escaped" multiline configs. The following patch
is a hack but will do the job:

*** Configurations.java.orig	Fri Aug 21 21:02:30 1998
--- Configurations.java	Sun Sep  6 19:31:10 1998
***************
*** 160,170 ****
       */
      public void load(InputStream input) throws IOException {
          BufferedReader reader = new BufferedReader(new InputStreamReader(input));
!         String line;
  
          while ((line = reader.readLine()) != null) {
              line.trim();
              if (!line.startsWith("#")) {
                  int equalSign = line.indexOf('=');
                  if (equalSign > 0) {
                      String key = line.substring(0, equalSign);
--- 160,177 ----
       */
      public void load(InputStream input) throws IOException {
          BufferedReader reader = new BufferedReader(new InputStreamReader(input));
!         String line, escline;
  
          while ((line = reader.readLine()) != null) {
              line.trim();
              if (!line.startsWith("#")) {
+ 		while(line.endsWith("\\")){
+ 		    if((escline = reader.readLine()) != null) {
+ 			line = line.substring(0,line.length()-1) + escline;
+ 		    } else {
+ 			break;
+ 		    }
+ 		}
                  int equalSign = line.indexOf('=');
                  if (equalSign > 0) {
                      String key = line.substring(0, equalSign);
***************
*** 799,802 ****
                  + " doesn't map to a Double object");
          }
      }
! }
\ No newline at end of file
--- 806,809 ----
                  + " doesn't map to a Double object");
          }
      }
! }
>Audit-Trail:
>Unformatted:
[In order for any reply to be added to the PR database, ]
[you need to include <ap...@Apache.Org> in the Cc line ]
[and leave the subject line UNCHANGED.  This is not done]
[automatically because of the potential for mail loops. ]
[If you do not include this Cc, your reply may be ig-   ]
[nored unless you are responding to an explicit request ]
[from a developer.                                      ]
[Reply only with text; DO NOT SEND ATTACHMENTS!         ]