GETPASS(3)

 .

NOME
getpass - obtém uma senha

SINÓPSE
#include <unistd.h>

char *getpass( const char * prompt );

DESCRIÇÃO
Esta função está obsoleta. Não a utilize.

A função getpass() abre /dev/tty (o terminal de controle do processo), escreve a string prompt, desabilita o eco, lê uma linha (a "senha"), restaura o estado do terminal e fecha /dev/tty novamente.

VALORES RETORNADOS
A função getpass retorna um ponteiro para um buffer estático contendo (primeiros PASS_MAX bytes de) a senha terminada por um NUL, sem o caractere nova linha no final. Este buffer pode ser sobrescrito por uma chamada subseqüente. No erro, o estado do terminal é restaurado. errno é selecionado adequadamente, e NULO é retornado.

ERROS
A função pode falhar se

ENXIO
    O processo não possui um terminal de controle.

NOTAS
Para libc4 e libc5, o prompt não é escrito para /dev/tty mas para stderr. Além disso, se /dev/tty não pode ser aberto, a senha é lida de stdin. O buffer estático possui tamanho 128 de forma que apenas os primeiros 127 bytes da senha são retornados. Durante a leitura da senha, a geração de sinais (SIGINT, SIGQUIT, SIGSTOP, SIGTSTOP) é desativada e os caracteres correspondentes (geralmente control-C, control-\, control-Z e control-Y) são transmitidos como parte da senha. Desde a libc 5.4.19 também a edição de linha está desativada, para que também o backspace e caracteres semelhantes a ele sejam vistos como parte da senha.

Para glibc2, se /dev/tty não pode ser aberto, o prompt é gravado para stderr e a senha é lida de stdin. Não há limite no tamanho da senha. Edição de linha não está desativada.

De acordo com SUSv2, o valor de PASS_MAX deve estar definido em <limits.h> no caso de ser menor que 8, e pode em qualquer caso ser obtido usando sysconf(_SC_PASS_MAX). Entretando, POSIX.2 retira a constante PASS_MAX e _SC_PASS_MAX, e a função getpass (). Libc4 e libc5 nunca suportaram PASS_MAX ou _SC_PASS_MAX. Glibc2 aceita _SC_PASS_MAX e retorna BUFSIZ (ou seja, 8192).

ARQUIVOS
/dev/tty

VEJA TAMBÉM
crypt(3)

HISTÓRICO
Uma função getpass aareceu no Version 7 AT&T UNIX.

PROBLEMAS
O processo solicitante deveria zerar a senha tão cedo possível para evitar que a senha em claro fique visível no espaço de enderaçamento do processo.

TRADUZIDO POR LDP-BR em 28/05/2001.

  Tradução:
Felipe M Pereira <Felipe.Pereira@ic.unicamp.br>

  Revisão.:
André Luiz Fassone <lonely_wolf@ig.com.br>