SORU
8 Temmuz 2015, ÇARŞAMBA


Neden tek bir bağımsız değişken (dönüşüm belirteçleri) itiraz ile, basit bir beşgen kullanmaktır.

Okuduğum bir kitapta, tek bir bağımsız değişken (dönüşüm belirteçleri) printf önerilmiyor yazıyor. Yerine bunu önerir

printf("Hello World!");

ile

puts("Hello World!");

ya

printf("%s", "Hello World!");

Biri printf("Hello World!"); yanlış olduğunu bana söyleyebilir mi? Güvenlik açıkları içeren kitapta şöyle yazılmıştır. Bu güvenlik açıkları nelerdir?

CEVAP
8 Temmuz 2015, ÇARŞAMBA


printf("Hello World!"); savunmasız IMHO ama bu göz önünde bulundurun:

const char *str;
...
printf(str);

Eğer str olur göstermek için bir dize içeren %s biçim belirteçleri, programınız olacak sergi tanımsız davranış (çoğunlukla kazası), oysa puts(str) sadece görüntü dizesi gibi.

Örnek:

printf("%s");   //undefined behaviour (mostly crash)
puts("%s");     // displays "%s"

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bombjack2991

    bombjack2991

    29 HAZİRAN 2008
  • FailArmy U

    FailArmy U

    29 AĞUSTOS 2009
  • undrmyumbrellaa

    undrmyumbrel

    25 Temmuz 2012