Strona główna | Informacje | Społeczność | Rozwój | mójReactOS | Kontakt
|
Community > ReactOS Newsletter Archive > ReactOS Newsletter: Newsletter 79Newsletter 79by Z98 on 2010-12-24 Ekipa ReactOS pragnie życzyć wszystkim Wesołych Świąt i Szczęśliwego Nowego Roku. topAnaliza statyczna CoverityEkipie ReactOS udało się niedawno zorganizować kolejną analizę statyczną kodu w Coverity. Dzięki ulepszeniu algorytmów tejże udało się wprawdzie wykryć kilka nowych problemów, jednak większość z zaraportowanych jest wynikiem sposobu w jaki zaimplementowany została w ReactOS biblioteka PSEH (Portable Structured Exception Handling) lub pochodzi z kodu zaimportowanego z innych projektów. Biblioteka PSEH może zostać dodana do ignorowanych, jednak pozostaje problem z kodem, który do ReactOS jest w całości importowany. Niektóre z projektów których kod używa ReactOS same mają dostęp do skanowania w Coverity, zatem obowiązek naprawy ewentualnych błędów spoczywa przede wszystkim na nich, chociaż nasi programiści prawdopodobnie będą raportować błędy w przypadku gdy zabraknie jakiegoś ruchu ze strony właścicieli kodu. Pewna grupa projektów nie ma dostępu do Coverity, w ich przypadku ekipa ReactOS rozważa sposób w jaki moglibyśmy legalnie przekazać im informacje niezbędne do naprawienia błędów. Skanowanie Coverity po raz drugi już okazało się przydatne, wykrywając wiele potencjalni groźnych luk. Może zaświadczyć o tym liczba poprawek opisanych numerami CID, czyli numerami błędów wykrytych przez Coverity. Błędem występującym często było nieprawidłowe ustawianie rozmiarów buforu przy operacjach na pamięci, co w rezultacie mogło doprowadzić do nadpisania danych bądź umieszczenia ich w nieodpowiednim miejscu. Poniżej omówiony jest jeden z bardziej interesujących przypadków. topBufory FASTFATStary sterownik FAT okazał się być problematyczny, gdyż Coverity doszukał się w nim licznych błędów przepełnienia bufora, gdy zapis do niego przekraczał rozmiar zaalokowany przez bufor. Pierre Schweitzer po analizie kodu odkrył, że z jakiegoś powodu sterownik wykorzystuje trzy odrębne bufory do tego samego celu. W efekcie, przy niektórych operacjach nie można z całą pewnością stwierdzić tego, który bufor jest rzeczywiście w użyciu. Inna wątpliwość dotyczyła tego, czy zawartość buforów jest synchronizowana pomiędzy nimi. Próbując naprawić błędy przepełnień buforów, Pierre natrafił na przypadki użycia wartości 13, jednak w nieudokumentowany sposób, z którego nie wynikało źródło jej pochodzenia. Jest to bardzo zła praktyka, gdyż w przypadku konieczności zmiany takiej wartości, trzeba ręcznie poprawić ją we wszystkich miejscach jej wystąpienia. Prawidłową metodą jest zdefiniowanie jej jako stałej lub też użycie sizeof na określonym typie lub strukturze. Możemy mieć nadzieję, iż nowy sterownik FAT rozwiąże radykalnie te problemy. topNowy deweloperRoel Messiant nie tak dawno dołączył do ekipy i już teraz może poszczycić się znaczną ilością poprawek związanych z Coverity. Znany na ircu jako Mephisto, wykazał się już wcześniej licznymi poprawkami, wysyłanymi do bugzilli.
top |