-
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
- Propagation velocity v/c dla kabli RF
- Jakie natynkowe podwójne gniazdo z bolcem (2P+PE)
- Czujnik nacisku
- Protoków komunikacyjny do urządzenia pomiarowego
- Hiszpania bez pradu
- amperomierz w plusie
- 3G-nadal działa
- Historia pewnego miernika kalibratora
- Ustym 4k Pro i wyświetlacz
- Czemu rozwaliło celę?
- Wojna w portfelu
- Jaki trojfazowy licznik tuya lub podobny?
- Problem z dekoderem adresów
- Intel się wyprzedaje: po 10latach pchnęli pakiet kontrolny Altery za 1/4 kwoty zakupu
- Korekcja perspektywy
Najnowsze wątki
- 2025-05-10 powąchaj instrybutor
- 2025-05-10 Prawomocny wyrok. Rowerzysta nie ma pierwszeństwa, dojeżdżając do przejazdu
- 2025-05-09 Propagation velocity v/c dla kabli RF
- 2025-05-09 Warszawa => Senior Node.js Developer (doświadczenie z framework Nest.
- 2025-05-09 Patrolowanie kampusów
- 2025-05-09 Faktyczne opodatkowanie medianowej płacy w Polsce wyniosło 39,4% w lis. 2024r.
- 2025-05-09 Coca-Cola robi butelki z recyklingu, ale nie etykiety ani zakrętki
- 2025-05-09 Faktyczne opodatkowanie medianowej płacy w Polsce wyniosło 39,4% w lis. 2024r.
- 2025-05-09 ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- 2025-05-09 Gdańsk => PHP Developer <=
- 2025-05-09 Warszawa => Programista C <=
- 2025-05-09 Kiero od deregulacji III Rzeczy (pospolitej) w zaciąga kredyt w 17 bankach by ratować prywatny biznes
- 2025-05-09 Kiero od deregulacji III Rzeczy (pospolitej) w zaciąga kredyt w 17 bankach by ratować prywatny biznes
- 2025-05-09 ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- 2025-05-09 Gliwice => Business Development Manager - Network and Network Security