--- bin/pg_passwd/pg_passwd.c.orig Sat Jan 31 19:09:26 1998 +++ bin/pg_passwd/pg_passwd.c Sat Jan 31 19:15:43 1998 @@ -23,12 +23,16 @@ #endif +#ifndef _POSIX_SOURCE +# define _PASSWORD_LEN 128 /* max length, not containing NULL */ +#endif + char *comname; void usage(FILE *stream); void read_pwd_file(char *filename); void write_pwd_file(char *filename, char *bkname); -void encrypt_pwd(char key[9], char salt[3], char passwd[14]); -int check_pwd(char key[9], char passwd[14]); +void encrypt_pwd(char key[9], char salt[3], char passwd[_PASSWORD_LEN+1]); +int check_pwd(char key[9], char passwd[_PASSWORD_LEN+1]); void prompt_for_username(char *username); void prompt_for_password(char *prompt, char *password); @@ -148,7 +152,7 @@ if (q != NULL) *(q++) = '\0'; - if (strlen(p) != 13) + if (strlen(p) > _PASSWORD_LEN) { fprintf(stderr, "WARNING: %s: line %d: illegal password length.\n", filename, npwds + 1); @@ -208,7 +212,7 @@ } void -encrypt_pwd(char key[9], char salt[3], char passwd[14]) +encrypt_pwd(char key[9], char salt[3], char passwd[_PASSWORD_LEN+1]) { int n; @@ -242,9 +246,9 @@ } int -check_pwd(char key[9], char passwd[14]) +check_pwd(char key[9], char passwd[_PASSWORD_LEN+1]) { - char shouldbe[14]; + char shouldbe[_PASSWORD_LEN+1]; char salt[3]; salt[0] = passwd[0]; @@ -252,7 +256,7 @@ salt[2] = '\0'; encrypt_pwd(key, salt, shouldbe); - return strncmp(shouldbe, passwd, 13) == 0 ? 1 : 0; + return strncmp(shouldbe, passwd, _PASSWORD_LEN) == 0 ? 1 : 0; } void @@ -326,7 +330,7 @@ char salt[3]; char key[9], key2[9]; - char e_passwd[14]; + char e_passwd[_PASSWORD_LEN+1]; int i; comname = argv[0];