[so] Warning-uri si alte probleme

Lucian Adrian Grijincu lucian.grijincu at gmail.com
Sun Nov 25 02:19:07 EET 2007


On Nov 25, 2007 1:29 AM, Dan Badea <dan.badea at microsoft-lab.pub.ro> wrote:
>
>
> Nu stiu despre altii, dar eu nu am invatat in facultatea asta despre alte
> functii de concatenare decat strcat asa ca nu am de gand sa folosesc altele
> pentru teme.

Disclaimer: eu am citit pana aici si mie mi-e de ajuns.
Eu nu am invatat la facultate de strcat. Am avut nevoie de functia
asta cand imi faceam temele, dar nu mi-a "predat-o" nimeni. Dupa
atitudinea ta as zice ca nu prea stii ce-i aia buffer-overrun si de ce
e asta o sursa canonica de vulnerabilitati care duc la exploituri
(impreuna cu prietenii de cataramă strcpy, gets, ș.a.).

Iti recomand cartea asta: http://www.microsoft.com/mspress/books/8753.aspx
Dupa adresa ta de email presupun ca faci parte din stafful
laboratorului Microsoft, si presupun ca poti face rost de cartea asta
fara sa cheltui vre-un ban.

Atitudinea asta: "n-am mai facut asa ceva, asa ca n-o sa fac acum, who
are you to tell me what to do?" nu e foarte sanatoasa on the long run.
Daca cineva iti spune ca s-ar putea sa gresesti și țipă la tine (in
cazul asta compilatorul de la Microsoft) ar trebui sa te intrebi daca
are dreptate si daca chiar exista o problema in codul tau. In loc sa
stai sa scrii mesajul asta puteai sa stai cateva minute sa cauti pe
net sa vezi de ce e strcat considerata "bad practice".

Chiar warning-ul respectiv iti recomanda functia strcat_s
http://msdn2.microsoft.com/en-US/library/d45bbxx4(VS.80).aspx
aici aici si un model de utilizare:

char buf[16];
strcpy_s(buf, 16, "Start");
strcat_s(buf, 16, " End");               // Correct
strcat_s(buf, 16 – strlen(buf), " End"); // Incorrect

Mai exista o varianta imbunatatita a lui strcat: strncat.
strcpy are si el un văr imbunatatit, strncpy.

Make them your friends :)


-- 
Lucian


More information about the so mailing list