X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fircd_parser.y;h=a43b9446cd7619768bafb7e301ea67525065901f;hb=7fbb742f7d849cb57b23f2a76d90950174094719;hp=d75d32f9f7c25fb9ba0339aa3a9f645a5ce6d668;hpb=838c794833cf2e3f5aef21b86d7041d80789aff0;p=ircu2.10.12-pk.git diff --git a/ircd/ircd_parser.y b/ircd/ircd_parser.y index d75d32f..a43b944 100644 --- a/ircd/ircd_parser.y +++ b/ircd/ircd_parser.y @@ -463,7 +463,6 @@ classusermode: USERMODE '=' QSTRING ';' connectblock: CONNECT { - maxlinks = 65535; flags = CONF_AUTOCONNECT; } '{' connectitems '}' ';' { @@ -488,7 +487,10 @@ connectblock: CONNECT aconf->conn_class = c_class; aconf->address.port = port; aconf->host = host; - aconf->maximum = maxlinks; + /* If the user specified a hub allowance, but not maximum links, + * allow an effectively unlimited number of hops. + */ + aconf->maximum = (hub_limit != NULL && maxlinks == 0) ? 65535 : maxlinks; aconf->hub_limit = hub_limit; aconf->flags = flags; lookup_confhost(aconf); @@ -502,7 +504,7 @@ connectblock: CONNECT } name = pass = host = origin = hub_limit = NULL; c_class = NULL; - port = flags = 0; + port = flags = maxlinks = 0; }; connectitems: connectitem connectitems | connectitem; connectitem: connectname | connectpass | connectclass | connecthost @@ -830,6 +832,7 @@ clientblock: CLIENT host = NULL; username = NULL; c_class = NULL; + maxlinks = 0; ip = NULL; pass = NULL; port = 0; @@ -1090,6 +1093,8 @@ pseudoitems '}' ';' parse_error("Missing name in pseudo %s block", smap->command); else if (!smap->services) parse_error("Missing nick in pseudo %s block", smap->command); + else if (!strIsAlpha(smap->command)) + parse_error("Pseudo command %s invalid: must all be letters", smap->command); else valid = 1; if (valid && register_mapping(smap)) @@ -1139,7 +1144,10 @@ iauthblock: IAUTH '{' iauthitems '}' ';' { auth_spawn(stringno, stringlist); while (stringno > 0) - MyFree(stringlist[--stringno]); + { + --stringno; + MyFree(stringlist[stringno]); + } }; iauthitems: iauthitem iauthitems | iauthitem; @@ -1147,5 +1155,8 @@ iauthitem: iauthprogram; iauthprogram: PROGRAM '=' { while (stringno > 0) - MyFree(stringlist[--stringno]); + { + --stringno; + MyFree(stringlist[stringno]); + } } stringlist ';';