diff options
author | Thomas Munro <tmunro@postgresql.org> | 2018-11-13 16:27:13 +1300 |
---|---|---|
committer | Thomas Munro <tmunro@postgresql.org> | 2018-11-13 16:29:33 +1300 |
commit | 5574a0181962195f355863940f1c010f8e9875f6 (patch) | |
tree | 47c46d7244d5e7653e32d1964e05347b3f2cbc45 | |
parent | c6b3835c7b5ce893d7883d3be9103f1199d3706e (diff) |
Fix possible buffer overrun in hba.c.
Coverty reports a possible buffer overrun in the code that populates the
pg_hba_file_rules view. It may not be a live bug due to restrictions
on options that can be used together, but let's increase MAX_HBA_OPTIONS
and correct a nearby misleading comment.
Back-patch to 10 where this code arrived.
Reported-by: Julian Hsiao
Discussion: https://postgr.es/m/CADnGQpzbkWdKS2YHNifwAvX5VEsJ5gW49U4o-7UL5pzyTv4vTg%40mail.gmail.com
-rw-r--r-- | src/backend/libpq/hba.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c index 36bc7a4cdda..517edc17eb8 100644 --- a/src/backend/libpq/hba.c +++ b/src/backend/libpq/hba.c @@ -2188,10 +2188,12 @@ load_hba(void) /* * This macro specifies the maximum number of authentication options * that are possible with any given authentication method that is supported. - * Currently LDAP supports 10, so the macro value is well above the most any - * method needs. + * Currently LDAP supports 10, and there are 3 that are not dependent on + * the auth method here. It may not actually be possible to set all of them + * at the same time, but we'll set the macro value high enough to be + * conservative and avoid warnings from static analysis tools. */ -#define MAX_HBA_OPTIONS 12 +#define MAX_HBA_OPTIONS 13 /* * Create a text array listing the options specified in the HBA line. @@ -2292,6 +2294,7 @@ gethba_options(HbaLine *hba) CStringGetTextDatum(psprintf("radiusports=%s", hba->radiusports_s)); } + /* If you add more options, consider increasing MAX_HBA_OPTIONS. */ Assert(noptions <= MAX_HBA_OPTIONS); if (noptions > 0) |