Skocz do zawartości
Masz już aplikację Sharegon?

Odkryj wszystkie możliwości. Dowiedz się więcej

Sharegon.pl

Zainstaluj aplikację Sharegon i korzystaj z powiadomień push oraz licznika nowych aktywności bezpośrednio z ekranu głównego.

Aby zainstalować tę aplikację na iOS i iPadOS.
  1. Tap the Share icon in Safari
  2. Przewiń menu i stuknij Dodaj do ekranu początkowego.
  3. Stuknij Dodaj w prawym górnym rogu.
Zainstaluj aplikację Sharegon na Androidzie
  1. Otwórz Sklep Google Play na swoim smarfonie.
  2. Wyszukaj „Sharegon” w pasku wyszukiwania.
  3. Stuknij „Zainstaluj”, aby pobrać aplikację.

Naprawa awarii klienta gry spowodowanej niepoprawnym odczytem nagłówka pliku 'fog.tga'

Nieaktywny

Featured Replies

Opublikowano

image.png.a144663d4007d16872d3413c4a1a8bf3.png

 

Czołem! Po dłuższej przerwie wracam do publikacji. Trochę wyszedłem z wprawy, więc czas wrócić do systematyczności. 😉 Dziś przygotowałem dla was rozwiązanie problemu, o którym dowiedziałem się od użytkownika @ExoCarossa. Wspomniał o nim jakiś czas temu na czacie, więc postanowiłem przeanalizować, czy faktycznie istnieje.

 

Omówienie problemu:

Mogłeś doświadczyć sporadycznych awarii klienta gry z powodu problemu w funkcji 'CDXTCImage::LoadHeaderFromMemory'. Funkcja ta nie sprawdzała, czy plik ma odpowiedni rozmiar przed próbą odczytu nagłówka DDS. W rezultacie, jeśli plik miał mniej niż 125 bajtów (wymagany rozmiar nagłówka DDS), funkcja próbowała odczytać dane spoza dostępnej pamięci. To prowadziło do nieoczekiwanych zachowania i potencjalnych awarii klienta. Plik 'fog.tga' miał jedynie 76 bajtów. Funkcja 'LoadHeaderFromMemory' zakładała, że zawsze ma do czynienia z plikami DDS o odpowiedniej długości, więc próbowała odczytać z tego pliku 125 bajtów, co powodowało odczyt danych spoza jego zakresu. Gdy funkcja napotykała koniec pliku wcześniej niż się spodziewała, mogło to prowadzić do awarii klienta.

 

Implementacja

📂 Lokalizacja pliku: 'EterImageLib -> DXTCImage.cpp'

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

 ♻️ Zamień

🔐 Ukryta Treść 🔐

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

  ♻️ Zamień

🔐 Ukryta Treść 🔐

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

   ♻️ Zamień

🔐 Ukryta Treść 🔐

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

    ♻️ Zamień

🔐 Ukryta Treść 🔐

 

 

📂 Lokalizacja pliku: 'EterImageLib -> DXTCImage.h'

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

 ♻️ Zamień

🔐 Ukryta Treść 🔐

 

 

 📂 Lokalizacja pliku: 'EterLib -> GrpImageTexture.cpp'

 

🔎Szukaj

🔐 Ukryta Treść 🔐

 

🔐 Ukryta Treść 🔐

 

 ♻️ Zamień

🔐 Ukryta Treść 🔐

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Konto

Nawigacja

Skonfiguruj powiadomienia push w przeglądarce.

Chrome (Android)
  1. Stuknij ikonę kłódki obok paska adresu.
  2. Wybierz Uprawnienia → Powiadomienia.
  3. Dostosuj swoje preferencje.
Chrome (Desktop)
  1. Kliknij ikonę kłódki na pasku adresu.
  2. Wybierz Ustawienia witryny.
  3. Znajdź Powiadomienia i dostosuj swoje preferencje.