Hangi fonksiyonları C standart kütüphane genellikle kötü uygulamaya teşvik? | Netgez.com
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

  • LiveForGodsKingdom

    LiveForGodsK

    6 NÄ°SAN 2008
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008
  • Thom Hall

    Thom Hall

    24 Kasım 2006