From 206731de90c2bb756af99263694620fdcbadf5fb Mon Sep 17 00:00:00 2001
From: Daniel Gustafsson <daniel@yesql.se>
Date: Tue, 27 Mar 2018 12:19:24 +0200
Subject: [PATCH] Ensure that maxlen is an integer value in dict_int

---
 contrib/dict_int/dict_int.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/contrib/dict_int/dict_int.c b/contrib/dict_int/dict_int.c
index 56ede37089..a9077e6438 100644
--- a/contrib/dict_int/dict_int.c
+++ b/contrib/dict_int/dict_int.c
@@ -41,10 +41,16 @@ dintdict_init(PG_FUNCTION_ARGS)
 	foreach(l, dictoptions)
 	{
 		DefElem    *defel = (DefElem *) lfirst(l);
+		char	   *endptr;
 
 		if (strcmp(defel->defname, "maxlen") == 0)
 		{
-			d->maxlen = atoi(defGetString(defel));
+			errno = 0;
+			d->maxlen = strtol(defGetString(defel), &endptr, 10);
+			if (*endptr != '\0' || errno != 0)
+				ereport(ERROR,
+						(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+						 errmsg("maxlen requires an integer value")));
 		}
 		else if (strcmp(defel->defname, "rejectlong") == 0)
 		{
-- 
2.14.1.145.gb3622a4ee

