Dans les versions libc4 et libc5, le message n'est pas affiché sur
/dev/tty
mais sur
stderr.
De plus, si
/dev/tty
ne peut être ouvert, le mot de passe est lu depuis
stdin.
Le tampon statique a une longueur de 128 octets,
aussi seulement 127 carctères du mot de passe sont renvoyés.
Durant la lecture, les signaux
(SIGINT,
SIGQUIT,
SIGSTOP)
sont désactivés et les caractères de contrôle correspondants
(en général Ctrl-C, Ctrl-\, Ctrl-Z et Ctrl-Y) sont transmis
comme partie intégrante du mot de passe.
Depuis la libc5.4.19, l'édition de ligne est également désactivée, ainsi
les retours en arrières etc. seront présents dans le mot de passe.
Pour la glibc2, si
/dev/tty
ne peut pas être ouvert, le message est envoyé sur
stderr
et le mot de passe lu sur
stdin.
Il n'y a pas de limite à la longueur du mot de passe.
L'édition de ligne n'est pas désactivée.
D'après SUSv2, la valeur de
PASS_MAX
doit être définie dans
<limits.h>
au cas où elle est inférieure à 8, et doit être toujours accessible avec
sysconf(_SC_PASS_MAX).
Quoiqu'il en soit, POSIX.2 retire les constantes
PASS_MAX
et
_SC_PASS_MAX,
ainsi que la fonction
getpass().
libc4 et libc5 n'ont jamais utilisé
PASS_MAX
ou
_SC_PASS_MAX.
glibc2 accepte
_SC_PASS_MAX
et renvoie
BUFSIZ
(par exemple 8192).