Program: 60325
Project: 60325
Buggy source:
/** 
 * Utility that delegates to the actual service method of the servlet wrapped with a contextual request (i.e. with correctly computed path info). We need to suppress deprecation coz we use HttpServletRequestWrapper, which implements deprecated API for backwards compatibility.
 */
void doService(final ServletRequest servletRequest,ServletResponse servletResponse) throws ServletException, IOException {
  HttpServletRequest request=new HttpServletRequestWrapper((HttpServletRequest)servletRequest){
    private boolean pathComputed;
    private String path;
    private boolean pathInfoComputed;
    private String pathInfo;
    @Override public String getPathInfo(){
      if (!isPathInfoComputed()) {
        int servletPathLength=getServletPath().length();
        pathInfo=getRequestURI().substring(getContextPath().length()).replaceAll("String_Node_Str","String_Node_Str");
        pathInfo=pathInfo.length() > servletPathLength ? pathInfo.substring(servletPathLength) : null;
        if ("String_Node_Str".equals(pathInfo) && servletPathLength != 0) {
          pathInfo=null;
        }
        pathInfoComputed=true;
      }
      return pathInfo;
    }
    private boolean isPathInfoComputed(){
      return pathInfoComputed && !(null != servletRequest.getAttribute(REQUEST_DISPATCHER_REQUEST));
    }
    private boolean isPathComputed(){
      return pathComputed && !(null != servletRequest.getAttribute(REQUEST_DISPATCHER_REQUEST));
    }
    @Override public String getServletPath(){
      return computePath();
    }
    @Override public String getPathTranslated(){
      final String info=getPathInfo();
      return (null == info) ? null : getRealPath(info);
    }
    private String computePath(){
      if (!isPathComputed()) {
        String servletPath=super.getServletPath();
        path=patternMatcher.extractPath(servletPath);
        pathComputed=true;
        if (null == path) {
          path=servletPath;
        }
      }
      return path;
    }
  }
;
  doServiceImpl(request,(HttpServletResponse)servletResponse);
}

Fixed version (ground truth):
/** 
 * Utility that delegates to the actual service method of the servlet wrapped with a contextual request (i.e. with correctly computed path info). We need to suppress deprecation coz we use HttpServletRequestWrapper, which implements deprecated API for backwards compatibility.
 */
void doService(final ServletRequest servletRequest,ServletResponse servletResponse) throws ServletException, IOException {
  HttpServletRequest request=new HttpServletRequestWrapper((HttpServletRequest)servletRequest){
    private boolean pathComputed;
    private String path;
    private boolean pathInfoComputed;
    private String pathInfo;
    @Override public String getPathInfo(){
      if (!isPathInfoComputed()) {
        String servletPath=getServletPath();
        int servletPathLength=servletPath.length();
        String requestUri=getRequestURI();
        pathInfo=requestUri.substring(getContextPath().length()).replaceAll("String_Node_Str","String_Node_Str");
        if (pathInfo.startsWith(servletPath)) {
          pathInfo=pathInfo.substring(servletPathLength);
          if (pathInfo.isEmpty() && servletPathLength > 0) {
            pathInfo=null;
          }
        }
        pathInfoComputed=true;
      }
      return pathInfo;
    }
    private boolean isPathInfoComputed(){
      return pathInfoComputed && !(null != servletRequest.getAttribute(REQUEST_DISPATCHER_REQUEST));
    }
    private boolean isPathComputed(){
      return pathComputed && !(null != servletRequest.getAttribute(REQUEST_DISPATCHER_REQUEST));
    }
    @Override public String getServletPath(){
      return computePath();
    }
    @Override public String getPathTranslated(){
      final String info=getPathInfo();
      return (null == info) ? null : getRealPath(info);
    }
    private String computePath(){
      if (!isPathComputed()) {
        String servletPath=super.getServletPath();
        path=patternMatcher.extractPath(servletPath);
        pathComputed=true;
        if (null == path) {
          path=servletPath;
        }
      }
      return path;
    }
  }
;
  doServiceImpl(request,(HttpServletResponse)servletResponse);
}