GNU/Linux >> Linux Esercitazione >  >> Linux

Che senso ha usare la macro linux access_ok()

Se __lddk_copy_from_user() chiama semplicemente copy_from_user() , quindi il access_ok() i controlli sono ridondanti, perché copy_from_user() esegue personalmente questi controlli.

Il access_ok() i controlli assicurano che l'applicazione dello spazio utente non chieda al kernel di leggere o scrivere negli indirizzi del kernel (sono un controllo di integrità/sicurezza). Solo perché un puntatore è stato fornito dallo spazio utente non significa che sia sicuramente un puntatore dello spazio utente - in molti casi "puntatore del kernel" significa semplicemente che sta puntando all'interno di una particolare regione dello spazio degli indirizzi virtuali.

Inoltre, chiamando access_ok() con VERIFY_WRITE implica VERIFY_READ , quindi se controlli il primo non è necessario controllare anche il secondo.

A partire da questo commit nel 2019, access_ok() non ha più il type argomento, quindi VERIFY_WRITE contro VERIFY_READ il punto è discutibile.


Linux
  1. Qual è lo scopo del file .bashrc in Linux

  2. Qual è la definizione di una sessione in Linux?

  3. Qual è lo scopo di crittografare la home directory?

  4. Cosa impedisce alle distribuzioni di utilizzare l'ultimo kernel Linux?

  5. Qual è l'overhead dell'utilizzo di subshell?

Usando il comando gratuito di Linux

Cos'è il comando Linux Watch + Esempi

Che cos'è la shell in Linux?

Tutorial sull'uso del comando Timeout su Linux

Qual è il comando kill in Linux?

Come determinare cosa sta utilizzando più spazio su disco su un server Linux?