2021-04-05 Fred Gleason <fredg@paravelsystems.com>

* 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 <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2021-04-05 15:57:19 -04:00
parent 9fb8606295
commit 348a8c0e29
3 changed files with 28 additions and 17 deletions

View File

@ -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 <fredg@paravelsystems.com>
* 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.

View File

@ -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());

View File

@ -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());