2022-11-09 Fred Gleason <fredg@paravelsystems.com>

* Added a file format check to the 'Image Manager' dialog in
	rdadmin(1) to ensure that only JPEG or PNG formatted image files can
	be imported.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2022-11-09 11:07:57 -05:00
parent db6879d6a8
commit 0c139bf849
4 changed files with 45 additions and 0 deletions

View File

@ -23631,3 +23631,7 @@
* Updated the build package list for Ubuintu 22.04 in 'INSTALL'.
2022-11-07 Fred Gleason <fredg@paravelsystems.com>
* Fixed a regression that broke the 'make deb' target.
2022-11-09 Fred Gleason <fredg@paravelsystems.com>
* Added a file format check to the 'Image Manager' dialog in
rdadmin(1) to ensure that only JPEG or PNG formatted image files can
be imported.

View File

@ -30,6 +30,8 @@
#include <time.h>
#include <QDir>
#include <QProcess>
#include <QStringList>
#include <rdapplication.h>
@ -1122,3 +1124,28 @@ int RDCheckReturnCode(const QString &msg,int code,int ok_value)
}
return code;
}
QString RDMimeType(const QString &filename,bool *ok)
{
QStringList args;
QString ret;
args.push_back("--mime-type");
args.push_back(filename);
QProcess *proc=new QProcess();
proc->start("/usr/bin/file",args);
proc->waitForFinished();
if((proc->exitStatus()!=QProcess::NormalExit)||(proc->exitCode()!=0)) {
*ok=false;
delete proc;
return ret;
}
*ok=true;
ret=QString(proc->readAllStandardOutput()).
split(":",QString::SkipEmptyParts).last().trimmed();
delete proc;
return ret;
}

View File

@ -111,6 +111,7 @@ QList<pid_t> RDGetPids(const QString &program);
int RDCheckExitCode(const QString &msg,int exit_code);
int RDCheckExitCode(RDConfig *config,const QString &msg,int exit_code);
int RDCheckReturnCode(const QString &msg,int code,int ok_value);
QString RDMimeType(const QString &filename,bool *ok);
#endif // RDCONF_H

View File

@ -713,6 +713,19 @@ int RDFeed::importImageFile(const QString &pathname,QString *err_msg,
QSize max=rda->rssSchemas()->maximumImageSize(rssSchema());
*err_msg="OK";
//
// Check the file type
//
QString mimetype=RDMimeType(pathname,&ok);
if(!ok) {
*err_msg=tr("Error validating image file.");
return -1;
}
if((mimetype!="image/jpeg")&&(mimetype!="image/png")) {
*err_msg=tr("Unsupported image file format.");
return -1;
}
//
// Load the image
//