Jeden plik PDF zawiesił komputer. Polska programistka załatała 20-letni błąd w Linuxie

Polska programistka przez przypadek odkryła 20-letni błąd w jednej z aplikacji Linuxa. Przygotowała łatkę, dzięki której entuzjaści programu mogą cieszyć się jego sprawniejszym działaniem.

futurebeat.pl

Zbigniew Woźnicki

2
Jeden plik PDF zawiesił komputer. Polska programistka załatała 20-letni błąd w Linuxie, źródło grafiki: iczelia.net / Linux.
Jeden plik PDF zawiesił komputer. Polska programistka załatała 20-letni błąd w Linuxie Źródło: iczelia.net / Linux.

Niektóre błędy oprogramowania są tak specyficzne, że potrzeba przypadku, by je znaleźć. W ten sposób Kamila Szewczyk trafiła na bug w menedżerze okien Linuxa Enlightenment E16, który obecnie jest niszową aplikacją. Wciąż jednak ma swoich entuzjastów i jako jedna z nich Szewczyk na co dzień z niego korzysta. Wystarczył jednak jeden plik PDF, żeby chwilowo wstrzymać pracę.

Tworzenie prezentacji pomogło odnaleźć 20-letni błąd

Mimo wieku 21 lat Kamila Szewczyk darzy szczególnymi względami klasyczne oprogramowanie, stawiając je ponad nowoczesne rozwiązania. Dlatego do teraz używa menedżera okien Linuxa Enlightenment E16, który swoją premierę miał w 1997 roku i już dawno otrzymał nowsze wersje. Praca nad prezentacją multimedialną sprawiła, że Kamila Szewczyk musiała naprawić ulubiony program, który służy jej na Linuxie.

Jak opisuje na swoim blogu, przygotowując slajdy do prezentacji multimedialnej otworzyła plik PDF w czytniku Atril. Enlightenment E16 działa na tej zasadzie, że nazwa pliku staje się tytułem okna, co w tej sytuacji doprowadziło do zawieszenia się komputera, ponieważ tytuł był zbyt długi: „Kickoff.pdf — Introduction to Information Theory Session 1: kickoff & first topic”.

Aplikacja próbowała skrócić nazwę wycinając odpowiednią liczbę znaków i zastępując ją wielokropkiem. Tworzący 20 lat temu tę funkcję programista wykorzystał do tego metodą Newtona, która pozwala oszacować, ile znaków należy wyciąć. Brakowało jednak zabezpieczenia ograniczającego liczbę iteracji jakich dokonuje aplikacja.

Z tego powodu Kamila Szewczyk napotkała błąd algorytmu, który wpadł w nieskończoną pętlę próbującą odgadnąć, ile znaków ma wyciąć z nagłówka. Nie był w stanie tego oszacować, a pulpit odmawiał posłuszeństwa. Dlatego młoda programistka wykorzystała stary kod w języku C i dodała trzy poprawki:

  1. Wprowadziła twardy limit 32 prób dopasowania tekstu, żeby upewnić się, że pętla ma swój koniec;
  2. Zabezpieczyła kod przed wyliczaniem ujemnej liczby znaków do usunięcia;
  3. Dodała ochronę przed dzieleniem przez zero.

Dzięki pracowaniu na oprogramowaniu Open Source Kamila mogła samodzielnie przygotować łatkę, która następnie trafiła do oficjalnej aktualizacji i nie musiała czekać, aż twórcy Enlightenment E16 samodzielnie zajmą się błędem w kodzie programu.

Zbigniew Woźnicki

Autor: Zbigniew Woźnicki

Przygodę z publicystyką i pisaniem zaczął w serwisie Allegro, gdzie publikował newsy związane z grami, technologią oraz mediami społecznościowymi. Wkrótce zawitał na GRYOnline.pl i Filmomaniaka, pisząc o nowościach związanych z branżą filmową. Mimo związku z serialami, jego serce należy do gier wszelakiego typu. Żaden gatunek mu nie straszny, a przygoda z Tibią nauczyła go, że niebo i muzyka w grach są całkowicie zbędne. Przed laty dzielił się swoimi doświadczeniami, moderując forum mmorpg.org.pl. Uwielbia ponarzekać, ale oczywiście konstruktywnie i z umiarem. Na forum pisze pod ksywką Canaton.

Ocena na Steam spada, ale Relic nie odpuszcza. Nowy dodatek do CoH3 może być nowym otwarciem dla drugowojennego RTS-a

Następny
Ocena na Steam spada, ale Relic nie odpuszcza. Nowy dodatek do CoH3 może być nowym otwarciem dla drugowojennego RTS-a

Ridley Scott powraca do sci-fi i serwuje postapokaliptyczny thriller w klimacie The Last of Us. Premiera obiecującego widowiska jeszcze tego lata

Poprzedni
Ridley Scott powraca do sci-fi i serwuje postapokaliptyczny thriller w klimacie The Last of Us. Premiera obiecującego widowiska jeszcze tego lata

GRYOnline.pl:

Facebook GRYOnline.pl Instagram GRYOnline.pl X GRYOnline.pl Discord GRYOnline.pl TikTok GRYOnline.pl Podcast GRYOnline.pl WhatsApp GRYOnline.pl LinkedIn GRYOnline.pl Forum GRYOnline.pl

tvgry.pl:

YouTube tvgry.pl TikTok tvgry.pl Instagram tvgry.pl Discord tvgry.pl Facebook tvgry.pl