Talvez, a fonte atual para linux-pam mostre o código que usa um buffer de 1024 caracteres, por exemplo: em modules/pam_env/pam_env.c
#define BUF_SIZE 1024
...
_parse_config_file(pam_handle_t *pamh, int ctrl, const char *file)
{
int retval;
char buffer[BUF_SIZE];
...
while (( retval = _assemble_line(conf, buffer, BUF_SIZE)) > 0) {
e outro código que usa getline
sem limite. Você provavelmente correu para um caminho de código que usa um dos buffers de 1024 caracteres.
Também existem outras implementações do PAM (OpenPAM) que podem diferir novamente.