Closed ctgraham closed 2 years ago
Fix for https://github.com/pkp/pkp-lib/issues/7828 was back ported to 3.3 (as of 3.3.0-11), so core will try to delete a file we've already deleted here: https://github.com/ulsdevteam/pkp-clamav/blob/9919574752bedcc00f574c93b87185291e47d742/ClamavPlugin.inc.php#L374-L375
The user will see a SlimApplicationError, and the log will show:
SlimApplicationError
[php7:notice] [pid 22826] [client 10.25.64.145:51754] Slim Application Error: Type: Exception Message: Unable to locate file 1278. File: ojs/lib/pkp/classes/services/PKPFileService.inc.php Line: 113 Trace: #0 ojs/lib/pkp/api/v1/submissions/PKPSubmissionFileHandler.inc.php(292): PKP\\Services\\PKPFileService->delete() #1 [internal function]: PKPSubmissionFileHandler->add() #2 ojs/lib/pkp/lib/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func() #3 ojs/lib/pkp/lib/vendor/slim/slim/Slim/Route.php(281): Slim\\Handlers\\Strategies\\RequestResponse->__invoke() #4 ojs/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\\Route->__invoke() #5 ojs/lib/pkp/lib/vendor/slim/slim/Slim/Route.php(268): Slim\\Route->callMiddlewareStack() #6 ojs/lib/pkp/lib/vendor/slim/slim/Slim/App.php(503): Slim\\Route->run() #7 ojs/lib/pkp/classes/security/authorization/internal/ApiAuthorizationMiddleware.inc.php(77): Slim\\App->__invoke() #8 [internal function]: ApiAuthorizationMiddleware->__invoke() #9 ojs/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array() #10 [internal function]: Slim\\DeferredCallable->__invoke() #11 ojs/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func() #12 ojs/lib/pkp/classes/security/authorization/internal/ApiCsrfMiddleware.inc.php(46): Slim\\App->Slim\\{closure}() #13 [internal function]: ApiCsrfMiddleware->__invoke() #14 ojs/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array() #15 [internal function]: Slim\\DeferredCallable->__invoke() #16 ojs/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func() #17 ojs/lib/pkp/classes/security/authorization/internal/ApiTokenDecodingMiddleware.inc.php(131): Slim\\App->Slim\\{closure}() #18 [internal function]: ApiTokenDecodingMiddleware->__invoke() #19 ojs/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array() #20 [internal function]: Slim\\DeferredCallable->__invoke() #21 ojs/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func() #22 ojs/lib/pkp/classes/handler/APIHandler.inc.php(68): Slim\\App->Slim\\{closure}() #23 [internal function]: APIHandler->{closure}() #24 ojs/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array() #25 [internal function]: Slim\\DeferredCallable->__invoke() #26 ojs/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func() #27 ojs/lib/pkp/classes/handler/APIHandler.inc.php(127): Slim\\App->Slim\\{closure}() #28 [internal function]: APIHandler->{closure}() #29 ojs/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array() #30 [internal function]: Slim\\DeferredCallable->__invoke() #31 ojs/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func() #32 ojs/lib/pkp/classes/handler/APIHandler.inc.php(132): Slim\\App->Slim\\{closure}() #33 [internal function]: APIHandler->{closure}() #34 ojs/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array() #35 [internal function]: Slim\\DeferredCallable->__invoke() #36 ojs/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func() #37 ojs/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\\App->Slim\\{closure}() #38 ojs/lib/pkp/lib/vendor/slim/slim/Slim/App.php(392): Slim\\App->callMiddlewareStack() #39 ojs/lib/pkp/classes/handler/APIHandler.inc.php(124): Slim\\App->process() #40 [internal function]: APIHandler->{closure}() #41 ojs/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array() #42 [internal function]: Slim\\DeferredCallable->__invoke() #43 ojs/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func() #44 ojs/lib/pkp/classes/handler/APIHandler.inc.php(132): Slim\\App->Slim\\{closure}() #45 [internal function]: APIHandler->{closure}() #46 ojs/lib/pkp/lib/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array() #47 [internal function]: Slim\\DeferredCallable->__invoke() #48 ojs/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func() #49 ojs/lib/pkp/lib/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\\App->Slim\\{closure}() #50 ojs/lib/pkp/lib/vendor/slim/slim/Slim/App.php(392): Slim\\App->callMiddlewareStack() #51 ojs/lib/pkp/lib/vendor/slim/slim/Slim/App.php(297): Slim\\App->process() #52 ojs/lib/pkp/classes/core/APIRouter.inc.php(115): Slim\\App->run() #53 ojs/lib/pkp/classes/core/Dispatcher.inc.php(144): APIRouter->route() #54 ojs/lib/pkp/classes/core/PKPApplication.inc.php(362): Dispatcher->dispatch() #55 ojs/index.php(68): PKPApplication->execute() #56 {main} View in rendered output by enabling the "displayErrorDetails" setting.
Also, the logic around failed scan will generate similar errors: Both _clamscanFile(): https://github.com/ulsdevteam/pkp-clamav/blob/9919574752bedcc00f574c93b87185291e47d742/ClamavPlugin.inc.php#L211-L214 And _clamdaemonFile(): https://github.com/ulsdevteam/pkp-clamav/blob/9919574752bedcc00f574c93b87185291e47d742/ClamavPlugin.inc.php#L276-L280 can fall through the conditional without throwing an error or returning a value.
_clamscanFile()
_clamdaemonFile()
That means that $message is null here: https://github.com/ulsdevteam/pkp-clamav/blob/9919574752bedcc00f574c93b87185291e47d742/ClamavPlugin.inc.php#L339-L351
$message
Fix for https://github.com/pkp/pkp-lib/issues/7828 was back ported to 3.3 (as of 3.3.0-11), so core will try to delete a file we've already deleted here: https://github.com/ulsdevteam/pkp-clamav/blob/9919574752bedcc00f574c93b87185291e47d742/ClamavPlugin.inc.php#L374-L375
The user will see a
SlimApplicationError
, and the log will show:Also, the logic around failed scan will generate similar errors: Both
_clamscanFile()
: https://github.com/ulsdevteam/pkp-clamav/blob/9919574752bedcc00f574c93b87185291e47d742/ClamavPlugin.inc.php#L211-L214 And_clamdaemonFile()
: https://github.com/ulsdevteam/pkp-clamav/blob/9919574752bedcc00f574c93b87185291e47d742/ClamavPlugin.inc.php#L276-L280 can fall through the conditional without throwing an error or returning a value.That means that
$message
is null here: https://github.com/ulsdevteam/pkp-clamav/blob/9919574752bedcc00f574c93b87185291e47d742/ClamavPlugin.inc.php#L339-L351