e8tools / tool1cd

Инструмент для работы с файлами 1CD за авторством Валерия Агеева с адаптацией от сообщества
GNU General Public License v3.0
110 stars 29 forks source link

Исправлено конструирование строки в toUtf8 #265

Closed ava57r closed 6 years ago

ava57r commented 6 years ago

fix #264

dmpas commented 6 years ago

Спросонья не улавливаю по исправлению, в чём был косяк

dmpas commented 6 years ago

Прочитал в гиттере

ava57r commented 6 years ago

Alexander Andreev @andreevlex 22:30

@dmpas в общем падает открытие списка конфигурай на определенных базах.

return string(reinterpret_cast<const char*>(Buffer.data()), offset, Buffer.size() - offset);

Мы на вход даем ссылку и сколько байт прочитать, но где-то в внутрях вызывается сишная функция strlen

Примечателен тот факт, что длина данных 38 байт емкость 42 байта, но завершающий нуль байт на 800 после. Вот и естественно вылезает за capacity

Alexander Andreev @andreevlex 22:42

string (const string& str, size_t pos, size_t len = npos);

конструктор стринга ждет ссылку на стринг, а мы ему даем ссылку на массив чаров из которой он контруирует строку и вылезает за разрешенное