Program: 179437
Project: 179437
Buggy source:
@Override public QuotesIterator<Quote> getIntradayQuotes(Symbol symbol) throws ProviderException {
  boolean download=true;
  File prn=new File("String_Node_Str" + symbol.getName() + "String_Node_Str");
  if (prn.exists()) {
    Date modified=new Date(prn.lastModified());
    if (DateUtils.isToday(modified)) {
      download=false;
    }
    if (LOG.isDebugEnabled()) {
      LOG.debug("String_Node_Str" + symbol + "String_Node_Str"+ (download ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str");
    }
  }
  if (download) {
    File zipf=new File("String_Node_Str" + symbol.getName() + "String_Node_Str");
    downloadZIP(zipf,symbol);
    ZipFile zf=null;
    int attempts=0;
    do {
      try {
        zf=new ZipFile(zipf);
        break;
      }
 catch (      ZipException ze) {
        LOG.error("String_Node_Str" + zipf.getName());
        downloadZIP(zipf,symbol);
      }
catch (      IOException e) {
        throw new ProviderException(e);
      }
    }
 while (attempts++ < 5);
    boolean unpacked=false;
    Enumeration<? extends ZipEntry> zfe=zf.entries();
    if (LOG.isDebugEnabled()) {
      LOG.debug("String_Node_Str" + symbol);
    }
    while (zfe.hasMoreElements()) {
      ZipEntry ze=zfe.nextElement();
      if (!prn.getName().equals(ze.getName())) {
        continue;
      }
      OutputStream os=null;
      InputStream is=null;
      try {
        os=new FileOutputStream(prn);
        is=zf.getInputStream(ze);
        byte[] bytes=new byte[1024 * 8];
        int n=0;
        while ((n=is.read(bytes)) > 0) {
          os.write(bytes,0,n);
        }
        unpacked=true;
      }
 catch (      IOException e) {
        throw new ProviderException(e);
      }
 finally {
        if (os != null) {
          try {
            os.close();
          }
 catch (          IOException e) {
            throw new ProviderException(e);
          }
        }
        if (is != null) {
          try {
            is.close();
          }
 catch (          IOException e) {
            throw new ProviderException(e);
          }
        }
        if (!zipf.delete()) {
          zipf.deleteOnExit();
        }
      }
    }
    if (!unpacked) {
      throw new ProviderException("String_Node_Str" + prn.getName() + "String_Node_Str");
    }
    if (LOG.isDebugEnabled()) {
      LOG.debug("String_Node_Str" + symbol + "String_Node_Str"+ prn.getName());
    }
  }
  try {
    return new QuotesIterator<Quote>(symbol);
  }
 catch (  IOException e) {
    throw new ProviderException(e);
  }
}

Fixed version (ground truth):
@Override public QuotesIterator<Quote> getIntradayQuotes(Symbol symbol) throws ProviderException {
  boolean download=true;
  String dir=CFG.getProperty("String_Node_Str","String_Node_Str");
  File prn=new File(dir + "String_Node_Str" + symbol.getName()+ "String_Node_Str");
  File parent=prn.getParentFile();
  if (!parent.exists()) {
    parent.mkdirs();
  }
  if (prn.exists()) {
    Date modified=new Date(prn.lastModified());
    if (DateUtils.isToday(modified)) {
      download=false;
    }
    if (LOG.isDebugEnabled()) {
      LOG.debug("String_Node_Str" + symbol + "String_Node_Str"+ (download ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str");
    }
  }
  if (download) {
    File zipf=new File("String_Node_Str" + symbol.getName() + "String_Node_Str");
    downloadZIP(zipf,symbol);
    ZipFile zf=null;
    int attempts=0;
    do {
      try {
        zf=new ZipFile(zipf);
        break;
      }
 catch (      ZipException ze) {
        LOG.error("String_Node_Str" + zipf.getName());
        downloadZIP(zipf,symbol);
      }
catch (      IOException e) {
        throw new ProviderException(e);
      }
    }
 while (attempts++ < 5);
    boolean unpacked=false;
    Enumeration<? extends ZipEntry> zfe=zf.entries();
    if (LOG.isDebugEnabled()) {
      LOG.debug("String_Node_Str" + symbol);
    }
    while (zfe.hasMoreElements()) {
      ZipEntry ze=zfe.nextElement();
      if (!prn.getName().equals(ze.getName())) {
        continue;
      }
      OutputStream os=null;
      InputStream is=null;
      try {
        os=new FileOutputStream(prn);
        is=zf.getInputStream(ze);
        byte[] bytes=new byte[1024 * 8];
        int n=0;
        while ((n=is.read(bytes)) > 0) {
          os.write(bytes,0,n);
        }
        unpacked=true;
      }
 catch (      IOException e) {
        throw new ProviderException(e);
      }
 finally {
        if (os != null) {
          try {
            os.close();
          }
 catch (          IOException e) {
            throw new ProviderException(e);
          }
        }
        if (is != null) {
          try {
            is.close();
          }
 catch (          IOException e) {
            throw new ProviderException(e);
          }
        }
        if (!zipf.delete()) {
          zipf.deleteOnExit();
        }
      }
    }
    if (!unpacked) {
      throw new ProviderException("String_Node_Str" + prn.getName() + "String_Node_Str");
    }
    if (LOG.isDebugEnabled()) {
      LOG.debug("String_Node_Str" + symbol + "String_Node_Str"+ prn.getName());
    }
  }
  try {
    return new QuotesIterator<Quote>(symbol);
  }
 catch (  IOException e) {
    throw new ProviderException(e);
  }
}