summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorKarl DeBisschop <kdebisschop@users.sourceforge.net>2003-04-23 04:58:38 +0000
committerKarl DeBisschop <kdebisschop@users.sourceforge.net>2003-04-23 04:58:38 +0000
commit6f0de2fb3a3c346cc98624c73d6dfd2858407b39 (patch)
treecab345591e745a99f5df5fd7d9051bc5de850758 /plugins
parent6b891545ced74ddb7e419fe1d13c0118cc13c316 (diff)
downloadmonitoring-plugins-6f0de2fb3a3c346cc98624c73d6dfd2858407b39.tar.gz
update to RFC1123 hostname specs
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/branches/release-1.3.0@498 f882894a-f735-0410-b71e-b25c423dba1c
Diffstat (limited to 'plugins')
-rw-r--r--plugins/check_http.c4
-rw-r--r--plugins/utils.c31
2 files changed, 26 insertions, 9 deletions
diff --git a/plugins/check_http.c b/plugins/check_http.c
index 856acdea..d13050a0 100644
--- a/plugins/check_http.c
+++ b/plugins/check_http.c
@@ -187,7 +187,7 @@ struct timeval tv;
187#define URI_PATH "%[/a-zA-Z0-9._-=@,]" 187#define URI_PATH "%[/a-zA-Z0-9._-=@,]"
188 188
189enum { 189enum {
190 MAX_IPV4_HOSTLENGTH = 64, 190 MAX_IPV4_HOSTLENGTH = 255,
191 HTTP_PORT = 80, 191 HTTP_PORT = 80,
192 HTTPS_PORT = 443 192 HTTPS_PORT = 443
193}; 193};
@@ -734,7 +734,7 @@ check_http (void)
734 asprintf (&orig_url, "%s", server_url); 734 asprintf (&orig_url, "%s", server_url);
735 pos = header; 735 pos = header;
736 while (pos) { 736 while (pos) {
737 server_address = realloc (server_address, MAX_IPV4_HOSTLENGTH); 737 server_address = realloc (server_address, MAX_IPV4_HOSTLENGTH + 1);
738 if (server_address == NULL) 738 if (server_address == NULL)
739 terminate (STATE_UNKNOWN, 739 terminate (STATE_UNKNOWN,
740 "HTTP UNKNOWN: could not allocate server_address"); 740 "HTTP UNKNOWN: could not allocate server_address");
diff --git a/plugins/utils.c b/plugins/utils.c
index aaa9fe5a..d06978f2 100644
--- a/plugins/utils.c
+++ b/plugins/utils.c
@@ -192,24 +192,41 @@ is_dotted_quad (char *address)
192} 192}
193 193
194/* from RFC-1035 194/* from RFC-1035
195 * 195*
196 * The labels must follow the rules for ARPANET host names. They must 196* The labels must follow the rules for ARPANET host names. They must
197 * start with a letter, end with a letter or digit, and have as interior 197* start with a letter, end with a letter or digit, and have as interior
198 * characters only letters, digits, and hyphen. There are also some 198* characters only letters, digits, and hyphen. There are also some
199 * restrictions on the length. Labels must be 63 characters or less. */ 199* restrictions on the length. Labels must be 63 characters or less.
200*
201* Then RFC-1123:
202*
203* 2.1 Host Names and Numbers
204*
205* The syntax of a legal Internet host name was specified in RFC-952
206* [DNS:4]. One aspect of host name syntax is hereby changed: the
207* restriction on the first character is relaxed to allow either a
208* letter or a digit. Host software MUST support this more liberal
209* syntax.
210*
211* Host software MUST handle host names of up to 63 characters and
212* SHOULD handle host names of up to 255 characters.
213*/
200 214
201int 215int
202is_hostname (char *s1) 216is_hostname (char *s1)
203{ 217{
204 if (!s1 || strlen (s1) > 63) { 218 if (!s1 || strlen (s1) > 255) {
205 return FALSE; 219 return FALSE;
206 } 220 }
221 /* if s1 contains anything but ALPHA, NUM, dash, or period*/
207 if (strcspn (s1, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUWVXYZ0123456789-.") != 0) { 222 if (strcspn (s1, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUWVXYZ0123456789-.") != 0) {
208 return FALSE; 223 return FALSE;
209 } 224 }
210 if (strspn (s1, "0123456789-.") == 1) { 225 /* or if s1 begins with dash or period */
226 if (strspn (s1, "-.") == 1) {
211 return FALSE; 227 return FALSE;
212 } 228 }
229 /* '..' and '.-' are not legal either */
213 while ((s1 = index (s1, '.'))) { 230 while ((s1 = index (s1, '.'))) {
214 s1++; 231 s1++;
215 if (strspn (s1, "0123456789-.") == 1) { 232 if (strspn (s1, "0123456789-.") == 1) {