int
md5_crypt_verify(const Port *port, const char *user, const char *pgpass)
{
- char *passwd,
- *valuntil,
+ char *passwd = NULL,
+ *valuntil = NULL,
*crypt_pwd;
int retval = STATUS_ERROR;
List **line;
-
+ List *token;
+
if ((line = get_user_line(user)) == NULL)
return STATUS_ERROR;
- passwd = lfirst(lnext(lnext(*line)));
- valuntil = lfirst(lnext(lnext(lnext(*line))));
-
+ /* Skip over line number and username */
+ token = lnext(lnext(*line));
+ if (token)
+ {
+ passwd = lfirst(token);
+ token = lnext(token);
+ if (token)
+ valuntil = lfirst(token);
+ }
+
if (passwd == NULL || *passwd == '\0')
{
if (passwd)
AbsoluteTime vuntil,
current;
- if (!valuntil || strcmp(valuntil, "\\N") == 0)
+ if (!valuntil)
vuntil = INVALID_ABSTIME;
else
vuntil = DatumGetAbsoluteTime(DirectFunctionCall1(nabstimein,
while (c != EOF && c != '\n' &&
(!isblank(c) || in_quote == true))
{
- if (c == '"')
- in_quote = !in_quote;
-
/* skip comments to EOL */
if (c == '#' && !in_quote)
{
break;
/* Literal double-quote is two double-quotes */
- if (c == '"')
+ if (in_quote && c == '"')
was_quote = !was_quote;
else
was_quote = false;
+ if (c == '"')
+ in_quote = !in_quote;
+
c = getc(fp);
}