Program: 152122
Project: 152122
Buggy source:
/** 
 * Combine an old URL and a redirect to a new URL.
 * @param redirectURL new URL. May be absolute or relative. It if starts withslash (/) it is applied to domain root.
 * @param currentURI current URI. Absolute or relative.
 * @return new URL to get
 * @throws java.io.IOException Problem when computing redirect
 */
private String computeRedirect(String redirectURL,URI currentURI) throws IOException {
  if (redirectURL == null) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  if (currentURI == null) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  if (redirectURL.startsWith("String_Node_Str") || redirectURL.startsWith("String_Node_Str")) {
    try {
      redirectURL=convertRelativeRedirectToAbsolute(currentURI.toString(),redirectURL);
    }
 catch (    IOException ex) {
      throw new IOException("String_Node_Str" + "String_Node_Str" + redirectURL + "String_Node_Str",ex);
    }
  }
  if (redirectURL.startsWith("String_Node_Str")) {
    if (!isAbsoluteURL(currentURI.getEscapedURI())) {
    }
 else {
      String uri=currentURI.getEscapedURI();
      int slash=uri.indexOf('/',"String_Node_Str".length());
      if (slash > 0) {
        uri=uri.substring(0,slash);
      }
      redirectURL=uri + redirectURL;
    }
  }
 else   if (!isAbsoluteURL(redirectURL)) {
    if (!isAbsoluteURL(currentURI.getEscapedURI())) {
      String uri=currentURI.getEscapedURI();
      int slash=uri.lastIndexOf('/');
      if (slash > 0) {
        uri=uri.substring(0,slash + 1);
      }
 else {
        uri="String_Node_Str";
      }
      redirectURL=uri + redirectURL;
    }
 else {
      String uri=currentURI.getEscapedURI();
      int slash=uri.lastIndexOf('/');
      if (slash > "String_Node_Str".length()) {
        uri=uri.substring(0,slash);
      }
      redirectURL=uri + "String_Node_Str" + redirectURL;
    }
  }
 else {
  }
  if (url.equalsIgnoreCase(redirectURL)) {
    throw new IOException("String_Node_Str");
  }
  logger.fine("String_Node_Str" + redirectURL);
  return redirectURL;
}

Fixed version (ground truth):
/** 
 * Combine an old URL and a redirect to a new URL.
 * @param redirectURL new URL. May be absolute or relative. It if starts withslash (/) it is applied to domain root.
 * @param currentURI current URI. Absolute or relative.
 * @return new URL to get
 * @throws java.io.IOException Problem when computing redirect
 */
private String computeRedirect(String redirectURL,URI currentURI) throws IOException {
  if (redirectURL == null) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  if (currentURI == null) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  if (redirectURL.startsWith("String_Node_Str") || redirectURL.startsWith("String_Node_Str")) {
    try {
      redirectURL=convertRelativeRedirectToAbsolute(currentURI.toString(),redirectURL);
    }
 catch (    IOException ex) {
      throw new IOException("String_Node_Str" + "String_Node_Str" + redirectURL + "String_Node_Str",ex);
    }
  }
  if (redirectURL.startsWith("String_Node_Str")) {
    if (!isAbsoluteURL(currentURI.getEscapedURI())) {
    }
 else {
      String uri=currentURI.getEscapedURI();
      int slash=uri.indexOf('/',"String_Node_Str".length());
      if (slash > 0) {
        uri=uri.substring(0,slash);
      }
      redirectURL=uri + redirectURL;
    }
  }
 else   if (!isAbsoluteURL(redirectURL)) {
    if (!isAbsoluteURL(currentURI.getEscapedURI())) {
      String uri=currentURI.getEscapedURI();
      int slash=uri.lastIndexOf('/');
      if (slash > 0) {
        uri=uri.substring(0,slash + 1);
      }
 else {
        uri="String_Node_Str";
      }
      redirectURL=uri + redirectURL;
    }
 else {
      String uri=currentURI.getEscapedURI();
      int slash=uri.lastIndexOf('/');
      if (slash > "String_Node_Str".length()) {
        uri=uri.substring(0,slash);
      }
      redirectURL=uri + "String_Node_Str" + redirectURL;
    }
  }
 else {
  }
  if (ObjectUtils.equals(lastRedirect.get1(),redirectURL)) {
    lastRedirect.set2(lastRedirect.get2() + 1);
  }
 else {
    lastRedirect.set1(redirectURL);
    lastRedirect.set2(0);
  }
  if (lastRedirect.get2() > 5) {
    throw new IOException("String_Node_Str");
  }
  logger.fine("String_Node_Str" + redirectURL);
  return redirectURL;
}