Quanto è utile/interessante questa discussione:
Autore |
Discussione |
|
dallolio_gm
Moderatore
Prov.: Bo!
Città: Barcelona/Bologna
2445 Messaggi |
Inserito il - 18 gennaio 2006 : 00:08:57
|
ok e' una stupidaggine e io non me ne intendo.. ma ho visto che c'e' una 'gets' nel codice di clustalw! Nn e' una di quelle funzioni da non usare mai per nessun motivo al mondo? Si trova a linea 2179 di interface.c (ce ne sono altre). Dovrebbe servire per prendere in input il nome del file di output, e che dovrebbe contenere un array di 256 caratteri, ma visto che si usa una gets, questo non avviene. Ma se ne metto di piu' cosa succede esattamente? La variabile dichiarata subito dopo e' un prompt..
|
Il mio blog di bioinformatics (inglese): BioinfoBlog Sono un po' lento a rispondere, posso tardare anche qualche giorno... ma abbiate fede! :-) |
|
|
chick80
Moderatore
Città: Edinburgh
11491 Messaggi |
Inserito il - 18 gennaio 2006 : 00:45:03
|
Diciamo che gets è una funzione da usare con molta cautela.
gets legge da stdin fino al primo /0 o /r e quindi può restituire una stringa di lunghezza variabile. Sta a te allocare memoria a sufficienza per contenerla. Molto meglio usare fread a mio parere. (o cin se usi C++) Se oltrepassi il limite dei 256 bytes allocati per la variabile, potresti avere memory leaks che possono: a) far crashare il tutto quando metti il nome del file b) far crashare il tutto in un secondo momento quando vai ad accedere alla zona di memoria oltre i 256 bytes c) se il programma gira su un server un 'malicious user' potrebbe sfruttare questi memory leaks a suo vantaggio.
Vedo cmq che nel form sul web il campo x il nome file e' limitato a 50 caratteri, non ho idea di come sia fatto il software che scarichi. |
Sei un nuovo arrivato? Leggi il regolamento del forum e presentati qui
My photo portfolio (now on G+!) |
|
|
dallolio_gm
Moderatore
Prov.: Bo!
Città: Barcelona/Bologna
2445 Messaggi |
Inserito il - 18 gennaio 2006 : 18:31:32
|
Gia', il problema e' che gets non controlla la lunghezza della stringa che viene inserita! Questo vuol dire che se l'utente inserisce un numero di caratteri eccessivo, questi vanno a finire fuori dalla area di memoria riservata. Provare per credere! Mi era sembrato strano di vedere una cosa del genere in un software cosi' utilizzato.. e' che ho sentito dire che e' un errore piuttosto pericoloso. Dai, quando apriamo un blog di sicurezza bioinformatica? |
Il mio blog di bioinformatics (inglese): BioinfoBlog Sono un po' lento a rispondere, posso tardare anche qualche giorno... ma abbiate fede! :-) |
|
|
|
Discussione |
|
|
|
Quanto è utile/interessante questa discussione:
MolecularLab.it |
© 2003-18 MolecularLab.it |
|
|
|