jfarcand    2003/02/20 07:50:36

  Modified:    jasper2/src/share/org/apache/jasper/compiler JspUtil.java
  Log:
  Fix for JSP.2.6: A %> is quoted as %\>
  
  Bugtraq: 4679681
  
  Revision  Changes    Path
  1.32      +64 -63    
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspUtil.java
  
  Index: JspUtil.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspUtil.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- JspUtil.java      8 Feb 2003 00:06:40 -0000       1.31
  +++ JspUtil.java      20 Feb 2003 15:50:36 -0000      1.32
  @@ -111,17 +111,18 @@
        = new ExpressionEvaluatorImpl();
   
       public static char[] removeQuotes(char []chars) {
  -     CharArrayWriter caw = new CharArrayWriter();
  -     for (int i = 0; i < chars.length; i++) {
  -         if (chars[i] == '%' && chars[i+1] == '\\' &&
  -             chars[i+2] == '\\' && chars[i+3] == '>') {
  -             caw.write('%');
  -             caw.write('>');
  -             i = i + 3;
  -         }
  -         else caw.write(chars[i]);
  -     }
  -     return caw.toCharArray();
  +        CharArrayWriter caw = new CharArrayWriter();
  +        for (int i = 0; i < chars.length; i++) {
  +            if (chars[i] == '%' && chars[i+1] == '\\' &&
  +                chars[i+2] == '>') {
  +                caw.write('%');
  +                caw.write('>');
  +                i = i + 2;
  +            } else {
  +                caw.write(chars[i]);
  +            }
  +        }
  +        return caw.toCharArray();
       }
   
       public static char[] escapeQuotes (char []chars) {
  @@ -238,7 +239,7 @@
       public static void checkScope(String scope, Node n, ErrorDispatcher err)
               throws JasperException {
        if (scope != null && !scope.equals("page") && !scope.equals("request")
  -             && !scope.equals("session") && !scope.equals("application")) {
  +             && !scope.equals("session") && !scope.equals("application")) {
            err.jspError(n, "jsp.error.invalid.scope", scope);
        }
       }
  @@ -253,7 +254,7 @@
                                       Node n,
                                       ValidAttribute[] validAttributes,
                                       ErrorDispatcher err)
  -                             throws JasperException {
  +                             throws JasperException {
           Attributes attrs = n.getAttributes();
           Mark start = n.getStart();
        boolean valid = true;
  @@ -301,8 +302,8 @@
            int attrPos;    
            if (validAttributes[i].mandatory) {
                   attrPos = temp.indexOf(validAttributes[i].name);
  -             if (attrPos != -1) {
  -                 temp.remove(attrPos);
  +             if (attrPos != -1) {
  +                 temp.remove(attrPos);
                    valid = true;
                } else {
                    valid = false;
  @@ -329,13 +330,13 @@
            valid = false;
            attribute = (String) temp.elementAt(j);
            for (int i = 0; i < validAttributes.length; i++) {
  -             if (attribute.equals(validAttributes[i].name)) {
  +             if (attribute.equals(validAttributes[i].name)) {
                    valid = true;
                    break;
                }
            }
            if (!valid)
  -             err.jspError(start, "jsp.error.invalid.attribute", typeOfTag,
  +             err.jspError(start, "jsp.error.invalid.attribute", typeOfTag,
                             attribute);
        }
        // XXX *could* move EL-syntax validation here... (sb)
  @@ -411,7 +412,7 @@
       }
   
       public static class ValidAttribute {
  -     String name;
  +     String name;
        boolean mandatory;
        boolean rtexprvalue;    // not used now
   
  @@ -510,46 +511,46 @@
        else
            jspCtxt = "pageContext";
   
  -     /*
  +     /*
            * Determine whether to use the expected type's textual name
  -      * or, if it's a primitive, the name of its correspondent boxed
  -      * type.
  +      * or, if it's a primitive, the name of its correspondent boxed
  +      * type.
            */
  -     String targetType = expectedType.getName();
  -     String primitiveConverterMethod = null;
  -     if (expectedType.isPrimitive()) {
  -         if (expectedType.equals(Boolean.TYPE)) {
  -             targetType = Boolean.class.getName();
  -             primitiveConverterMethod = "booleanValue";
  -         } else if (expectedType.equals(Byte.TYPE)) {
  -             targetType = Byte.class.getName();
  -             primitiveConverterMethod = "byteValue";
  -         } else if (expectedType.equals(Character.TYPE)) {
  -             targetType = Character.class.getName();
  -             primitiveConverterMethod = "charValue";
  -         } else if (expectedType.equals(Short.TYPE)) {
  -             targetType = Short.class.getName();
  -             primitiveConverterMethod = "shortValue";
  -         } else if (expectedType.equals(Integer.TYPE)) {
  -             targetType = Integer.class.getName();
  -             primitiveConverterMethod = "intValue";
  -         } else if (expectedType.equals(Long.TYPE)) {
  -             targetType = Long.class.getName();
  -             primitiveConverterMethod = "longValue";
  -         } else if (expectedType.equals(Float.TYPE)) {
  -             targetType = Float.class.getName();
  -             primitiveConverterMethod = "floatValue";
  -         } else if (expectedType.equals(Double.TYPE)) { 
  -             targetType = Double.class.getName();
  -             primitiveConverterMethod = "doubleValue";
  -         }
  -     }
  +     String targetType = expectedType.getName();
  +     String primitiveConverterMethod = null;
  +     if (expectedType.isPrimitive()) {
  +         if (expectedType.equals(Boolean.TYPE)) {
  +             targetType = Boolean.class.getName();
  +             primitiveConverterMethod = "booleanValue";
  +         } else if (expectedType.equals(Byte.TYPE)) {
  +             targetType = Byte.class.getName();
  +             primitiveConverterMethod = "byteValue";
  +         } else if (expectedType.equals(Character.TYPE)) {
  +             targetType = Character.class.getName();
  +             primitiveConverterMethod = "charValue";
  +         } else if (expectedType.equals(Short.TYPE)) {
  +             targetType = Short.class.getName();
  +             primitiveConverterMethod = "shortValue";
  +         } else if (expectedType.equals(Integer.TYPE)) {
  +             targetType = Integer.class.getName();
  +             primitiveConverterMethod = "intValue";
  +         } else if (expectedType.equals(Long.TYPE)) {
  +             targetType = Long.class.getName();
  +             primitiveConverterMethod = "longValue";
  +         } else if (expectedType.equals(Float.TYPE)) {
  +             targetType = Float.class.getName();
  +             primitiveConverterMethod = "floatValue";
  +         } else if (expectedType.equals(Double.TYPE)) { 
  +             targetType = Double.class.getName();
  +             primitiveConverterMethod = "doubleValue";
  +         }
  +     }
    
        if (primitiveConverterMethod != null) {
            XmlEscape = false;
        }
   
  -     /*
  +     /*
            * Build up the base call to the interpreter.
            */
           // XXX - We use a proprietary call to the interpreter for now
  @@ -563,7 +564,7 @@
           // Note that PageContextImpl implements VariableResolver and
           // the generated Servlet/SimpleTag implements FunctionMapper, so
           // that machinery is already in place (mroth).
  -     StringBuffer call = new StringBuffer(
  +     StringBuffer call = new StringBuffer(
                "(" + targetType + ") "
                  + "org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate"
                  + "(" + Generator.quote(expression) + ", "
  @@ -575,15 +576,15 @@
               + ", " + XmlEscape
                  + ")");
    
  -     /*
  +     /*
            * Add the primitive converter method if we need to.
            */
  -     if (primitiveConverterMethod != null) {
  -         call.insert(0, "(");
  -         call.append(")." + primitiveConverterMethod + "()");
  -     }
  +     if (primitiveConverterMethod != null) {
  +         call.insert(0, "(");
  +         call.append(")." + primitiveConverterMethod + "()");
  +     }
    
  -     return call.toString();
  +     return call.toString();
       }
   
       /**
  @@ -946,7 +947,7 @@
       public static InputStream getInputStream(String fname, JarFile jarFile,
                                             JspCompilationContext ctxt,
                                             ErrorDispatcher err)
  -             throws JasperException, IOException {
  +             throws JasperException, IOException {
   
           InputStream in = null;
   
  @@ -1017,7 +1018,7 @@
                                       JarFile jarFile,
                                       JspCompilationContext ctxt,
                                       ErrorDispatcher err)
  -             throws JasperException, IOException {
  +             throws JasperException, IOException {
   
           InputStreamReader reader = null;
        InputStream in = getInputStream(fname, jarFile, ctxt, err);
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to