Program: 179438
Project: 179438
Buggy source:
@Override public List<Quote> getAllQuotes(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) {
    downloadMSTCGL(f);
  }
  File file=null;
  ZipEntry entry=null;
  String name=null;
  FileOutputStream fos=null;
  InputStream is=null;
  int i=-1;
  byte[] bytes=new byte[32 * 1024];
  try {
    File sessall=new File("String_Node_Str");
    if (!sessall.exists()) {
      if (!sessall.mkdirs()) {
        throw new ProviderException("String_Node_Str" + f.getName());
      }
    }
    ZipFile zip=null;
    int attempts=0;
    do {
      try {
        zip=new ZipFile(f);
        break;
      }
 catch (      ZipException ze) {
        LOG.error("String_Node_Str" + f.getName());
        downloadMSTCGL(f);
      }
    }
 while (attempts++ < 5);
    Enumeration<? extends ZipEntry> entries=zip.entries();
    while (entries.hasMoreElements()) {
      entry=entries.nextElement();
      name=entry.getName();
      if (!name.matches(symbol.getName() + "String_Node_Str")) {
        continue;
      }
      is=zip.getInputStream(entry);
      File mstf=new File("String_Node_Str" + name);
      if (!mstf.exists()) {
        if (!mstf.createNewFile()) {
          throw new ProviderException("String_Node_Str" + mstf.getName());
        }
      }
      fos=new FileOutputStream(mstf);
      while ((i=is.read(bytes)) != -1) {
        fos.write(bytes,0,i);
      }
      fos.close();
      file=mstf;
      break;
    }
  }
 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>();
  try {
    fis=new FileInputStream(file);
    isr=new InputStreamReader(fis);
    br=new BufferedReader(isr);
    while (br.ready()) {
      line=br.readLine();
      parts=line.split("String_Node_Str");
      if (parts[0].startsWith("String_Node_Str")) {
        continue;
      }
      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]);
      quotes.add(new Quote(date,open,high,low,close,volume));
    }
  }
 catch (  Throwable e) {
    throw new ProviderException(e);
  }
  return quotes;
}

Fixed version (ground truth):
@Override public List<Quote> getAllQuotes(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) {
    downloadMSTCGL(f);
  }
  File file=null;
  ZipEntry entry=null;
  String name=null;
  FileOutputStream fos=null;
  InputStream is=null;
  int i=-1;
  byte[] bytes=new byte[32 * 1024];
  try {
    File sessall=new File(dir + "String_Node_Str");
    if (!sessall.exists()) {
      if (!sessall.mkdirs()) {
        throw new ProviderException("String_Node_Str" + f.getName());
      }
    }
    ZipFile zip=null;
    int attempts=0;
    do {
      try {
        zip=new ZipFile(f);
        break;
      }
 catch (      ZipException ze) {
        LOG.error("String_Node_Str" + f.getName());
        downloadMSTCGL(f);
      }
    }
 while (attempts++ < 5);
    Enumeration<? extends ZipEntry> entries=zip.entries();
    while (entries.hasMoreElements()) {
      entry=entries.nextElement();
      name=entry.getName();
      if (!name.matches(symbol.getName() + "String_Node_Str")) {
        continue;
      }
      is=zip.getInputStream(entry);
      File mstf=new File("String_Node_Str" + name);
      if (!mstf.exists()) {
        if (!mstf.createNewFile()) {
          throw new ProviderException("String_Node_Str" + mstf.getName());
        }
      }
      fos=new FileOutputStream(mstf);
      while ((i=is.read(bytes)) != -1) {
        fos.write(bytes,0,i);
      }
      fos.close();
      file=mstf;
      break;
    }
  }
 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 q=null, t=null;
  try {
    fis=new FileInputStream(file);
    isr=new InputStreamReader(fis);
    br=new BufferedReader(isr);
    while (br.ready()) {
      line=br.readLine();
      parts=line.split("String_Node_Str");
      if (parts[0].startsWith("String_Node_Str")) {
        continue;
      }
      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]);
      t=new Quote(date,open,high,low,close,volume);
      if (q != null) {
        t.setPrev(q);
        q.setNext(t);
      }
      q=t;
      quotes.add(t);
    }
  }
 catch (  Throwable e) {
    throw new ProviderException(e);
  }
  return quotes;
}