Prezentacja z barcampu firmy semihalf. Spotkanie miało formę interaktywnego quizu. Zaprezentowaliśmy kilkanaście nietypowych bugów, z którymi mieliśmy do czynienia. Uczestnicy wskazywali właściwe rozwiązania.
Jak wygląda mikrokontroler od środka? W jaki sposób do niego mówić? Jak tłumaczy się kod C na wykonanie w sprzęcie? Skąd bierze się instrukcja? Gdzie szukać wyników operacji?
Dowiecie się, co to jest język opisu sprzętu i jak się go używa oraz jak zaprojektować własną architekturę mikrokontrolera z użyciem jednego z nich – języka Verilog.
Let your existing devices enter the witchcraft of IoT and the smart-home worldThe Software House
Internet rzeczy i inteligentne domy stają się coraz bardziej popularne. Co jednak zrobić, kiedy Twoje urządzenia nie są do tego przystosowane albo nie oferują pewnych funkcjonalności? Podczas mojej prelekcji opowiem o tym, jak tanim kosztem podłączyć różnego rodzaju sprzęt do sieci, zdalnie nimi sterować oraz analizować nieopisane przez producentów protokoły.
Wiele portów w jednym kontrolerze Gigabit Ethernet - jak to oprogramować w Linuksie? Powiązanie działania sprzętu ze stosem sieciowym systemu operacyjnego na przykładzie nowego sterownika dodanego do Linuksa v3.17.
Prezentacja dotycząca wydajnego przetwarzania ruchu IP na PC wygłoszona podczas IT Conference na WAT (http://itacademicday.azurewebsites.net/), listopad 2015.
(Polish only) Talk regarding effective IP traffic processing on x86 platforms, given at IT Academic Day / Military University of Technology in Warsaw, November 2015.
Droga, którą procesor przebywa od włączenia do uruchomienia systemu operacyjnego, jest długa, kręta i pełna pułapek. Prezentacja nakreśla jej przebieg, ze szczególnym uwzględnieniem niełatwych początków uruchamiania systemu. Aplikacja Hello World była pisana na wiele sposobów, a tutaj pojawi się kolejny: Bare Metal.
Jak wygląda mikrokontroler od środka? W jaki sposób do niego mówić? Jak tłumaczy się kod C na wykonanie w sprzęcie? Skąd bierze się instrukcja? Gdzie szukać wyników operacji?
Dowiecie się, co to jest język opisu sprzętu i jak się go używa oraz jak zaprojektować własną architekturę mikrokontrolera z użyciem jednego z nich – języka Verilog.
Let your existing devices enter the witchcraft of IoT and the smart-home worldThe Software House
Internet rzeczy i inteligentne domy stają się coraz bardziej popularne. Co jednak zrobić, kiedy Twoje urządzenia nie są do tego przystosowane albo nie oferują pewnych funkcjonalności? Podczas mojej prelekcji opowiem o tym, jak tanim kosztem podłączyć różnego rodzaju sprzęt do sieci, zdalnie nimi sterować oraz analizować nieopisane przez producentów protokoły.
Wiele portów w jednym kontrolerze Gigabit Ethernet - jak to oprogramować w Linuksie? Powiązanie działania sprzętu ze stosem sieciowym systemu operacyjnego na przykładzie nowego sterownika dodanego do Linuksa v3.17.
Prezentacja dotycząca wydajnego przetwarzania ruchu IP na PC wygłoszona podczas IT Conference na WAT (http://itacademicday.azurewebsites.net/), listopad 2015.
(Polish only) Talk regarding effective IP traffic processing on x86 platforms, given at IT Academic Day / Military University of Technology in Warsaw, November 2015.
Droga, którą procesor przebywa od włączenia do uruchomienia systemu operacyjnego, jest długa, kręta i pełna pułapek. Prezentacja nakreśla jej przebieg, ze szczególnym uwzględnieniem niełatwych początków uruchamiania systemu. Aplikacja Hello World była pisana na wiele sposobów, a tutaj pojawi się kolejny: Bare Metal.
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic NetworkingPROIDEA
Piotr Jabłoński – Network Consultant at Cisco Advanced Services. Delivers design solutions and recommendations for enterprise companies and ISPs in Central Europe. The main specialization includes technologies such as MPLS, L2/L3 VPN, Carrier Ethernet and Multicast. Prior to joining Cisco, he participated in the implementation and design of networking solutions in the UK and Poland. He is holding CCDE, CCIE SP and RS certifications. NetAcad Cisco Academy instructor and speaker at Cisco Live, Cisco Forum, PLNOG and other conferences. Co-author of the CCIE.pl portal.
Topic of Presentation: First Steps in Autonomic Networking
Language: Polish
Abstract: Autonomic Networking is an emerging, fundamentally new way to operate networks – it’s about self-management of network elements. In this presentation we explain and present a demo the first shipping parts of this new solution: A self-forming overlay network for control and management plane.
Jesteś frontendowcem i masz zamiar pisać w Nodzie? A może wcześniej pisałeś w PHP? Ta prezentacja pomoże ci zrozumieć podstawowe reguły rządzące światem Node'a, jak i nadrobić zaległości. Przygotuj się na pozytywnego kopniaka!
Podsumowanie prac prowadzonych przez Open-RnD w ramach projektu badań przemysłowych metod analizy obrazu stereoskopowego 3D. Projekt współfinansowany przez NCBiR w ramach programu Demonstrator+.
Hierarchia pamięci w systemach komputerowych.Semihalf
Pamięć nie jest płaska! Wręcz przeciwnie – dostęp do pamięci operacyjnej jest nierównomierny, a tworzenie wydajnego oprogramowania polega na umiejętnym wykorzystaniu podsystemu pamięci wraz z całą jego wielopoziomową hierarchią.
Z prezentacji dowiesz się:
Jaki wpływ na wydajność programów ma pamięć operacyjna?
Jak przyspieszyć działanie programów?
Kiedy korzystać z pamięci RAM lub Cache?
Pamięć nie jest płaska! Wręcz przeciwnie – dostęp do pamięci operacyjnej jest nierównomierny, a tworzenie wydajnego oprogramowania polega na umiejętnym wykorzystaniu podsystemu pamięci wraz z całą jego wielopoziomową hierarchią.
Prezentacja miała miejsce 29 kwietnia 2015, w ramach odbywających się barcampów organizowanych przez Semihalf.
Wiele już powiedziano i napisano o bezpiecznym kodowaniu.
My skupiamy się w prezentacji na bezpiecznym kodowaniu w języku C na podstawie realnych podatności znalezionych w znanych programach i bibliotekach oraz kernelu Linuxa.
Kolejny startup stworzył nowe urządzenie: do automatycznego otwierania samochodu za pomocą smartfona. Przekonani iż użycie AES czyni komunikację niemożliwą do złamania, w celu promocji kampanii crowdfundingowej zorganizowali nietypowy konkurs - "hacking challenge": jeśli komuś uda się przełamać zabezpieczenia i "ukraść" samochód, wówczas legalnie trafi on do "złodzieja".
W trakcie prezentacji - przy aktywnej pomocy widowni, wspomaganej niezbędnym do zrozumienia nowej technologii wprowadzeniem - krok po kroku przeprowadzimy analizę bezpieczeństwa tego rozwiązania: zaczynając od aplikacji mobilnej, przez warstwę radiową Bluetooth Low Energy,
słabości stworzonego protokołu komunikacyjnego, niewłaściwe założenia i brak zrozumienia ograniczeń bezpieczeństwa użytych komponentów. Ostatecznie wspólnie odkryjemy nowy, zaskakujący dla twórców atak: złamiemy zabezpieczenia, przejmując pełną kontrolę nad samochodem, po
uprzednim jednokrotnym zbliżeniu się do nieświadomego właściciela.
Podzielę się prawdziwym doświadczeniem sukcesu i porażki udziału w konkursie "hacking challenge" - trudnych do spełnienia warunków, problemów technicznych, przeszkód organizacyjnych i kontaktu z organizatorem - przed i po upadku kampanii. Opowiem o ekonomii startup-ów podporządkowanej twardym zasadom crowdfundingu, oraz o
urządzeniach które wkrótce nieuchronnie staną się częścią otaczającej nas rzeczywistości.
Uczestnicy wyniosą wyczerpującą wiedzę dotyczącą bezpiecznego użycia najpopularniejszej technologii IoT: Bluetooth 4 (Low Energy) - na przykładzie nie tylko samochodu, ale także innych urządzeń - m.in. coraz
popularniejszych beacon-ów. Wspólnie zastanowimy się również nad warunkami wykorzystania potencjalnych słabości, oraz ich rzeczywistym wpływem na ryzyko.
Jak realizowana jest wielozadaniowość na pojedynczym CPU oraz jakie są jej konsekwencje? Czy “mutex to taki binarny semafor”? Dlaczego Windows nie jest używany do sterowania rakietami oraz jaki popularny błąd omal nie spowodował utraty jednej z misji NASA?
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Semihalf
Prezentacja z Meetupu grupy Software Meets Hardware in Wrocław.
Na spotkaniu opisywaliśmy co dzieje się w komputerze zanim wystartuje system operacyjny, czyli tuż po włączeniu komputera lub wciśnięciu przycisku reset oraz co to jest firmware i jakie są jego rodzaje.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.Semihalf
Prezentacja barcampu firmy Semihalf.
Opowiadamy jak działa system ARM CoreSight. Przedstawiamy jego komponenty oraz zasady współdziałania i konfigurowania. Pokazujemy sposób integracji systemu CoreSight z Linuxowym narzędziem Perf oraz przykłady jego użycia podczas profilowania kodu.
More Related Content
Similar to Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
PLNOG 13: Piotr Jabłoński: First Steps in Autonomic NetworkingPROIDEA
Piotr Jabłoński – Network Consultant at Cisco Advanced Services. Delivers design solutions and recommendations for enterprise companies and ISPs in Central Europe. The main specialization includes technologies such as MPLS, L2/L3 VPN, Carrier Ethernet and Multicast. Prior to joining Cisco, he participated in the implementation and design of networking solutions in the UK and Poland. He is holding CCDE, CCIE SP and RS certifications. NetAcad Cisco Academy instructor and speaker at Cisco Live, Cisco Forum, PLNOG and other conferences. Co-author of the CCIE.pl portal.
Topic of Presentation: First Steps in Autonomic Networking
Language: Polish
Abstract: Autonomic Networking is an emerging, fundamentally new way to operate networks – it’s about self-management of network elements. In this presentation we explain and present a demo the first shipping parts of this new solution: A self-forming overlay network for control and management plane.
Jesteś frontendowcem i masz zamiar pisać w Nodzie? A może wcześniej pisałeś w PHP? Ta prezentacja pomoże ci zrozumieć podstawowe reguły rządzące światem Node'a, jak i nadrobić zaległości. Przygotuj się na pozytywnego kopniaka!
Podsumowanie prac prowadzonych przez Open-RnD w ramach projektu badań przemysłowych metod analizy obrazu stereoskopowego 3D. Projekt współfinansowany przez NCBiR w ramach programu Demonstrator+.
Hierarchia pamięci w systemach komputerowych.Semihalf
Pamięć nie jest płaska! Wręcz przeciwnie – dostęp do pamięci operacyjnej jest nierównomierny, a tworzenie wydajnego oprogramowania polega na umiejętnym wykorzystaniu podsystemu pamięci wraz z całą jego wielopoziomową hierarchią.
Z prezentacji dowiesz się:
Jaki wpływ na wydajność programów ma pamięć operacyjna?
Jak przyspieszyć działanie programów?
Kiedy korzystać z pamięci RAM lub Cache?
Pamięć nie jest płaska! Wręcz przeciwnie – dostęp do pamięci operacyjnej jest nierównomierny, a tworzenie wydajnego oprogramowania polega na umiejętnym wykorzystaniu podsystemu pamięci wraz z całą jego wielopoziomową hierarchią.
Prezentacja miała miejsce 29 kwietnia 2015, w ramach odbywających się barcampów organizowanych przez Semihalf.
Wiele już powiedziano i napisano o bezpiecznym kodowaniu.
My skupiamy się w prezentacji na bezpiecznym kodowaniu w języku C na podstawie realnych podatności znalezionych w znanych programach i bibliotekach oraz kernelu Linuxa.
Kolejny startup stworzył nowe urządzenie: do automatycznego otwierania samochodu za pomocą smartfona. Przekonani iż użycie AES czyni komunikację niemożliwą do złamania, w celu promocji kampanii crowdfundingowej zorganizowali nietypowy konkurs - "hacking challenge": jeśli komuś uda się przełamać zabezpieczenia i "ukraść" samochód, wówczas legalnie trafi on do "złodzieja".
W trakcie prezentacji - przy aktywnej pomocy widowni, wspomaganej niezbędnym do zrozumienia nowej technologii wprowadzeniem - krok po kroku przeprowadzimy analizę bezpieczeństwa tego rozwiązania: zaczynając od aplikacji mobilnej, przez warstwę radiową Bluetooth Low Energy,
słabości stworzonego protokołu komunikacyjnego, niewłaściwe założenia i brak zrozumienia ograniczeń bezpieczeństwa użytych komponentów. Ostatecznie wspólnie odkryjemy nowy, zaskakujący dla twórców atak: złamiemy zabezpieczenia, przejmując pełną kontrolę nad samochodem, po
uprzednim jednokrotnym zbliżeniu się do nieświadomego właściciela.
Podzielę się prawdziwym doświadczeniem sukcesu i porażki udziału w konkursie "hacking challenge" - trudnych do spełnienia warunków, problemów technicznych, przeszkód organizacyjnych i kontaktu z organizatorem - przed i po upadku kampanii. Opowiem o ekonomii startup-ów podporządkowanej twardym zasadom crowdfundingu, oraz o
urządzeniach które wkrótce nieuchronnie staną się częścią otaczającej nas rzeczywistości.
Uczestnicy wyniosą wyczerpującą wiedzę dotyczącą bezpiecznego użycia najpopularniejszej technologii IoT: Bluetooth 4 (Low Energy) - na przykładzie nie tylko samochodu, ale także innych urządzeń - m.in. coraz
popularniejszych beacon-ów. Wspólnie zastanowimy się również nad warunkami wykorzystania potencjalnych słabości, oraz ich rzeczywistym wpływem na ryzyko.
Jak realizowana jest wielozadaniowość na pojedynczym CPU oraz jakie są jej konsekwencje? Czy “mutex to taki binarny semafor”? Dlaczego Windows nie jest używany do sterowania rakietami oraz jaki popularny błąd omal nie spowodował utraty jednej z misji NASA?
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Semihalf
Prezentacja z Meetupu grupy Software Meets Hardware in Wrocław.
Na spotkaniu opisywaliśmy co dzieje się w komputerze zanim wystartuje system operacyjny, czyli tuż po włączeniu komputera lub wciśnięciu przycisku reset oraz co to jest firmware i jakie są jego rodzaje.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.Semihalf
Prezentacja barcampu firmy Semihalf.
Opowiadamy jak działa system ARM CoreSight. Przedstawiamy jego komponenty oraz zasady współdziałania i konfigurowania. Pokazujemy sposób integracji systemu CoreSight z Linuxowym narzędziem Perf oraz przykłady jego użycia podczas profilowania kodu.
Embedded Debugging, czyli co kryje się w jądrze?Semihalf
Prezentacja barcampu firmy Semihalf z 27.11.2018 r.
Jak zaglądnąć tam gdzie pozornie jest to niewykonalne? Kernel panic? Crash dump? Za pomocą narzędzi software'owych i sprzętowych można rozwiązać i takie problemy.
Zagadnienia:
Wsparcie sprzętowe procesorów do debugowania (stepping, pmu, etc.)
Wsparcie systemu operacyjnego (trap, crash dump)
Narzędzia: LLDB, KDB
Case study: (Linux, FreeBSD, macOS, Windows)
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01Semihalf
Prezentacja z barcampu firmy Semihalf (S09:E01). Zapis wideo dostępny jest na naszym kanale YouTube: https://youtu.be/jAp-bi-3ZiE
Omawiamy najpopularniejsze polecenia GDB, zwracając uwagę na często pomijane niuanse pozwalające ułatwić i przyspieszyć proces debugowania. Wyjaśniamy jak automatyzować i przyspieszać pracę w programie. Prezentujemy niektóre rozszerzenia. Opowiadamy o wstecznym wykonywaniu kodu oraz o możliwościach GDB, które bywają zapominane, a w konkretnych sytuacjach są niezastąpione.
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Semihalf
Podczas wykładu pomijamy jakość filtracji powietrza natomiast skupiamy się na metodach testowania protokołów sieciowych przy wykorzystaniu języka TTCN-3. Sprawdzamy jakie dane nasze domowe urządzenia wysyłają w świat oraz jak można przejąć nad nimi kontrolę.
Prezentacja z barcampu firmy Semihalf. Przyglądamy się potencjałowi jaki leży w z pozoru starych urządzeniach domowych. Wystarczy pomysł, lutownica, odrobina determinacji i otwarty umysł by użyć stary router jako bazę do stworzenia własnego urządzenia komputerowego.
CPU GHOST BUSTING. Semihalf Barcamp Special. Semihalf
Z prezentacji dowiesz się jak działają nowoczesne procesory, jakich technik używają (Speculative Execution, Branch Prediction) aby zwiększyć wydajność i jak to się stało, że niektóre z tych usprawnień mogą być sprytnie wykorzystane do pozyskania poufnych danych. Omawiamy przykład złośliwego kodu wykorzystującego te luki i skutki jego działania. Pokazujemy mechanizmy obrony i wyjaśniamy jakie mogą przynosić ograniczenia.
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Semihalf
Przedstawiamy firmware UEFI, dzięki któremu możliwe jest coraz śmielsze wkraczanie architektury ARM64 do świata urządzeń serwerowych, czyli królestwa władanego przez Intel. Standardy, ich założenia i realizacja zostałą przybliżona na przykładzie dodawania wsparcia dla n
Skazani na firmware. ARM Trusted Firmware. S07E02Semihalf
Czy zastanawiałeś się kiedyś, jakie funkcjonalności realizuje nowoczesne oprogramowanie układowe?
Zapraszamy na prezentację poświęconą technologii ARM Trusted Firmware, na którym opowiemy w jaki sposób nowoczesne systemy radzą sobie z kwestiami bezpieczeństwa na przykładzie ARM Trusted Firmware. Zaprezentujemy także różnice między światem zaufanym a światem normalnym, czy i jak te dwa światy są w stanie istnieć w jednym systemie oraz co je łączy.
Skazani na firmware. Świat komputera przed systemem operacyjnym.Semihalf
Czy zastanawiałeś się kiedyś co dzieje się po włączeniu komputera lub wciśnięciu przycisku RESET?
Zanim uruchomi się Twój system operacyjny mija kilka sekund - przyjrzymy się im z bliska. Odpowiemy na pytania co to jest firmware i jakie są jego rodzaje.
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKSemihalf
W prezentacji znajdziesz opis zagadnienia przetwarzania pakietów w wysokowydajnych sieciach światłowodowych. Koncepcja przetwarzania ruchu sieciowego w przestrzeni użytkownika oparta jest na zastosowaniu frameworku DPDK na platformie Linux/x86.
Piękny byłby świat komputerów, gdyby sprzęt zachowywał się tak samo jak oprogramowanie. Pomyślmy o nowej karcie graficznej, którą instalujemy w komputerze, zaznaczamy myszką, klikamy kopiuj, wklej, i bach, mamy już dwie! Albo nawet i trzy. A gdy już się nam znudzi, przesuwamy ją do kosza i cieszymy się z podstawowej konfiguracji. Sceptycy krzykną: niemożliwe! Ale czy na pewno?
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Semihalf
Z prezentacji dowiesz się:
Co to są sieci programowalne i wirtualizowane (SDN / NFV)?
Jaką nową jakość wprowadzają one dla operatorów chmur obliczeniowych i centrów danych?
W jaki sposób technologia OpenContrail realizuje sieci nowej generacji?
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Semihalf
Dowiesz się na czym polega tajemnica kilku równoległych systemów operacyjnych. Wprowadzimy Cię w świat wirtualnych systemów operacyjnych, poznasz metody umożliwiające ich incepcję oraz zoptymalizujesz wydajność swojej maszyny wirtualnej.
Czym są heterogeniczne systemy mikroprocesorowe?Semihalf
Wyjaśnimy Ci co to jest system heterogoniczny, jak wygląda Linuxowy sterownik do "misc. character device" oraz w jaki sposób Linux może dogadać się z FreeRTOSem.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.Semihalf
Dzięki prezentacji poznasz wyzwania jakie stawia rynek infrastrukturze sieciowej, dowiesz się jakie są główne potrzeby w tym obszarze, zapoznasz się z ewolucją kart sieciowych.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Semihalf
W prezentacji wyjaśniamy:
- Czym są programowalne sieci komputerowe (SDN - Software Defined Networks)?
- Jakie korzyści daje nam wirtualizacja funkcji sieciowych (NFV - Network Functions Virtualization)?
- Jak zrobić szybki routing pomiędzy maszynami wirtualnymi?
DTrace, czyli jak zobaczyć to czego nie widać.Semihalf
"Szanowny Panie, Pana program działa, ale niestety wolno. Czy da się go przyspieszyć?" Który programista nie spotkał się z takim stwierdzeniem niech pierwszy rzuci kamień. W prezentacji poruszamy tematykę analizy wydajności programów za pomocą narzędzia DTrace.
4. Stan:
- Urządzenie wyposażone jest w moduł WiFi, lutowany
bezpośrednio do płyty głównej, który poprzez I2C steruje
przekaźnikami.
Problem:
- Po przeniesieniu do serwerowni, urządzenie niepoprawnie
obsługuje protokół I2C (złe napięcia na linii).
Pytanie:
- Jaka jest przyczyna awarii?
a) zakłócenia EM od pobliskich serwerów upośledzają pracę układu
b) złośliwy sąsiad wysyła pakiety WiFi-killer z piwnicy
c) dostarczone przez producenta modułu SDK ma niską jakość
d) wilgoć zakłócająca działanie układu
www.pollev.com/buglegends405
5. Stan:
- Urządzenie wyposażone jest w moduł WiFi, lutowany
bezpośrednio do płyty głównej, który poprzez I2C steruje
przekaźnikami.
Problem:
- Po przeniesieniu do serwerowni, urządzenie niepoprawnie
obsługuje protokół I2C (złe napięcia na linii).
Pytanie:
- Jaka jest przyczyna awarii?
a) zakłócenia EM od pobliskich serwerów upośledzają pracę układu
b) złośliwy sąsiad wysyła pakiety WiFi-killer z piwnicy
c) dostarczone przez producenta modułu SDK ma niską jakość
d) wilgoć zakłócająca działanie układu
www.pollev.com/buglegends405
6. Stan:
- dwa urządzenia, Host i Karta Sieciowa, połączone kablem
PCIe o długości 10cm
Problem:
- po przełożeniu zestawu z biurka do labu, duży transfer
powoduje powstanie błędów transmisji na PCIe
Pytanie:
- Co zostało użyte do naprawy?
a) młotek ze stali St500
b) opakowanie czekolady Milka
c) spinacz biurowy i pudełko zapałek
d) WD40 i taśma izolacyjna
www.pollev.com/buglegends405
7. a) młotek ze stali St500
b) opakowanie czekolady Milka
c) spinacz biurowy i pudełko zapałek
d) WD40 i taśma izolacyjna
www.pollev.com/buglegends405
9. a) zależy od architektury
b) 1
c) 4
d) nie jest zdefiniowany przez standard
sizeof(char) == ?
www.pollev.com/buglegends405
10. sizeof(char) == 1
6.5.3.4 The sizeof and _Alignof operators
4. When sizeof is applied to an operand that
has type char, unsigned char, or
signed char, (or a qualified version thereof)
the result is 1.
a) zależy od architektury
b) 1
c) 4
d) Nie jest zdefiniowany przez standard
www.pollev.com/buglegends405
11. Ile bitów mieści char?
a) zależy od architektury
b) 7
c) 8
d) nie jest zdefiniowany przez standard
www.pollev.com/buglegends405
12. Ile bitów mieści char ?
5.2.4.2.1 Sizes of integer types <limits.h>
(...) Their implementation-defined values shall be equal or greater in magnitude (absolute
value) to those shown, with the same sign.
—number of bits for smallest object that is not a bit-field (byte)
CHAR_BIT 8
const size_t BitsInByte = CHAR_BIT * sizeof(char);
a) zależy od architektury
b) 7
c) 8
d) Nie jest zdefiniowany przez standard
www.pollev.com/buglegends405
13. a) 0
b) 1
c) sizeof(char*)
d) zachowanie niezdefiniowane (Undefined Behaviour)
struct X {
;
};
sizeof(struct X) = ? *
*
wg ISO C
www.pollev.com/buglegends405
14. a) 0
b) 1
c) sizeof(char*)
d) Zachowanie niezdefiniowane (Undefined Behaviour)
struct X {
;
};
Standard C11 (Draft N1570)
6.7.2.1 Structure and union specifiers
7. If the struct-declaration-list contains no named members,
the behavior is undefined.
www.pollev.com/buglegends405
16. a) 8
b) 16
c) Nie skompiluje się
d) Zachowanie niezdefiniowane
struct X {
uint64_t a;
char arr[];
};
printf("sizeof(X) = %lun", sizeof(struct X));
*
* wg ISO C
www.pollev.com/buglegends405
17. a) 8
b) 16
c) Nie skompiluje się
d) Zachowanie niezdefiniowane
struct X {
uint64_t a;
char arr[];
};
printf("sizeof...
6.7.2.1 Structure and union
specifiers
3. …, except that the last member of a
structure with more than one named member
may have incomplete array type; such a
structure (and any union containing,
possibly recursively, a member that is such
a structure) shall not be a member of a
structure or an element of an array.
To nie jest arr[0]
www.pollev.com/buglegends405
18. #define DATA_SIZE
struct X {
uint64_t a;
char arr[DATA_SIZE];
};
f (void) {
int a;
struct X object;
object.arr[0] = ...
www.pollev.com/buglegends405
19. struct proto_hdr {
uint16_t type; /* data type */
uint16_t size; /* data size in bytes */
char data[]; /* flexible array member - pointer to
payload */
};
uint16_t size = 64;
struct proto_hdr *h = malloc (
sizeof (struct
proto_hdr) +
sizeof (char [size]));
h->type = TOP_SECRET_PAYLOAD;
h->size = size;
www.pollev.com/buglegends405
20. a) sizeof (struct ab) == 4; sizeof ( struct a0b) == 4;
b) sizeof (struct ab) == 4; sizeof ( struct a0b) == 8;
c) sizeof (struct ab) == 8; sizeof ( struct a0b) == 8;
d) Nie skompiluje się
struct ab{
int a : 1;
int b : 1;
};
struct a0b{
int a : 1;
int : 0;
int b : 1;
};
sizeof (struct ab) == ?
sizeof (struct a0b) == ?
*
wg ISO C
www.pollev.com/buglegends405
21. a) sizeof (struct ab) == 4; sizeof ( struct a0b) == 4;
b) sizeof (struct ab) == 4; sizeof ( struct a0b) == 8;
c) sizeof (struct ab) == 8; sizeof ( struct a0b) == 8;
d) Nie skompiluje się
struct ab{
int a : 1;
int b : 1;
};
struct a0b{
int a : 1;
int : 0;
int b : 1;
};
6.7.2.1 Structure and union specifiers
As a special case, a bit-field structure
member with a width of 0 indicates that
no further bit-field is to be packed
into the unit in which the previous bit-
field, if any, was placed.
www.pollev.com/buglegends405
22. struct nextvend {
u_char nv_magic[4]; /* Magic number for vendor specificity
*/
u_char nv_version; /* NeXT protocol version */
/*
* Round the beginning
* of the union to a 16
* bit boundary due to
* struct/union alignment
* on the m68k.
*/
unsigned short :0;
union {
u_char NV0[58];
struct {
u_char NV1_opcode; /* opcode - Version 1 */
u_char NV1_xid; /* transcation id */
u_char NV1_text[NVMAXTEXT]; /* text */
u_char NV1_null; /* null terminator */
} NV1;
} nv_U;
...
Źródło: https://github.com/apple/darwin-xnu/blob/master/bsd/netinet/bootp.h#L97
www.pollev.com/buglegends405
23. CPU0
System wbudowany
interfejs SSI
CPU0 i CPU1 w osobnych IC
Brak MMU – adresowanie fizyczne
ETH
SSI – Synchronous Serial Interface
ETH → CPU0 → SSI → CPU1
Problem – co jakiś czas błąd krytyczny
sterty na CPU0 powoduje reset całego systemu
CPU1 → SSI → CPU0 → ETH
Jaka jest przyczyna błędu krytycznego na stercie?
ETH
CPU1
www.pollev.com/buglegends405
24. Jaka jest przyczyna błędu krytycznego na stercie ?
a) błąd w sprzęcie
b) wyścig i brak walidacji danych w driverze interfejsu SSI
c) błąd w implementacji sterty
d) błąd w dokumentacji CPU
Jaka jest przyczyna błędu krytycznego na stercie ? www.pollev.com/buglegends405
25. a) błąd w sprzęcie
b) wyścig i brak walidacji danych w driverze interfejsu SSI
c) błąd w implementacji sterty
d) błąd w dokumentacji CPU
Jaka jest przyczyna błędu krytycznego na stercie ?
Jaka jest przyczyna błędu krytycznego na stercie ?
26. Wyjaśnienie
interfejs SSI
CPU0 CPU1
Format ramki SSI HEADER | PAYLOAD
LEN | TYPE
CPU1 wysyła ramkę bez sprawdzenia czy
transmisja poprzedniej już się zakończyła
request #1
reply #1
request #2
reply #2
CPU0 skopiuje dane z SSI bez
sprawdzenia wielkości bufora
docelowego i uszkodzi dane
kontrolne sterty
27. Programuj wbrew regułom!
29.05. gdz. 19:00
Drugie życie elektroniki.
Jak z routera zrobić nierouter?
13.06 gdz. 19:00
Oczyszczacz powietrza i stos sieciowy?
Czas na test!