Show an error and exit if an invalid directory (eg, a file) is passed to --confdir
Fixes: #2453
} else if (option == QLatin1String("--confdir")) {
if (it.hasNext() && !it.peekNext().startsWith(QLatin1String("--"))) {
QString confDir = it.next();
- ConfigFile::setConfDir( confDir );
+ if (!ConfigFile::setConfDir( confDir )) {
+ std::cerr << "Invalid path passed to --confdir" << std::endl;
+ std::exit(1);
+ }
} else {
showHelp();
}
// qDebug() << Q_FUNC_INFO << "Loading config: " << config << " (URL is " << settings.value("url").toString() << ")";
}
-void ConfigFile::setConfDir(const QString &value)
+bool ConfigFile::setConfDir(const QString &value)
{
QString dirPath = value;
- if( dirPath.isEmpty() ) return;
+ if( dirPath.isEmpty() ) return false;
QFileInfo fi(dirPath);
if ( !fi.exists() && !fi.isAbsolute() ) {
dirPath = fi.absoluteFilePath();
qDebug() << "** Using custom config dir " << dirPath;
_confDir=dirPath;
+ return true;
}
+ return false;
}
bool ConfigFile::optionalDesktopNotifications() const
void setUploadLimit(int kbytes);
void setDownloadLimit(int kbytes);
- static void setConfDir(const QString &value);
+ static bool setConfDir(const QString &value);
bool optionalDesktopNotifications() const;
void setOptionalDesktopNotifications(bool show);