Program: 179435
Project: 179435
Buggy source:
@Override public List<Quote> getLastQuotes(Symbol symbol) throws ProviderException {
  boolean download=true;
  File f=new File("String_Node_Str");
  if (f.exists()) {
    Date modified=new Date(f.lastModified());
    if (DateUtils.isToday(modified)) {
      download=false;
    }
  }
  if (download) {
    try {
      new MedusaHttpClient().download(LAST_QUOTES_URL,f);
    }
 catch (    HttpException e) {
      LOG.error(e.getMessage(),e);
    }
  }
  List<File> files=new LinkedList<File>();
  ZipEntry entry=null;
  String name=null;
  FileOutputStream fos=null;
  InputStream is=null;
  int i=-1;
  byte[] bytes=new byte[1024];
  try {
    ZipFile zip=new ZipFile(f);
    Enumeration<? extends ZipEntry> entries=zip.entries();
    while (entries.hasMoreElements()) {
      entry=entries.nextElement();
      name=entry.getName();
      if (!name.matches("String_Node_Str")) {
        continue;
      }
      is=zip.getInputStream(entry);
      f=new File("String_Node_Str" + name);
      if (!f.exists()) {
        if (!f.createNewFile()) {
          throw new ProviderException("String_Node_Str" + f.getName());
        }
      }
      fos=new FileOutputStream(f);
      while ((i=is.read(bytes)) != -1) {
        fos.write(bytes,0,i);
      }
      fos.close();
      files.add(f);
    }
  }
 catch (  Exception e) {
    throw new ProviderException(e);
  }
  FileInputStream fis=null;
  InputStreamReader isr=null;
  BufferedReader br=null;
  String line=null;
  String[] parts=null;
  Date date=null;
  double open=0;
  double high=0;
  double low=0;
  double close=0;
  long volume=0;
  List<Quote> quotes=new LinkedList<Quote>();
  Quote quote=null;
  for (  File file : files) {
    try {
      fis=new FileInputStream(file);
      isr=new InputStreamReader(fis);
      br=new BufferedReader(isr);
      while (br.ready()) {
        line=br.readLine();
        if (line.startsWith(symbol.getName())) {
          parts=line.split("String_Node_Str");
          break;
        }
      }
      if (parts == null) {
        if (quote == null) {
          List<Quote> tmp=QuotesRegistry.getInstance().getQuotes(symbol);
          if (tmp.size() > 0) {
            quote=tmp.get(tmp.size() - 1);
          }
 else {
            continue;
          }
        }
 else {
        }
      }
 else {
        if (parts.length < 7) {
          throw new ProviderException("String_Node_Str" + "String_Node_Str" + parts.length + "String_Node_Str");
        }
        if (!parts[0].equals(symbol.getName())) {
          throw new ProviderException("String_Node_Str" + symbol + "String_Node_Str"+ "String_Node_Str"+ parts[0]+ "String_Node_Str");
        }
        date=DATE_FORMAT.parse(parts[1]);
        open=Double.valueOf(parts[2]);
        high=Double.valueOf(parts[3]);
        low=Double.valueOf(parts[4]);
        close=Double.valueOf(parts[5]);
        volume=Long.valueOf(parts[6]);
        quote=new Quote(date,open,high,low,close,volume);
      }
      quotes.add(quote);
    }
 catch (    Throwable e) {
      throw new ProviderException(e);
    }
  }
  return quotes;
}

Fixed version (ground truth):
@Override public List<Quote> getLastQuotes(Symbol symbol) throws ProviderException {
  boolean download=true;
  String dir=CFG.getProperty("String_Node_Str","String_Node_Str");
  File f=new File(dir + "String_Node_Str");
  if (f.exists()) {
    Date modified=new Date(f.lastModified());
    if (DateUtils.isToday(modified)) {
      download=false;
    }
  }
  if (download) {
    try {
      new MedusaHttpClient().download(LAST_QUOTES_URL,f);
    }
 catch (    HttpException e) {
      LOG.error(e.getMessage(),e);
    }
  }
  List<File> files=new LinkedList<File>();
  ZipEntry entry=null;
  String name=null;
  FileOutputStream fos=null;
  InputStream is=null;
  int i=-1;
  byte[] bytes=new byte[1024];
  try {
    ZipFile zip=new ZipFile(f);
    Enumeration<? extends ZipEntry> entries=zip.entries();
    while (entries.hasMoreElements()) {
      entry=entries.nextElement();
      name=entry.getName();
      if (!name.matches("String_Node_Str")) {
        continue;
      }
      is=zip.getInputStream(entry);
      f=new File(dir + "String_Node_Str" + name);
      if (!f.exists()) {
        if (!f.createNewFile()) {
          throw new ProviderException("String_Node_Str" + f.getName());
        }
      }
      fos=new FileOutputStream(f);
      while ((i=is.read(bytes)) != -1) {
        fos.write(bytes,0,i);
      }
      fos.close();
      files.add(f);
    }
  }
 catch (  Exception e) {
    throw new ProviderException(e);
  }
  FileInputStream fis=null;
  InputStreamReader isr=null;
  BufferedReader br=null;
  String line=null;
  String[] parts=null;
  Date date=null;
  double open=0;
  double high=0;
  double low=0;
  double close=0;
  long volume=0;
  List<Quote> quotes=new LinkedList<Quote>();
  Quote quote=null;
  for (  File file : files) {
    try {
      fis=new FileInputStream(file);
      isr=new InputStreamReader(fis);
      br=new BufferedReader(isr);
      while (br.ready()) {
        line=br.readLine();
        if (line.startsWith(symbol.getName())) {
          parts=line.split("String_Node_Str");
          break;
        }
      }
      if (parts == null) {
        if (quote == null) {
          List<Quote> tmp=QuotesRegistry.getInstance().getQuotes(symbol);
          if (tmp.size() > 0) {
            quote=tmp.get(tmp.size() - 1);
          }
 else {
            continue;
          }
        }
 else {
        }
      }
 else {
        if (parts.length < 7) {
          throw new ProviderException("String_Node_Str" + "String_Node_Str" + parts.length + "String_Node_Str");
        }
        if (!parts[0].equals(symbol.getName())) {
          throw new ProviderException("String_Node_Str" + symbol + "String_Node_Str"+ "String_Node_Str"+ parts[0]+ "String_Node_Str");
        }
        date=DATE_FORMAT.parse(parts[1]);
        open=Double.valueOf(parts[2]);
        high=Double.valueOf(parts[3]);
        low=Double.valueOf(parts[4]);
        close=Double.valueOf(parts[5]);
        volume=Long.valueOf(parts[6]);
        quote=new Quote(date,open,high,low,close,volume);
      }
      quotes.add(quote);
    }
 catch (    Throwable e) {
      throw new ProviderException(e);
    }
  }
  return quotes;
}