From 17992e9e0986a2cec0ab0a3dcb9e32cd4c6e3a5c Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Thu, 16 May 2019 12:20:45 +0200 Subject: [PATCH] - MMS server: fixed bug in obtain file service (crash when target directory doesn't exist) --- src/mms/iso_mms/server/mms_file_service.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/mms/iso_mms/server/mms_file_service.c b/src/mms/iso_mms/server/mms_file_service.c index fb1209e4..a342f991 100644 --- a/src/mms/iso_mms/server/mms_file_service.c +++ b/src/mms/iso_mms/server/mms_file_service.c @@ -532,8 +532,12 @@ mmsServer_fileUploadTask(MmsServer self, MmsObtainFileTask task) IsoConnection_sendMessage(task->connection->isoConnection, response, false); - FileSystem_closeFile(task->fileHandle); - deleteFile(MmsServerConnection_getFilesystemBasepath(task->connection), task->destinationFilename); + if (task->fileHandle) { + FileSystem_closeFile(task->fileHandle); + + if (task->destinationFilename) + deleteFile(MmsServerConnection_getFilesystemBasepath(task->connection), task->destinationFilename); + } MmsServer_releaseTransmitBuffer(self); @@ -657,15 +661,16 @@ mmsServer_handleObtainFileRequest( FileHandle fileHandle = openFile(MmsServerConnection_getFilesystemBasepath(connection), destinationFilename, true); + task->connection = connection; + task->obtainFileRequestInvokeId = invokeId; + if (fileHandle == NULL) { task->state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_ERROR_DESTINATION; } else { /* send file open request */ task->lastRequestInvokeId = MmsServerConnection_getNextRequestInvokeId(connection); - task->connection = connection; task->fileHandle = fileHandle; - task->obtainFileRequestInvokeId = invokeId; strcpy(task->destinationFilename, destinationFilename);