Opublikowano 7 Grudnia 20231 r 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 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.