Program: 5797
Project: 5797
Buggy source:
/** 
 * Launch document edition
 * @param path path to editor
 * @param url document url
 * @param modeDisconnected disconnected mode.
 * @param auth authentication info
 * @return status
 * @throws IOException
 * @throws InterruptedException
 */
protected static int launch(MsOfficeType type,String path,String url,boolean modeDisconnected,AuthenticationInfo auth) throws IOException, InterruptedException {
  logger.log(Level.INFO,"String_Node_Str",path);
  logger.log(Level.INFO,"String_Node_Str",url);
  logger.log(Level.INFO,"String_Node_Str",new Object[]{path,url});
  if (modeDisconnected) {
    try {
      String webdavUrl=url;
      final FileWebDavAccessManager webdavAccessManager=new FileWebDavAccessManager(auth);
      if ('"' == url.charAt(0)) {
        webdavUrl=url.substring(1,url.length() - 1);
      }
      String tmpFilePath=webdavAccessManager.retrieveFile(webdavUrl);
      logger.log(Level.INFO,"String_Node_Str",new Object[]{path,tmpFilePath});
      Process process=Runtime.getRuntime().exec(path + ' ' + tmpFilePath);
      process.waitFor();
      webdavAccessManager.pushFile(tmpFilePath,url);
      MessageDisplayer.displayMessage(MessageUtil.getMessage("String_Node_Str"));
      return 0;
    }
 catch (    HttpException ex) {
      logger.log(Level.SEVERE,null,ex);
      throw new IOException(ex);
    }
catch (    IOException ex) {
      logger.log(Level.SEVERE,null,ex);
      throw ex;
    }
  }
 else {
    String webdavUrl=url;
    if (OsEnum.getOS() == OsEnum.WINDOWS_XP || (OsEnum.isWindows() && MsOfficeVersion.isOldOffice(type))) {
      webdavUrl=webdavUrl.replace("String_Node_Str","String_Node_Str");
    }
    logger.log(Level.INFO,"String_Node_Str",new Object[]{path,webdavUrl});
    Process process=Runtime.getRuntime().exec(path + ' ' + webdavUrl);
    return process.waitFor();
  }
}

Fixed version (ground truth):
/** 
 * Launch document edition
 * @param path path to editor
 * @param url document url
 * @param modeDisconnected disconnected mode.
 * @param auth authentication info
 * @return status
 * @throws IOException
 * @throws InterruptedException
 */
protected static int launch(MsOfficeType type,String path,String url,boolean modeDisconnected,AuthenticationInfo auth) throws IOException, InterruptedException {
  logger.log(Level.INFO,"String_Node_Str",path);
  logger.log(Level.INFO,"String_Node_Str",url);
  if (modeDisconnected) {
    try {
      String webdavUrl=url;
      final FileWebDavAccessManager webdavAccessManager=new FileWebDavAccessManager(auth);
      if ('"' == url.charAt(0)) {
        webdavUrl=url.substring(1,url.length() - 1);
      }
      String tmpFilePath=webdavAccessManager.retrieveFile(webdavUrl);
      logger.log(Level.INFO,"String_Node_Str",new Object[]{path,tmpFilePath});
      Process process=Runtime.getRuntime().exec(path + ' ' + tmpFilePath);
      process.waitFor();
      webdavAccessManager.pushFile(tmpFilePath,url);
      MessageDisplayer.displayMessage(MessageUtil.getMessage("String_Node_Str"));
      return 0;
    }
 catch (    HttpException ex) {
      logger.log(Level.SEVERE,null,ex);
      throw new IOException(ex);
    }
catch (    IOException ex) {
      logger.log(Level.SEVERE,null,ex);
      throw ex;
    }
  }
 else {
    logger.log(Level.INFO,"String_Node_Str",new Object[]{path,url});
    Process process=Runtime.getRuntime().exec(path + ' ' + url);
    return process.waitFor();
  }
}