Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tmppanel: fix #2518: missing null-terminator + fix free call with garbage argument + fix memory leak #2519

Closed

Conversation

spnethw
Copy link
Contributor

@spnethw spnethw commented Nov 21, 2024

fix #2518

Источником проблемы является фрагмент:

StrBuf tmpTMP(k + 1);
TCHAR *TMP = tmpTMP;
lstrcpyn(TMP, argv - k, k + 1);
for (int i = 0; i < OPT_COUNT; i++)
if (lstrcmpi(TMP + 1, ParamsStr[i]) == 0)
*(int *)ParamsOpt[i] = *TMP == _T('+');

В tmpTMP копируется подстрока из argv, не содержащая завершающий '\0' (на его месте — пробел). Это приводит к некорректному сравнению функцией lstrcmpi из-за выхода за пределы буфера.


Дополнительно исправлена проблема, возникающая по причине передачи в метод GetFileInfoAndValidate() локального экземпляра структуры FAR_FIND_DATA.

В редком случае (если именем файла окажется "/") будет произведена попытка вызова free с неинициализированным аргументом.

Кроме того, поскольку GetFileInfoAndValidate() устанавливает (1, 2) значение второго аргумента вызовом функции WFD2FFD(), в поле lpwszFileName локальной переменной TempFindData окажется строка с выделенной malloc'ом памятью, указатель на которую сразу же будет утерян.

@spnethw spnethw changed the title fix #2518: missing null-terminator + minor optimization tmppanel: fix #2518: missing null-terminator + minor optimization Nov 21, 2024
@spnethw spnethw changed the title tmppanel: fix #2518: missing null-terminator + minor optimization tmppanel: fix #2518: missing null-terminator + fix free call with garbage argument + fix memory leak Nov 26, 2024
@spnethw spnethw closed this Nov 28, 2024
@spnethw spnethw deleted the tmppanel_fix_command_line_options_parsing branch November 28, 2024 19:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

tmppanel: some command-line options do not work under certain conditions.
1 participant