Re: Reporting hba lines

Dean Rasheed <dean.a.rasheed@gmail.com>

From: Dean Rasheed <dean.a.rasheed@gmail.com>
To: Magnus Hagander <magnus@hagander.net>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2013-01-20T16:56:53Z
Lists: pgsql-hackers
On 5 January 2013 16:58, Magnus Hagander <magnus@hagander.net> wrote:
> Attached is an updated version of the patch, per the comments from Tom
> and rebased on top of the current master. Since it's been a long time
> ago, and some code churn in the area, another round of review is
> probably a good thing...
>

I took a look at this patch, and it seems to be in pretty good shape.
It applies cleanly to head, and seems to work as advertised/discussed.
I have a couple of comments on the code...


In next_token(), in the case of an overlong token, this change looks wrong:

  			/* Discard remainder of line */
! 			while ((c = getc(fp)) != EOF && c != '\n')
! 				;
  			break;
  		}

--- 188,195 ----
  			   errmsg("authentication file token too long, skipping: \"%s\"",
  					  start_buf)));
  			/* Discard remainder of line */
! 			while ((c = (*(*lineptr)++)) != '\0' && c != '\n')
! 				(*lineptr)++;
  			break;

It appears to be incrementing lineptr twice per loop iteration, so it
risks missing the EOL/EOF and running off the end of the buffer.


Nitpicking, at the end of the loop you have:

! 		c = (**lineptr);
! 		(*lineptr)++;

perhaps for consistency with the preceding code, that should be "c =
(*(*lineptr)++)". Personally, I'd also get rid of the outer sets of
brackets in each of these expressions and just write "c =
*(*lineptr)++", since I don't think they add anything.


Finally, the comment block for tokenize_file() needs updating, now
that it returns three lists.

Regards,
Dean