tmppanel: fix #2518: missing null-terminator + fix free call with garbage argument + fix memory leak #2519
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
fix #2518
Источником проблемы является фрагмент:
far2l/tmppanel/src/TmpPanel.cpp
Lines 96 to 102 in 63ae9f6
В
tmpTMP
копируется подстрока изargv
, не содержащая завершающий'\0'
(на его месте — пробел). Это приводит к некорректному сравнению функциейlstrcmpi
из-за выхода за пределы буфера.Дополнительно исправлена проблема, возникающая по причине передачи в метод GetFileInfoAndValidate() локального экземпляра структуры FAR_FIND_DATA.
В редком случае (если именем файла окажется "/") будет произведена попытка вызова free с неинициализированным аргументом.
Кроме того, поскольку GetFileInfoAndValidate() устанавливает (1, 2) значение второго аргумента вызовом функции WFD2FFD(), в поле
lpwszFileName
локальной переменной TempFindData окажется строка с выделенной malloc'ом памятью, указатель на которую сразу же будет утерян.