-
Data: 2017-07-23 18:42:29
Temat: esp8266 i snprintf()
Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Do tej pory we wszystkich moich projektach, zgodnie z zalecaną praktyką
stosowałem funkcję snprintf() zamiast sprintf(), aby uniknąć możliwości
przepełnienia bufora. Podobnie z innymi funkcjami z stdio.h i string.h,
które posiadają taki odpowiednik.
Jednak z tego co widzę, to w przypadku SDK do ESP8266 nie jest to takie
proste. Wśród bibliotek udostępnionych przez producenta znajdują się
osobne funkcje do manipulowana łańcuchami tekstowymi, z prefiksem "os_".
Zamiast sprintf() należy więc używać os_sprintf. Problem w tym, że w
zestawie nie ma funkcji sprawdzających wielkość bufora.
Teoretycznie można w projekcie wykorzystać standardowe biblioteki
"stdio.h" albo "string.h", jednak z tego co wyczytałem nie jest to
zalecane i wynika to ze specyfiki sprzętu (coś z wyrównywaniem pamięci).
Kod się skompiluje i może działać, ale wcale nie musi i nie ma
gwarancji, że w pewnym momencie się z tego powodu nie wysypie.
Stąd mam kilka pytań do osób trochę lepiej obeznanych z tą platformą:
1) Czy Arduino Core dla ESP8266 też jest dotknięte tą przypadłością?
Jest ono zaledwie nakładką na oficjalne SDK, czy też ktoś przeportował
standardowe biblioteki uwzględniając tę kwestię i można bezpiecznie
używać snprintf()?
Niby nie przepadam szczególnie za Arduino, ale to byłoby jakimś
argumentem...
2) Czy istnieje jakiś prosty sposób na uniknięcie tego problemu, przy
jednoczesnym korzystaniu z os_sprintf()? Czy też jedynym wyjściem jest
wcześniejsze sprawdzanie długości wszystkich elementów składowych,
wpisywanych?
Następne wpisy z tego wątku
- 24.07.17 09:07 slawek
- 24.07.17 11:49 Marek
- 24.07.17 14:08 Atlantis
- 24.07.17 14:58 J.F.
- 24.07.17 19:24 Jakub Rakus
- 24.07.17 20:13 wół, wół roboczy, wół dojno roboczo obronny 'POPIS/EU
- 25.07.17 07:38 slawek
- 25.07.17 12:59 Atlantis
- 25.07.17 13:03 s...@g...com
- 25.07.17 17:26 wół, wół roboczy, wół dojno roboczo obronny 'POPIS/EU
Najnowsze wątki z tej grupy
- [OT] Wycinanie pianki kostkowej / szesciennej
- Alarm do lodówki
- Poczta Polska na Discord-zie
- Aku do UPS
- czy ludzie przestali słuchać muzyki?
- zabawa czatem :)
- Modernizacja instalacji elektrycznej w wielkiej płycie
- Co to za dziwne "białe namioty" co stawiają je w różnych dziwnych miejscach?!?
- RF-Harvester
- jest taki kryzys panie
- Francuska elektrownia atomowa zamknięta. Powodem "nieprzewidywalny" rój meduz
- Lutowanie linek szczotek węglowych w silniku odkurzacza
- Lutowalność połączeń
- mini 400 atari
- Manipulator Satel CA-10-KLED -- CLK, DATA, i... dupa
Najnowsze wątki
- 2025-08-25 "Wrzenie w sieci" czyli co dziennikarzyny wypisać potrafią NIEKARALNIE?
- 2025-08-25 Białystok => Programista Delphi <=
- 2025-08-25 Warszawa => International Freight Forwarder <=
- 2025-08-25 Warszawa => Specjalista/tka ds. Administracji <=
- 2025-08-25 Warszawa => Asystent ds. Sprzedaży i Rozwoju Klienta <=
- 2025-08-25 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-08-25 [OT] Wycinanie pianki kostkowej / szesciennej
- 2025-08-25 Warszawa => Inżynier oprogramowania .Net <=
- 2025-08-25 Warszawa => Strategic Account Manager <=
- 2025-08-24 Co może grozić myśliwemu?
- 2025-08-24 Googlepay a Paypal w PL
- 2025-08-24 Czy hymn i flaga Rosji (Ukraina) będą podlegać takiej ochronie "sportowej" jak Izraelskie (Strefa Gazy)?
- 2025-08-23 Liczą się Fakty!
- 2025-08-23 Nadmuch klimatyzacji
- 2025-08-23 Alarm do lodówki