aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Munro <tmunro@postgresql.org>2018-11-13 16:27:13 +1300
committerThomas Munro <tmunro@postgresql.org>2018-11-13 16:27:13 +1300
commit6a3dcd28568a04b6e4aea2bf41ea2c7e9c7b0e96 (patch)
tree67ca3adef4cf9b92137471818da9192803b6c240 /src
parent52b70b1c7df5929465cf3dd8f4798e6f2e204f61 (diff)
downloadpostgresql-6a3dcd28568a04b6e4aea2bf41ea2c7e9c7b0e96.tar.gz
postgresql-6a3dcd28568a04b6e4aea2bf41ea2c7e9c7b0e96.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/backend/libpq/hba.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index 1a65ec87bd2..0129dd24d05 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -2218,10 +2218,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 11, 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 14
/*
* Create a text array listing the options specified in the HBA line.
@@ -2327,6 +2329,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)