PDA

View Full Version : Problema con gets e gcc


Luc@s
30-10-2002, 05:53
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?

cionci
30-10-2002, 07:50
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...

ilsensine
30-10-2002, 12:40
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)

Luc@s
30-10-2002, 13:31
Originariamente inviato da ilsensine
[B]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)


ok ma fgets......in che differisce?

ilsensine
30-10-2002, 13:41
man fgets ;)

Luc@s
30-10-2002, 14:09
Originariamente inviato da ilsensine
[B]man fgets ;)



:)

cionci
30-10-2002, 14:28
Differisce sulla possibilità di limitare la grandezza del buffer tramite un parametro passato... In questo modo ovviamente si evita l'overflow del buffer...

Cimmo
30-10-2002, 14:35
Originariamente inviato da ilsensine
[B]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)
Allora non capisco se differisce di solo un parametro e se soprattutto e' pericolosa per la sicurezza perche' la continuano a supportare? Cosi' come la strtok...non ha fatto che darmi dei problemi, problemi che sono spariti quando ho smesso di usarla! Ma perche' le fanno io mi chiedo...

cionci
30-10-2002, 15:02
Perchè è nello standard base del C...

A me la strtok piace molto...la trovo di una utilità estrema...

Cimmo
30-10-2002, 15:10
Originariamente inviato da cionci
[B]Perchè è nello standard base del C...

A me la strtok piace molto...la trovo di una utilità estrema...
Si usa un buffer suo interno, cambia le variabili che gli passi e soprattutto non puoi usarla annidata cioe' se mentre stai usando la strtok, vuoi riusarla all'interno di un token non puoi per lo stesso motivo che usa il buffer interno. Mi dava un sacco di segmentation fault, poi ho trovato un str.h fatto da un tipo (su Programmers Heaven) che fa molte piu' cose ed e' piu' pulito...te lo posto magari ti puo' servire ;)

cionci
30-10-2002, 15:17
Originariamente inviato da Cimmo
[B]Si usa un buffer suo interno, cambia le variabili che gli passi e soprattutto non puoi usarla annidata cioe' se mentre stai usando la strtok, vuoi riusarla all'interno di un token non puoi per lo stesso motivo che usa il buffer interno.
Lo so...te l'ho detto io ;)

Cimmo
30-10-2002, 15:23
Originariamente inviato da cionci
[B]
Lo so...te l'ho detto io ;)
Uh che sbadato non me lo ricordavo :D pero' rimane che fa delle schifezze dai, da quando ho smesso di usarla come ti ho detto, sono finiti i miei problemi...almeno per quanto riguarda le stringhe :D
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...:D)

Thanx
Cimmo