Program: 86269
Project: 86269
Buggy source:
@Override public ReservationResult reservation(DetailledItem item,Account account,int useraction,String selection) throws IOException {
  Document doc;
  List<NameValuePair> nvpairs;
  ReservationResult res=null;
  if (selection != null && selection.equals("String_Node_Str"))   selection=null;
  if (s_pageform == null)   return new ReservationResult(Status.ERROR);
  nvpairs=s_pageform;
  int i=0;
  List<Integer> indexes=new ArrayList<Integer>();
  for (  NameValuePair np : nvpairs) {
    if (np.getName().contains("String_Node_Str") || np.getName().contains("String_Node_Str")) {
      indexes.add(i);
    }
    i++;
  }
  for (int j=indexes.size() - 1; j >= 0; j--) {
    nvpairs.remove((int)indexes.get(j));
  }
  nvpairs.add(new BasicNameValuePair("String_Node_Str","String_Node_Str" + item.getReservation_info()));
  doc=htmlPost(opac_url + "String_Node_Str" + s_sid,nvpairs);
  doc=htmlPost(opac_url + "String_Node_Str" + s_sid,nvpairs);
  List<NameValuePair> form=new ArrayList<NameValuePair>();
  for (  Element input : doc.select("String_Node_Str")) {
    if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && (!"String_Node_Str".equals(input.attr("String_Node_Str")) || input.val().contains("String_Node_Str") || input.val().contains("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))&& !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
      form.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
    }
  }
  doc=htmlPost(opac_url + "String_Node_Str" + s_sid,form);
  if (doc.select("String_Node_Str").size() > 0) {
    String msg=doc.select("String_Node_Str").text().trim();
    res=new ReservationResult(MultiStepResult.Status.ERROR,msg);
    form=new ArrayList<NameValuePair>();
    for (    Element input : doc.select("String_Node_Str")) {
      if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
        form.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
      }
    }
    doc=htmlPost(opac_url + "String_Node_Str" + s_sid,form);
  }
 else {
    try {
      doc=handleLoginForm(doc,account);
    }
 catch (    OpacErrorException e1) {
      return new ReservationResult(MultiStepResult.Status.ERROR,e1.getMessage());
    }
    if (useraction == 0 && selection == null && doc.select("String_Node_Str").size() == 0) {
      res=new ReservationResult(MultiStepResult.Status.CONFIRMATION_NEEDED);
      List<String[]> details=new ArrayList<String[]>();
      details.add(new String[]{doc.select("String_Node_Str").text()});
      res.setDetails(details);
    }
 else     if (doc.select("String_Node_Str").size() > 0 && selection == null) {
      Map<String,String> sel=new HashMap<String,String>();
      for (      Element opt : doc.select("String_Node_Str")) {
        if (opt.text().trim().length() > 0)         sel.put(opt.val(),opt.text());
      }
      res=new ReservationResult(MultiStepResult.Status.SELECTION_NEEDED,doc.select("String_Node_Str").text());
      res.setSelection(sel);
    }
 else     if (selection != null || doc.select("String_Node_Str").size() == 0) {
      if (doc.select("String_Node_Str").size() > 0) {
        doc.select("String_Node_Str").attr("String_Node_Str",selection);
      }
      form=new ArrayList<NameValuePair>();
      for (      Element input : doc.select("String_Node_Str")) {
        if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))&& !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
          form.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
        }
      }
      form.add(new BasicNameValuePair("String_Node_Str","String_Node_Str"));
      res=new ReservationResult(MultiStepResult.Status.OK);
      doc=htmlPost(opac_url + "String_Node_Str" + s_sid,form);
      if (doc.select("String_Node_Str").size() > 0) {
        String msg=doc.select("String_Node_Str").text().trim();
        form=new ArrayList<NameValuePair>();
        for (        Element input : doc.select("String_Node_Str")) {
          if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
            form.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
          }
        }
        doc=htmlPost(opac_url + "String_Node_Str" + s_sid,form);
        if (!msg.contains("String_Node_Str")) {
          res=new ReservationResult(MultiStepResult.Status.ERROR,msg);
        }
 else {
          res=new ReservationResult(MultiStepResult.Status.OK,msg);
        }
      }
 else       if (doc.select("String_Node_Str").text().contains("String_Node_Str")) {
        String msg=doc.select("String_Node_Str").text().trim();
        form=new ArrayList<NameValuePair>();
        for (        Element input : doc.select("String_Node_Str")) {
          if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
            form.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
          }
        }
        doc=htmlPost(opac_url + "String_Node_Str" + s_sid,form);
        if (!msg.contains("String_Node_Str")) {
          res=new ReservationResult(MultiStepResult.Status.ERROR,msg);
        }
 else {
          res=new ReservationResult(MultiStepResult.Status.OK,msg);
        }
      }
    }
  }
  if (res == null || res.getStatus() == MultiStepResult.Status.SELECTION_NEEDED || res.getStatus() == MultiStepResult.Status.CONFIRMATION_NEEDED) {
    form=new ArrayList<NameValuePair>();
    for (    Element input : doc.select("String_Node_Str")) {
      if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))&& !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
        form.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
      }
    }
    form.add(new BasicNameValuePair("String_Node_Str","String_Node_Str"));
    doc=htmlPost(opac_url + "String_Node_Str" + s_sid,form);
  }
  s_pageform=new ArrayList<NameValuePair>();
  for (  Element input : doc.select("String_Node_Str")) {
    if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))&& !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
      s_pageform.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
    }
  }
  try {
    nvpairs=s_pageform;
    nvpairs.add(new BasicNameValuePair("String_Node_Str","String_Node_Str"));
    nvpairs.add(new BasicNameValuePair("String_Node_Str","String_Node_Str"));
    parse_search(htmlPost(opac_url + "String_Node_Str" + s_sid,nvpairs),1);
    nvpairs=s_pageform;
    nvpairs.add(new BasicNameValuePair("String_Node_Str","String_Node_Str"));
    nvpairs.add(new BasicNameValuePair("String_Node_Str","String_Node_Str"));
    parse_search(htmlPost(opac_url + "String_Node_Str" + s_sid,nvpairs),1);
  }
 catch (  OpacErrorException e) {
    e.printStackTrace();
  }
  return res;
}

