Skocz do zawartości

Naprawa funkcji 'SendScript' poprzez zarządzanie wskaźnikami dla większej stabilności gry

Opublikowano

image.png.a144663d4007d16872d3413c4a1a8bf3.png

 

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ść 🔐

 

🔐 Ukryta Treść 🔐

 

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

Featured Replies

Opublikowano

Dziękuje za kolejnego Fix'a

Opublikowano

Dziękujemy!

Opublikowano

Dzieląc się tym kodem, sprawiłeś, że gra jest o niebo lepsza. Dzięki!

 

Opublikowano

Dzięki

Opublikowano

dzięki

  • 1 miesiąc temu...
Opublikowano

dzięki

  • 1 miesiąc temu...
Opublikowano
  • Premium

dzięki

  • 7 miesięcy temu...
Opublikowano

thanks

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ą.

Gość
Dodaj odpowiedź do tematu...