Commit Diff


commit - e3b2a0f8de7210c4d403cf4c30d956c34d8c9353
commit + 391825e3604deef4c9dc3267dc2b6c89fc79958a
blob - 6f349a6e9c8f799f41fbb923a691a51e01ca22a6
blob + 5d6e1ccfe673ffdfe180f6d061a6cd7ed0266fe3
--- gmid.c
+++ gmid.c
@@ -530,6 +530,18 @@ setup_configless(int argc, char **argv, const char *cg
 
 	imsg_compose(&logibuf, IMSG_QUIT, 0, 0, -1, NULL, 0);
 	imsg_flush(&logibuf);
+}
+
+static int
+parse_portno(const char *p)
+{
+	const char *errstr;
+	int n;
+
+	n = strtonum(p, 0, UINT16_MAX, &errstr);
+	if (errstr != NULL)
+		yyerror("port number is %s: %s", errstr, p);
+	return n;
 }
 
 int
blob - 97870df22dc9188ddc84f311a0733f6da6524499
blob + 9a066562252414ad448170053460acc526f27e28
--- gmid.h
+++ gmid.h
@@ -317,7 +317,6 @@ void		 free_config(void);
 void		 drop_priv(void);
 
 void		 yyerror(const char*, ...);
-int		 parse_portno(const char*);
 void		 parse_conf(const char*);
 int		 cmdline_symset(char *);
 
blob - b656f6b43d3825a1462e57e84c751704376a0f2d
blob + 35a918a70de6d82089057c1cfd41193faadf5d8d
--- parse.y
+++ parse.y
@@ -78,11 +78,11 @@ char	*symget(const char *);
 
 struct vhost	*new_vhost(void);
 struct location	*new_location(void);
-int		 parse_portno(const char*);
 char		*ensure_absolute_path(char*);
 int		 check_block_code(int);
 char		*check_block_fmt(char*);
 int		 check_strip_no(int);
+int		 check_port_num(int);
 int		 check_prefork_num(int);
 void		 advance_loc(void);
 void		 only_once(const void*, const char*);
@@ -190,7 +190,7 @@ option		: TCHROOT string	{ conf.chroot = $2; }
 			add_mime(&conf.mime, $2, $3);
 		}
 		| TMAP string TTOEXT string { add_mime(&conf.mime, $2, $4); }
-		| TPORT NUM		{ conf.port = $2; }
+		| TPORT NUM		{ conf.port = check_port_num($2); }
 		| TPREFORK NUM		{ conf.prefork = check_prefork_num($2); }
 		| TPROTOCOLS string {
 			if (tls_config_parse_protocols(&conf.protos, $2) == -1)
@@ -862,18 +862,6 @@ new_location(void)
 	l->dirfd = -1;
 	l->fcgi = -1;
 	return l;
-}
-
-int
-parse_portno(const char *p)
-{
-	const char *errstr;
-	int n;
-
-	n = strtonum(p, 0, UINT16_MAX, &errstr);
-	if (errstr != NULL)
-		yyerror("port number is %s: %s", errstr, p);
-	return n;
 }
 
 char *
@@ -924,6 +912,16 @@ check_strip_no(int n)
 }
 
 int
+check_port_num(int n)
+{
+	if (n <= 0 || n >= UINT16_MAX)
+		yyerror("port number is %s: %d",
+		    n <= 0 ? "too small" : "too large",
+		    n);
+	return n;
+}
+
+int
 check_prefork_num(int n)
 {
 	if (n <= 0 || n >= PROC_MAX)