Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: [C]gets() pericoloso

  1. #1

    [C]gets() pericoloso

    Ho posto questa domanda in alcuni Ng ma senza ottenere risposta, provo anche qui.

    Utilizzando la funzione gets() spesso il compilatore gcc mi da un warning così: "gets function is dangerous and should not be used"

    Secondo voi quali sono le maggiori pericolosità nell'uso di gets?

    Topolin, Topolin, viva Topolin!

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    io non lavoro in c, cmq ti posso dire che spesso gli avvisi rilasciati dal compilatore possono essere "faziosi" nel senso che non identificano dei warning reali. Questo dipende dal tipo e versione del complatore che si sta usando, dal tipo di impostazioni predefinite, se predilige una ottimizzazione piuttosto che un'altra e via dicendo.

    Almeno così mi sembra di aver letto.



  3. #3
    Bè gcc dovrebbe darlo a chiunque lo utilizza, non ho fatto particolari configurazioni. E comunque se lo scrive qualcosa vorrà dire, ma aparte il buffering non mi viene in mente nulla.

    Topolin, Topolin, viva Topolin!

  4. #4
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da Al è qui
    Bè gcc dovrebbe darlo a chiunque lo utilizza, non ho fatto particolari configurazioni. E comunque se lo scrive qualcosa vorrà dire, ma aparte il buffering non mi viene in mente nulla.
    infatti, ma potrebbe essere pure legato alla memoria RAM che ha la macchina che sta compilando...

    ma fami capire, dopo quel warning lui non ti compila perchè non può includere la funzione o compila correttamente?

  5. #5
    Originariamente inviato da darkblOOd


    infatti, ma potrebbe essere pure legato alla memoria RAM che ha la macchina che sta compilando...

    ma fami capire, dopo quel warning lui non ti compila perchè non può includere la funzione o compila correttamente?
    No no compila correttamente.

    Topolin, Topolin, viva Topolin!

  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da McAuriel V
    è plausibile invece che lui si metta in testa che possa verificarsi un buffer overflow se durante cicli, iterazioni o controlli qualche indice sfora dal suo range?
    questo lo può dire solo un testing sul programma compilato...

    come già detto (visto che Al conferma la compilazione a buon fine) molti libri dicono esplicitamente che i compilatori rilasciano warnig che possono essere tranquillamente non presi in considerazione. Alcuni sono configurati in modo da rilasciare avvisi come warning per i programmatori novelli o solo per avere un resoconto più dettagliato della fase di compilazione.

    Appena posso ti posto uno spaccato del libro in questione (McGraw Hill, non ricordo ne il titolo ne l'autore) per rendere + chiaro ciò che intendo dire.

  7. #7
    Originariamente inviato da McAuriel V
    è plausibile invece che lui si metta in testa che possa verificarsi un buffer overflow se durante cicli, iterazioni o controlli qualche indice sfora dal suo range?
    Non credo, ti spiego, stavo provando un nuovo portatile e per vedere se era tutto ok ho scritto due righe con gets() e strcpy giusto per vedere che faceva.
    Lì mi da questo warning.

    Incuriosito ho riprovato su un altro che uso da tempo e mi ha dato lo stesso warning.

    I programmi vanno tranquillamente, ma vorrei sapere da dove salta fuori questo warning di cui mai mi sono accorto.

    Topolin, Topolin, viva Topolin!

  8. #8

    gets()

    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...
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  9. #9

    Re: gets()

    Originariamente inviato da Luc@s
    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...
    Quindi solo quelli classici di gets(). Niente di particolare rispetto l'utilizzo fatto?

    Topolin, Topolin, viva Topolin!

  10. #10

    Re: Re: gets()

    Originariamente inviato da Al è qui


    Quindi solo quelli classici di gets(). Niente di particolare rispetto l'utilizzo fatto?
    basta usare fgets():adhone:
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.