-
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
- bezpiecznik DC
- zasilanie fleksy z samochodu
- Dlaczego w Polsce sie nic nie udaje, na przykładzie niebieskiego lasera a teraz perskowitów
- Wykrywanie przerwy w długim przewodzie zakopanym w ziemi.
- Czemu news.chmurka.nwt jest taki wolny?
- Peltier
- A jednak nie kondensatory
- Re: A jednak nie kondensatory
- odzysk z panela PV
- tuner i silnik od rolety
- Przednia lampka rowerowa Basta / AXA pod dynamo w piaście
- Boję siię capa...
- Efekt gitarowy koda kd-30 trash metal
- Re: Efekt gitarowy koda kd-30 trash metal
- Wykrywanie przerwy w długim przewodzie zakopanym w ziemi.
Najnowsze wątki
- 2024-06-13 Jak sklonowac karte pamieci na wieksza?
- 2024-06-12 szukanie żony
- 2024-06-12 Kamera - co obecnie tanie i dobre?
- 2024-06-12 Re: czyszczenie Cepiku
- 2024-06-11 Re: czyszczenie Cepiku
- 2024-06-11 Re: czyszczenie Cepiku
- 2024-06-12 bezpiecznik DC
- 2024-06-12 zasilanie fleksy z samochodu
- 2024-06-12 Laptop 7" mocniejszy niż eeepc
- 2024-06-13 dostałem sms
- 2024-06-13 Łomża => ERP Implementer <=
- 2024-06-13 Katowice => Administrator IT - Virtualization and Containerization <=
- 2024-06-13 Warszawa => Business Unit Manager (Recruitment Business) <=
- 2024-06-13 Gdańsk => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-06-13 Warszawa => Key Account Manager <=