NOMBRE¶
getpass - obtiene una contraseña
SINOPSIS¶
#include <unistd.h>
char *getpass( const char * prompt );
DESCRIPCIÓN¶
Esta función está obsoleta. No la utilice.
La función
getpass() abre el fichero
/dev/tty (la terminal
de control del proceso), escribe la cadena
prompt, desactiva el eco,
lee una linea (la "contraseña"), restablece el estado de la
terminal y cierra
/dev/tty de nuevo.
VALOR DEVUELTO¶
La función
getpass devuelve un puntero a un buffer estático
que contiene (los primeros PASS_MAX bytes de) la contraseña sin el
carácter nueva línea, terminada en NUL. Este buffer puede ser
sobreescrito por una llamada posterior. En caso de error, el estado de la
terminal se restablece, se pone un valor adecuado en
errno , y se
devuelve NULL.
ERRORES¶
La función puede fallar si
- ENXIO
- El proceso no tiene una terminal de control.
OBSERVACIONES¶
Para libc4 y libc5, el prompt no se escribe en
/dev/tty sino en
stderr. Además, si
/dev/tty no puede abrirse, la
contraseña es leída de
stdin. El buffer estático
tiene de longitud 128 por lo que solamente se devuelven los primeros 127 bytes
de la contraseña. Mientras se lee la contraseña, la
generación de señales (SIGINT, SIGQUIT, SIGSTOP, SIGTSTOP) es
desactivada y los carácteres correspondientes (normalmente control-C,
control-\, control-Z y control-Y) son transmitidos como parte de la
contraseña. A partir de la versión 5.4.19 de libc también
se ha deshabilitado la edición de la linea, así que
también el espacio será visto como parte de la
contraseña.
Para glibc2, si
/dev/tty no puede abrirse, el prompt se escribe en
stderr y la contraseña es leida de
stdin. No hay
límite en la longitud de la contraseña. La edición de la
línea no está deshabilitada.
Según el estándar SUSv2, el valor de PASS_MAX debe estar definido
en
<limits.h> en caso de que sea menor que 8, y puede ser
obtenido en cualquier caso usando
sysconf(_SC_PASS_MAX). Sin embargo,
retira las constantes PASS_MAX y _SC_PASS_MAX, y la función
getpass
(). Libc4 y libc5 no han soportado nunca PASS_MAX ni _SC_PASS_MAX. Glibc2
acepta _SC_PASS_MAX y devuelve BUFSIZ (p.e., 8192).
FICHEROS¶
/dev/tty
VÉASE TAMBIÉN¶
crypt(3)
HISTORIA¶
Una función
getpass apareció en AT&T UNIX
Versión 7.
FALLOS¶
El proceso que llama a esta función debería poner a cero todos los
caracteres de la contraseña tan pronto como le fuera posible para
evitar dejar la contraseña sin cifrar visible en el espacio de
direcciones del proceso.