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

  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009
  • Pepsi

    Pepsi

    1 Kasım 2005
  • stewmurray47

    stewmurray47

    1 Kasım 2006