[libcalamaresui] Do filename checks more sanely

- check directory exists before trying to open file from it
 - re-use the componentDir already found for later tests.
This commit is contained in:
Adriaan de Groot 2019-05-31 17:06:35 +02:00
parent 69dabcae32
commit 1438729b72

View File

@ -129,16 +129,16 @@ Branding::Branding( const QString& brandingFilePath,
, m_welcomeExpandingLogo( true ) , m_welcomeExpandingLogo( true )
{ {
cDebug() << "Using Calamares branding file at" << brandingFilePath; cDebug() << "Using Calamares branding file at" << brandingFilePath;
QDir componentDir( componentDirectory() );
if ( !componentDir.exists() )
bail( "Bad component directory path." );
QFile file( brandingFilePath ); QFile file( brandingFilePath );
if ( file.exists() && file.open( QFile::ReadOnly | QFile::Text ) ) if ( file.exists() && file.open( QFile::ReadOnly | QFile::Text ) )
{ {
QByteArray ba = file.readAll(); QByteArray ba = file.readAll();
QFileInfo fi ( m_descriptorPath );
QDir componentDir = fi.absoluteDir();
if ( !componentDir.exists() )
bail( "Bad component directory path." );
try try
{ {
YAML::Node doc = YAML::Load( ba.constData() ); YAML::Node doc = YAML::Load( ba.constData() );
@ -146,7 +146,7 @@ Branding::Branding( const QString& brandingFilePath,
m_componentName = QString::fromStdString( doc[ "componentName" ] m_componentName = QString::fromStdString( doc[ "componentName" ]
.as< std::string >() ); .as< std::string >() );
if ( m_componentName != QFileInfo( m_descriptorPath ).absoluteDir().dirName() ) if ( m_componentName != componentDir.dirName() )
bail( "The branding component name should match the name of the " bail( "The branding component name should match the name of the "
"component directory." ); "component directory." );