sprintf

Pavel Hudecek edizon na seznam.cz
Čtvrtek Listopad 3 18:05:24 CET 2016


Takže pokud to dobře chápu, kdybych si psal vlastního správce paměti, tak jí 
nesmí jen tak celou přidělovat, musí si ji alokovat přes malloc, ale ne 
celou, aby zbyl kousek na režiji sprintf, případně jiných funkcí.

PH

-----Původní zpráva----- 
From: Jiří Nesvačil
Funkce typu printf potrebuji buffer na formatovaci hodnoty napriklad " cislo 
je %ld". Uvnitr je to vetsinou implementovano, ze se to %ld propere pres 
nejaky buffer a universalni funkci na prevod na cislo. Ten buffer je ta 
zajimavost.


Dne 3. 11. 2016 v 17:10 Pavel Hudecek napsal(a):
> včera jsem se tu dozvěděl o "nebezpečnosti" sprintf. Abych si to ujasnil, 
> tak doplňující otázky:
>
> 1. Ta nebezpečnost spočívá jen v možnosti přetečení výsledku mimo buffer, 
> pokud byla jeho velikost programátorem podceněna, či formátovací string 
> nebyl ukončen? Tzn. nejedná se o žádnou speciální nebezpečnost této fn a 
> je prostě třeba si dávat stejný pozor, jako při jakékoli jiné práci s 
> poli?
>
> 2. Nebo je nebezpečnost o něco větší a hrozí, že se ta fn někdy nějak 
> zblázní a vyprodukuje nesmyslně více dat? Tzn. řešením je jedině nahrazení 
> verzí s N?
>
> 3. Nebo je nebezpečná nějak jinak a ani N to nezachrání? Pokud ano, týká 
> se to i printf?
>
> 4. Co je za problém s sprintf a thready? Týká se to i printf (kromě 
> očekávatelného problému, že by se mohl pohádat o výstupní zařízení s jiným 
> threadem)? 



Další informace o konferenci Hw-list