struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chris Pratt (JIRA)" <j...@apache.org>
Subject [jira] [Created] (WW-4437) Bug in CookieInterceptor
Date Fri, 19 Dec 2014 16:29:13 GMT
Chris Pratt created WW-4437:
-------------------------------

             Summary: Bug in CookieInterceptor
                 Key: WW-4437
                 URL: https://issues.apache.org/jira/browse/WW-4437
             Project: Struts 2
          Issue Type: Bug
          Components: Core Interceptors
    Affects Versions: 2.3.20
            Reporter: Chris Pratt


Sorry, I don't have an environment set up to create a patch, but I found an error in the {{CookieInterceptor.isAccepted()}}
method.  It currently looks like:

{code:java}
/**
 * Checks if name of Cookie match {@link #acceptedPattern}
 *
 * @param name of Cookie
 * @return true|false
 */
protected boolean isAccepted(String name) {
    boolean matches = acceptedPattern.matcher(name).matches();
    if (matches) {
        if (LOG.isTraceEnabled()) {
            LOG.trace("Cookie [#0] matches acceptedPattern [#1]", name, ACCEPTED_PATTERN);
        }
    } else {
        if (LOG.isTraceEnabled()) {
            LOG.trace("Cookie [#0] doesn't match acceptedPattern [#1]", name, ACCEPTED_PATTERN);
        }
    }
    return matches;
}
{code}

But it would be more useful if it actually reported the RegEx being used instead of the default.
 And, it would be more performant if the comparisons were reversed.  So something more like:

{code:java}
/**
 * Checks if name of Cookie match {@link #acceptedPattern}
 *
 * @param name of Cookie
 * @return true|false
 */
protected boolean isAccepted (String name) {
  boolean matches = acceptedPattern.matcher(name).matches();
  if(LOG.isTraceEnabled()) {   
    if(matches) {
      LOG.trace("Cookie [#0] matches acceptedPattern [#1]",name,acceptedPattern.pattern());
    } else {
      LOG.trace("Cookie [#0] doesn't match acceptedPattern [#1]",name,acceptedPattern.pattern());
    }
  }
  return matches;
}
{code}

In addition, it looks like the default and the override are handled differently.  The current
code compiles the default case-insensitive, but not the override pattern.  Shouldn't that
be consistent?

{code:java}
private Pattern acceptedPattern = Pattern.compile(ACCEPTED_PATTERN,Pattern.CASE_INSENSITIVE);

public void setAcceptCookieNames (String pattern) {
  acceptedPattern = Pattern.compile(pattern);
}
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message