SORU
3 Ocak 2011, PAZARTESİ


Hangi fonksiyonları C standart kütüphane genellikle kötü uygulamaya teşvik?

Bu ilham tarafından this question ve yorum belirli bir cevap olduğunu öğrendiğim strncpy Bir çok güvenli dize işleme işlevini C ve balataları sıfır, kadar ulaşır n, başka bir şey bilmiyorsun.

Özellikle, R.. alıntı

-sonlandırma boş yok strncpy ve -pad null tüm kalan yok hedef tampon, zaman kaybı. Çalışabilirsiniz eski etrafında kendi ekleyerek doldurma, ama ikincisi değil null. Bu asla "güvenli olarak kullanmak için tasarlanmıştır dize" işlevi, ama kullanım sabit boyutlu çalışma Unıx alanları dizin tablo ve veritabanı dosyaları. snprintf(n)", src) s "�st doğru "standart" güvenli strcpy sadece C ama çok yavaş olabilir. Bu arada, kendisi kesilme olabilir büyük bir hata olması ve bazı durumlarda olabilir ayrıcalık yükselmesine sebep olur, ya da DoS atma "string fonksiyonları" güvenli bir sorun çıktı kesecek. bunu yapmak için başka bir yol "" ya da güvenli ""güvenli Bunun yerine, emin olmalısınız hedef tampon olduğunu sağ boyutu ve basit kullanımı strcpy (veya memcpy eğer biliyorsanız da daha iyisi, dize uzunluğu kaynak).

Ve Jonathan Leffler

Bu not strncat() bile daha fazla. arayüzü kafa karıştırıcı daha bu tam olarak ne anlama strncpy - uzunluğu değişken, yine mi? Ne değil mi tedarik neye dayanarak beklediğiniz () strncpy vb - daha fazla hata yani hatta daha eğilimli strncpy(). Kopyalama dizeleri etrafında, giderek ediyorum olduğu görüşünü güçlü sadece hedef gereken argüman() her zaman tüm boyutlarını biliyorum çünkü vaktinden önce ve var emin olun yeterli zaman öncesinde. Kullanın () hedef herhangi bir tercih () strcpy, strcat () ve strncpy(), () strncat, memcpy().

Yani, açıkça standart C kitaplığı biraz paslanmışım. Bu nedenle şu soruyu sormak istiyorum:

Standart kütüphane fonksiyonları uygunsuz///kod hataları/verimsizlikleri güvenlik sorunlarına yol neden olabilecek şekilde kullanılır C?

Objektiflik adına, bir cevap için bir dizi kriter var:

  • Eğer lütfen, eğer yapabilirseniz, kendi amacı soru yani işlevi geride tasarımı sebep cite.
  • Kodun şu anda konur kötüye vurgulamak lütfen.
  • Bu yanlış bir sorunun doğru olabilir neden devlet lütfen. Bu açık olmalı biliyorum ama yumuşak cevaplar önler.

Lütfen kaçının

  • Fonksiyonları (bu unequivocably karışıklık nedenleri hariç) adlandırma kuralları ile ilgili tartışmalar.
  • "- Tercihi Tamam, hepimizin var ama asıl beklenmeyen yan etkileri ilgileniyorum ve onlara karşı korumak için nasıl. "y x tercih ederim

Bu öznel kabul olması muhtemeldir ve kesin bir cevabı var gibi topluluk wiki hemen için işaretleme yapıyorum.

Ayrıca C99 başı olarak çalışıyorum.

CEVAP
3 Ocak 2011, PAZARTESİ


Standart kütüphane fonksiyonları uygunsuz///kod hataları/verimsizlikleri güvenlik sorunlarına yol neden olabilecek şekilde kullanılır C ?

Aşikar olanı tercih edeceğim :

char *gets(char *s);

Kısaca imkansız uygun şekilde kullanmak için onun olağanüstü çaba sarf ettiler.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FD2097

    FD2097

    21 HAZİRAN 2009
  • SalGames2016

    SalGames2016

    17 Kasım 2012
  • VOICE TV

    VOICE TV

    2 Aralık 2010