Skip to content

Commit a0ff2af

Browse files
committedMay 15, 2018
[processing] Fix some crashes on invalid parameters
1 parent 74b0e91 commit a0ff2af

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed
 

‎src/analysis/processing/qgsalgorithmextractbylocation.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,12 @@ QgsExtractByLocationAlgorithm *QgsExtractByLocationAlgorithm::createInstance() c
349349
QVariantMap QgsExtractByLocationAlgorithm::processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
350350
{
351351
std::unique_ptr< QgsFeatureSource > input( parameterAsSource( parameters, QStringLiteral( "INPUT" ), context ) );
352+
if ( !input )
353+
throw QgsProcessingException( invalidSourceError( parameters, QStringLiteral( "INPUT" ) ) );
352354
std::unique_ptr< QgsFeatureSource > intersectSource( parameterAsSource( parameters, QStringLiteral( "INTERSECT" ), context ) );
355+
if ( !intersectSource )
356+
throw QgsProcessingException( invalidSourceError( parameters, QStringLiteral( "INTERSECT" ) ) );
357+
353358
const QList< int > selectedPredicates = parameterAsEnums( parameters, QStringLiteral( "PREDICATE" ), context );
354359
QString dest;
355360
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, input->fields(), input->wkbType(), input->sourceCrs() ) );

‎src/analysis/processing/qgsalgorithmfiledownloader.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ QVariantMap QgsFileDownloaderAlgorithm::processAlgorithm( const QVariantMap &par
7171
{
7272
mFeedback = feedback;
7373
QString url = parameterAsString( parameters, QStringLiteral( "URL" ), context );
74+
if ( url.isEmpty() )
75+
throw QgsProcessingException( tr( "No URL specified" ) );
7476
QString outputFile = parameterAsFileOutput( parameters, QStringLiteral( "OUTPUT" ), context );
7577

7678
QEventLoop loop;

‎src/analysis/processing/qgsalgorithmsaveselectedfeatures.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ QgsSaveSelectedFeatures *QgsSaveSelectedFeatures::createInstance() const
6969
QVariantMap QgsSaveSelectedFeatures::processAlgorithm( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
7070
{
7171
QgsVectorLayer *selectLayer = parameterAsVectorLayer( parameters, QStringLiteral( "INPUT" ), context );
72+
if ( !selectLayer )
73+
throw QgsProcessingException( invalidSourceError( parameters, QStringLiteral( "INPUT" ) ) );
7274

7375
QString dest;
7476
std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral( "OUTPUT" ), context, dest, selectLayer->fields(), selectLayer->wkbType(), selectLayer->sourceCrs() ) );

0 commit comments

Comments
 (0)
Please sign in to comment.