From 45a276cf33cefe0fcb4671e081a3e11844225642 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Fri, 9 Sep 2011 17:14:08 -0400 Subject: [PATCH] Be safer --- src/AtticaManager.cpp | 16 ++++++++++++++-- src/AtticaManager.h | 2 ++ src/settingsdialog.h | 2 ++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/AtticaManager.cpp b/src/AtticaManager.cpp index 4b340e062..b2a196810 100644 --- a/src/AtticaManager.cpp +++ b/src/AtticaManager.cpp @@ -161,7 +161,7 @@ AtticaManager::payloadFetched() if( !resolverPath.isEmpty() ) { -// TomahawkApp::instance()->enableScriptResolver( resolverPath ); + TomahawkApp::instance()->enableScriptResolver( resolverPath ); m_resolverStates[ resolverId ] = Installed; TomahawkSettings::instance()->setAtticaResolverState( resolverId, Installed ); emit resolverInstalled( resolverId ); @@ -249,13 +249,24 @@ AtticaManager::uninstallResolver( const Content& resolver ) { TomahawkApp::instance()->disableScriptResolver( resolver.id() ); m_resolverStates[ resolver.id() ] = Uninstalled; + TomahawkSettings::instance()->setAtticaResolverState( resolver.id(), Uninstalled ); emit resolverUninstalled( resolver.id() ); emit resolverStateChanged( resolver.id() ); // uninstalling is easy... just delete it! :) QDir resolverDir = TomahawkUtils::appDataDir(); - resolverDir.cd( QString( "atticaresolvers/%1" ).arg( resolver.id() ) ); + if ( !resolverDir.cd( QString( "atticaresolvers/%1" ).arg( resolver.id() ) ) ) + return; + + if ( resolver.id().isEmpty() ) + return; + + // sanity check + if ( !resolverDir.absolutePath().contains( "atticaresolvers" ) || + !resolverDir.absolutePath().contains( resolver.id() ) ) + return; + removeDirectory( resolverDir.absolutePath() ); } @@ -266,6 +277,7 @@ AtticaManager::removeDirectory( const QString& dir ) const { const QDir aDir(dir); + tLog() << "Deleting DIR:" << dir; bool has_err = false; if (aDir.exists()) { foreach(const QFileInfo& entry, aDir.entryInfoList(QDir::NoDotAndDotDot | QDir::Dirs | QDir::Files | QDir::NoSymLinks)) { diff --git a/src/AtticaManager.h b/src/AtticaManager.h index 0186edf06..a9a2d823f 100644 --- a/src/AtticaManager.h +++ b/src/AtticaManager.h @@ -19,6 +19,8 @@ #ifndef ATTICAMANAGER_H #define ATTICAMANAGER_H +#include "config.h" + #include #include diff --git a/src/settingsdialog.h b/src/settingsdialog.h index bb18a7fcd..e75f6a5cf 100644 --- a/src/settingsdialog.h +++ b/src/settingsdialog.h @@ -22,6 +22,8 @@ #include #include +#include "config.h" + class LoadingSpinner; class QListWidgetItem; class Ui_StackedSettingsDialog;