Opublikowano 7 Grudnia 20232 l Cześć, Funkcja 'SendScript' zawiera lukę bezpieczeństwa związaną z niewłaściwym zarządzaniem wskaźnikami. W oryginalnej wersji funkcji nie sprawdzano, czy wskaźniki 'GetCurrentCharacterPtr()' i 'GetCurrentCharacterPtr()->GetDesc()' są prawidłowo zainicjowane. Jeśli wskaźniki były nieprawidłowo zainicjowane lub równe 'nullptr', próba dostępu do nich mogła spowodować awarię rdzenia gry. Aby rozwiązać ten problem, zmieniłem funkcję 'SendScript' tak, aby sprawdzała wskaźniki przed ich użyciem. Teraz wskaźniki są prawidłowo zainicjowane i funkcja działa stabilnie. Wprowadzone zmiany w funkcji 'SendScript': Rozszerzyłem warunek początkowy o sprawdzenie, czy 'm_strScript' jest pusty, oraz czy istnieje 'currentCharacterPtr' i jego deskryptor (currentCharacterPtr->GetDesc()). Uprościłem warunki dla skryptów '[DONE]' i '[NEXT]' poprzez wprowadzenie zmiennych 'isDoneScript' i 'isNextScript'. Zastosowałem zmienne lokalne, 'currentCharacterPtr' i 'characterDesc', aby poprawić czytelności i uniknąć wielokrotnego odwoływania się do tych samych obiektów. Poprawiłem komunikat sys_log, dodając więcej szczegółów, w tym nazwę postaci, skrypt oraz jego rozmiar. Implementacja: 📂 Lokalizacja pliku: 'game -> questmanager.cpp' 🔍 Szukaj Tylko zalogowani Zaloguj się, aby wyświetlić chronioną treść Ten post zawiera treści dostępne tylko dla członków. Zaloguj się lub utwórz konto, aby odblokować całą zawartość tego posta. Zaloguj się Utwórz konto ♻️ Zamień 🔍 Szukaj ♻️ Zamień 🔍 Szukaj ♻️ Zamień 🔍 Szukaj ♻️ Zamień 🔍 Szukaj ♻️ Zamień
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto