From bfee1c84405eea4af09fb7a87343193c2ec430e1 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Fri, 27 Sep 2019 12:30:03 -0400 Subject: [PATCH] 2019-09-27 Fred Gleason * Fixed a bug in rdimport(1) that caused it to throw an exception when given a '--metadata-pattern' of less than three characters. --- ChangeLog | 3 +++ utils/rdimport/rdimport.cpp | 19 ++++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index e0141d76..4275a7f0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19122,3 +19122,6 @@ 2019-09-25 Fred Gleason * Fixed a bug in rddbmgr(8) that caused a segfault when processing a SQL error. +2019-09-27 Fred Gleason + * Fixed a bug in rdimport(1) that caused it to throw an exception + when given a '--metadata-pattern' of less than three characters. diff --git a/utils/rdimport/rdimport.cpp b/utils/rdimport/rdimport.cpp index 03010619..18d9ab4e 100644 --- a/utils/rdimport/rdimport.cpp +++ b/utils/rdimport/rdimport.cpp @@ -1628,14 +1628,26 @@ bool MainObject::RunPattern(const QString &pattern,const QString &filename, QTime time; QDate date; + // + // Sanity Check + // + if(pattern.length()<2) { + return false; + } + // // Initialize Pattern Parser // if((pattern.at(0)=='%')&&(pattern.at(1)!='%')) { field=pattern.at(1); value=""; - delimiter=pattern.at(2); - ptr=3; + if(pattern.length()>=3) { + delimiter=pattern.at(2); + ptr=3; + } + else { + ptr=2; + } macro_active=true; } else { @@ -1645,7 +1657,8 @@ bool MainObject::RunPattern(const QString &pattern,const QString &filename, for(int i=0;i<=filename.length();i++) { if(macro_active) { - if((filename.at(i)==delimiter)||(i==filename.length())) { + if(((!delimiter.isNull())&&(filename.at(i)==delimiter))|| + (i==filename.length())) { switch(field.toAscii()) { case 'a': wavedata->setArtist(value);