Fixed version (ground truth):
@Override public ReservationResult reservation(DetailledItem item,Account account,int useraction,String selection) throws IOException {
  Document doc;
  List<NameValuePair> nvpairs;
  ReservationResult res=null;
  if (selection != null && selection.equals("String_Node_Str"))   selection=null;
  if (s_pageform == null)   return new ReservationResult(Status.ERROR);
  nvpairs=s_pageform;
  int i=0;
  List<Integer> indexes=new ArrayList<Integer>();
  for (  NameValuePair np : nvpairs) {
    if (np.getName().contains("String_Node_Str") || np.getName().contains("String_Node_Str")) {
      indexes.add(i);
    }
    i++;
  }
  for (int j=indexes.size() - 1; j >= 0; j--) {
    nvpairs.remove((int)indexes.get(j));
  }
  nvpairs.add(new BasicNameValuePair("String_Node_Str","String_Node_Str" + item.getReservation_info()));
  doc=htmlPost(opac_url + "String_Node_Str" + s_sid,nvpairs);
  doc=htmlPost(opac_url + "String_Node_Str" + s_sid,nvpairs);
  List<NameValuePair> form=new ArrayList<NameValuePair>();
  for (  Element input : doc.select("String_Node_Str")) {
    if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && (!"String_Node_Str".equals(input.attr("String_Node_Str")) || input.val().contains("String_Node_Str") || input.val().contains("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))&& !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
      form.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
    }
  }
  doc=htmlPost(opac_url + "String_Node_Str" + s_sid,form);
  if (doc.select("String_Node_Str").size() > 0) {
    String msg=doc.select("String_Node_Str").text().trim();
    res=new ReservationResult(MultiStepResult.Status.ERROR,msg);
    form=new ArrayList<NameValuePair>();
    for (    Element input : doc.select("String_Node_Str")) {
      if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
        form.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
      }
    }
    doc=htmlPost(opac_url + "String_Node_Str" + s_sid,form);
  }
 else {
    try {
      doc=handleLoginForm(doc,account);
    }
 catch (    OpacErrorException e1) {
      return new ReservationResult(MultiStepResult.Status.ERROR,e1.getMessage());
    }
    if (useraction == 0 && selection == null && doc.select("String_Node_Str").size() == 0) {
      res=new ReservationResult(MultiStepResult.Status.CONFIRMATION_NEEDED);
      List<String[]> details=new ArrayList<String[]>();
      details.add(new String[]{doc.select("String_Node_Str").text()});
      res.setDetails(details);
    }
 else     if (doc.select("String_Node_Str").size() > 0 && selection == null) {
      Map<String,String> sel=new HashMap<String,String>();
      for (      Element opt : doc.select("String_Node_Str")) {
        if (opt.text().trim().length() > 0)         sel.put(opt.val(),opt.text());
      }
      res=new ReservationResult(MultiStepResult.Status.SELECTION_NEEDED,doc.select("String_Node_Str").text());
      res.setSelection(sel);
    }
 else     if (selection != null || doc.select("String_Node_Str").size() == 0) {
      if (doc.select("String_Node_Str").size() > 0) {
        doc.select("String_Node_Str").attr("String_Node_Str",selection);
      }
      if (doc.select("String_Node_Str").size() > 0) {
        String msg=doc.select("String_Node_Str").text().trim();
        form=new ArrayList<NameValuePair>();
        for (        Element input : doc.select("String_Node_Str")) {
          if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
            form.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
          }
        }
        doc=htmlPost(opac_url + "String_Node_Str" + s_sid,form);
        if (!msg.contains("String_Node_Str")) {
          res=new ReservationResult(MultiStepResult.Status.ERROR,msg);
        }
 else {
          res=new ReservationResult(MultiStepResult.Status.OK,msg);
        }
      }
 else {
        form=new ArrayList<NameValuePair>();
        for (        Element input : doc.select("String_Node_Str")) {
          if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))&& !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
            form.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
          }
        }
        form.add(new BasicNameValuePair("String_Node_Str","String_Node_Str"));
        res=new ReservationResult(MultiStepResult.Status.OK);
        doc=htmlPost(opac_url + "String_Node_Str" + s_sid,form);
        if (doc.select("String_Node_Str").size() > 0) {
          String msg=doc.select("String_Node_Str").text().trim();
          form=new ArrayList<NameValuePair>();
          for (          Element input : doc.select("String_Node_Str")) {
            if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
              form.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
            }
          }
          doc=htmlPost(opac_url + "String_Node_Str" + s_sid,form);
          if (!msg.contains("String_Node_Str")) {
            res=new ReservationResult(MultiStepResult.Status.ERROR,msg);
          }
 else {
            res=new ReservationResult(MultiStepResult.Status.OK,msg);
          }
        }
 else         if (doc.select("String_Node_Str").text().contains("String_Node_Str")) {
          String msg=doc.select("String_Node_Str").text().trim();
          form=new ArrayList<NameValuePair>();
          for (          Element input : doc.select("String_Node_Str")) {
            if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
              form.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
            }
          }
          doc=htmlPost(opac_url + "String_Node_Str" + s_sid,form);
          if (!msg.contains("String_Node_Str")) {
            res=new ReservationResult(MultiStepResult.Status.ERROR,msg);
          }
 else {
            res=new ReservationResult(MultiStepResult.Status.OK,msg);
          }
        }
      }
    }
  }
  if (res == null || res.getStatus() == MultiStepResult.Status.SELECTION_NEEDED || res.getStatus() == MultiStepResult.Status.CONFIRMATION_NEEDED) {
    form=new ArrayList<NameValuePair>();
    for (    Element input : doc.select("String_Node_Str")) {
      if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))&& !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
        form.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
      }
    }
    form.add(new BasicNameValuePair("String_Node_Str","String_Node_Str"));
    doc=htmlPost(opac_url + "String_Node_Str" + s_sid,form);
  }
  s_pageform=new ArrayList<NameValuePair>();
  for (  Element input : doc.select("String_Node_Str")) {
    if (!"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str")) && !"String_Node_Str".equals(input.attr("String_Node_Str"))&& !"String_Node_Str".equals(input.attr("String_Node_Str"))) {
      s_pageform.add(new BasicNameValuePair(input.attr("String_Node_Str"),input.attr("String_Node_Str")));
    }
  }
  try {
    nvpairs=s_pageform;
    nvpairs.add(new BasicNameValuePair("String_Node_Str","String_Node_Str"));
    nvpairs.add(new BasicNameValuePair("String_Node_Str","String_Node_Str"));
    parse_search(htmlPost(opac_url + "String_Node_Str" + s_sid,nvpairs),1);
    nvpairs=s_pageform;
    nvpairs.add(new BasicNameValuePair("String_Node_Str","String_Node_Str"));
    nvpairs.add(new BasicNameValuePair("String_Node_Str","String_Node_Str"));
    parse_search(htmlPost(opac_url + "String_Node_Str" + s_sid,nvpairs),1);
  }
 catch (  OpacErrorException e) {
    e.printStackTrace();
  }
  return res;
}