From 348a8c0e2954ff703e09b9139cb95e5510d1a2be Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Mon, 5 Apr 2021 15:57:19 -0400 Subject: [PATCH] 2021-04-05 Fred Gleason * Fixed bugs in 'RDCart::setMetadata()' that could throw SQL errors due to over-length text strings. * Fixed bugs in 'RDCut::setMetadata()' that could throw SQL errors due to over-length text strings. Signed-off-by: Fred Gleason --- ChangeLog | 5 +++++ lib/rdcart.cpp | 26 +++++++++++++++----------- lib/rdcut.cpp | 14 ++++++++------ 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index b6f525ab..92316ead 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21383,3 +21383,8 @@ * Added code to print the value of the detected CartChunk CutID when using both the '--use-cartchunk-cutid' and '--verbose' flags in rdimport(1). +2021-04-05 Fred Gleason + * Fixed bugs in 'RDCart::setMetadata()' that could throw SQL errors + due to over-length text strings. + * Fixed bugs in 'RDCut::setMetadata()' that could throw SQL errors + due to over-length text strings. diff --git a/lib/rdcart.cpp b/lib/rdcart.cpp index 3f49e343..32b69605 100644 --- a/lib/rdcart.cpp +++ b/lib/rdcart.cpp @@ -943,40 +943,44 @@ void RDCart::setMetadata(const RDWaveData *data) { QString sql="update CART set "; if(!data->title().isEmpty()) { - sql+=QString("TITLE=\"")+RDEscapeString(data->title())+"\","; + sql+=QString("TITLE=\"")+RDEscapeString(data->title().left(191))+"\","; } if(!data->artist().isEmpty()) { - sql+=QString("ARTIST=\"")+RDEscapeString(data->artist())+"\","; + sql+=QString("ARTIST=\"")+RDEscapeString(data->artist().left(191))+"\","; } if(!data->album().isEmpty()) { - sql+=QString("ALBUM=\"")+RDEscapeString(data->album())+"\","; + sql+=QString("ALBUM=\"")+RDEscapeString(data->album().left(191))+"\","; } if(data->releaseYear()>0) { sql+=QString().sprintf("YEAR=\"%04d-01-01\",",data->releaseYear()); } if(!data->label().isEmpty()) { - sql+=QString("LABEL=\"")+RDEscapeString(data->label())+"\","; + sql+=QString("LABEL=\"")+RDEscapeString(data->label().left(64))+"\","; } if(!data->conductor().isEmpty()) { - sql+=QString("CONDUCTOR=\"")+RDEscapeString(data->conductor())+"\","; + sql+=QString("CONDUCTOR=\"")+RDEscapeString(data->conductor().left(64))+ + "\","; } if(!data->client().isEmpty()) { - sql+=QString("CLIENT=\"")+RDEscapeString(data->client())+"\","; + sql+=QString("CLIENT=\"")+RDEscapeString(data->client().left(64))+"\","; } if(!data->agency().isEmpty()) { - sql+=QString("AGENCY=\"")+RDEscapeString(data->agency())+"\","; + sql+=QString("AGENCY=\"")+RDEscapeString(data->agency().left(64))+"\","; } if(!data->publisher().isEmpty()) { - sql+=QString("PUBLISHER=\"")+RDEscapeString(data->publisher())+"\","; + sql+=QString("PUBLISHER=\"")+RDEscapeString(data->publisher().left(64))+ + "\","; } if(!data->composer().isEmpty()) { - sql+=QString("COMPOSER=\"")+RDEscapeString(data->composer())+"\","; + sql+=QString("COMPOSER=\"")+RDEscapeString(data->composer().left(64))+"\","; } if(!data->userDefined().isEmpty()) { - sql+=QString("USER_DEFINED=\"")+RDEscapeString(data->userDefined())+"\","; + sql+=QString("USER_DEFINED=\"")+ + RDEscapeString(data->userDefined().left(191))+"\","; } if(!data->tmciSongId().isEmpty()) { - sql+=QString("SONG_ID=\"")+RDEscapeString(data->tmciSongId())+"\","; + sql+=QString("SONG_ID=\"")+RDEscapeString(data->tmciSongId().left(32))+ + "\","; } if(data->beatsPerMinute()>0) { sql+=QString().sprintf("BPM=%u,",data->beatsPerMinute()); diff --git a/lib/rdcut.cpp b/lib/rdcut.cpp index 67e1c6bc..22b68390 100644 --- a/lib/rdcut.cpp +++ b/lib/rdcut.cpp @@ -1087,10 +1087,11 @@ void RDCut::setMetadata(RDWaveData *data) const { QString sql="update CUTS set "; if(!data->description().isEmpty()) { - sql+=QString("DESCRIPTION=\"")+RDEscapeString(data->description())+"\","; + sql+=QString("DESCRIPTION=\"")+ + RDEscapeString(data->description().left(64))+"\","; } if(!data->outCue().isEmpty()) { - sql+=QString("OUTCUE=\"")+RDEscapeString(data->outCue())+"\","; + sql+=QString("OUTCUE=\"")+RDEscapeString(data->outCue().left(64))+"\","; } else { switch(data->endType()) { @@ -1107,17 +1108,18 @@ void RDCut::setMetadata(RDWaveData *data) const } } if(!data->isrc().isEmpty()) { - sql+=QString("ISRC=\"")+RDEscapeString(data->isrc())+"\","; + sql+=QString("ISRC=\"")+RDEscapeString(data->isrc().left(12))+"\","; } if(!data->isci().isEmpty()) { - sql+=QString("ISCI=\"")+RDEscapeString(data->isci())+"\","; + sql+=QString("ISCI=\"")+RDEscapeString(data->isci().left(32))+"\","; } if(!data->recordingMbId().isEmpty()) { sql+=QString("RECORDING_MBID=\"")+ - RDEscapeString(data->recordingMbId())+"\","; + RDEscapeString(data->recordingMbId().left(40))+"\","; } if(!data->releaseMbId().isEmpty()) { - sql+=QString("RELEASE_MBID=\"")+RDEscapeString(data->releaseMbId())+"\","; + sql+=QString("RELEASE_MBID=\"")+ + RDEscapeString(data->releaseMbId().left(40))+"\","; } if(data->startPos()>=0) { sql+=QString().sprintf("START_POINT=%d,",data->startPos());