|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
Problema con gets e gcc
In Linux quando compilo con il Gcc se è inclusa la funzione "gets" compila ma mi avverte "the `gets' function is dangerous and should not be used.", qualcuno saprebbe indicarmene il motivo?
Cioè, perchè "gets" sarebbe pericolosa quando vedo che viene consigliata da tutti i manuali? O è un problema solo per il Gcc?
__________________
Gnu/Linux User ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
La gets può provocare buffer overflow...
In caso in cui il programma che usa la gets venga lanciato da un utente con molti permessi, ma venga usato da altri...inviando un numero di byte in ingresso superiore alla dimensione del buffer di ricezione della gets si può eseguire codice potenzialmente pericoloso slla macchina... Tutto ciò che va oltre la dimensione del buffer infatti potrebbe essere visto dalla macchina come codice eseguibile e quindi si possono avere notevoli problemi di sicurezza... |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Le gets è un buco nero per la sicurezza.
Ok per usarla nei programmi di studio, ma mai usarla nei programmi da distribuire (sostituirla con fgets)
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
Quote:
ok ma fgets......in che differisce?
__________________
Gnu/Linux User ![]() |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
man fgets
![]()
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
Quote:
![]()
__________________
Gnu/Linux User ![]() |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Differisce sulla possibilità di limitare la grandezza del buffer tramite un parametro passato... In questo modo ovviamente si evita l'overflow del buffer...
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Jan 2001
Città: California
Messaggi: 7174
|
Quote:
|
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Perchè è nello standard base del C...
A me la strtok piace molto...la trovo di una utilità estrema... |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Jan 2001
Città: California
Messaggi: 7174
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Jan 2001
Città: California
Messaggi: 7174
|
Quote:
![]() ![]() Scusa non e' che potresti leggere gli ultimi msg del mio mega thread sulle "domandine semplici sul C" e darmi una dritta sul mio ultimo problema? Penso che ilsensine sia via e/o si sia rotto di rispondermi (avrebbe anche ragione... ![]() Thanx Cimmo |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:51.