On 07/23/2014 09:14 AM, Viswanatham kirankumar wrote:
On 16 July 2014 23:12, Tom Lane wrote
Christoph Berg <c...@df7cb.de> writes:
Re: Viswanatham kirankumar 2014-07-16
<ec867def52699d4189b584a14baa7c2165440...@blreml504-mbx.china.huawei.com>
Attached patch is implementing following TODO item Process
pg_hba.conf keywords as case-insensitive


Hmm. I see a case for accepting "ALL" (as in hosts.allow(5)), so +1 on
that, but I don't think the other keywords like "host" and "peer"
should be valid in upper case.

I think the argument was that SQL users are accustomed to thinking that 
keywords are
case-insensitive.  It makes sense to me that we should adopt that same 
convention in pg_hba.conf.

Re-reading the original thread, there was also concern about whether
we should try to make quoting/casefolding behave more like it does in SQL,
specifically for matching pg_hba.conf items to SQL identifiers (database and 
role names).
This patch doesn't seem to have addressed that part of it, but I think we need 
to think those
things through before we just do a blind s/strcmp/pg_strcasecmp/g.  Otherwise 
we might
find that we've added ambiguity that will give us trouble when we do try to fix 
that.

I had updated as per you review comments

1) database and role names behave similar to SQL identifiers (case-sensitive / 
case-folding).

2) users and user-groups only requires special handling and behavior as follows
     Normal user :
       A. unquoted ( USER ) will be treated as user ( downcase ).
       B. quoted  ( "USeR" )  will be treated as USeR (case-sensitive).
       C. quoted ( "+USER" ) will be treated as normal user +USER (i.e. will 
not be considered as user-group) and case-sensitive as string is quoted.
    User Group :
       A. unquoted ( +USERGROUP ) will be treated as +usergruop ( downcase ).
       B. plus quoted ( +"UserGROUP"  ) will be treated as +UserGROUP 
(case-sensitive).

3) Host name is not a SQL object so it will be treated as case-sensitive
    except for all, samehost, samenet are considered as keywords.
    For these user need to use quotes to differentiate between hostname and 
keywords.

4) All the fixed keywords mention in pg_hba.conf and Client Authentication 
section will be considered as keywords
     Eg: host, local, hostssl etc..


With this patch, database (and role?) names are compared case-insensitively. For example:

local  MixedDB all trust
local  mixedDB all reject

psql -d "mixedDB"
psql (9.5devel)
Type "help" for help.

mixedDB=#

That connection should've matched that 2nd line, and be rejected.

PS. Please update the docs.

- Heikki



--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to