Remove use of tempnam function and fix bug (bad check of rename return)

This commit is contained in:
Grégory Soutadé 2022-04-23 17:41:54 +02:00
parent f568b5d3a8
commit 4f9b2de5a5

View File

@ -114,16 +114,16 @@ public:
// Use temp file for PDF // Use temp file for PDF
if (type == gourou::DRMProcessor::ITEM_TYPE::PDF) if (type == gourou::DRMProcessor::ITEM_TYPE::PDF)
{ {
char* tempFile = tempnam("/tmp", NULL); std::string tempFile = filename + ".tmp";
processor.removeDRM(inputFile, tempFile, type, encryptionKey, encryptionKeySize); /* Be sure there is not already a temp file */
unlink(tempFile.c_str());
processor.removeDRM(filename, tempFile, type, encryptionKey, encryptionKeySize);
/* Original file must be removed before doing a copy... */ /* Original file must be removed before doing a copy... */
unlink(inputFile); unlink(filename.c_str());
if (!rename(tempFile, filename.c_str())) if (rename(tempFile.c_str(), filename.c_str()))
{ {
free(tempFile);
EXCEPTION(gourou::DRM_FILE_ERROR, "Unable to copy " << tempFile << " into " << filename); EXCEPTION(gourou::DRM_FILE_ERROR, "Unable to copy " << tempFile << " into " << filename);
} }
free(tempFile);
} }
else else
processor.removeDRM(inputFile, filename, type, encryptionKey, encryptionKeySize); processor.removeDRM(inputFile, filename, type, encryptionKey, encryptionKeySize);