[Spread-cvs] cvs commit: spread/daemon config_parse.y
spread-users@lists.spread.org
spread-users@lists.spread.org
Fri, 24 Oct 2003 17:51:41 -0400
jonathan 03/10/24 17:51:41
Modified: daemon config_parse.y
Log:
Apply patch to force the spread.conf parser to reject machine names that
are too long. Use of these names can cause daemon crashes later when
clients connect.
Patch written and contributed by Mikhail Terekhov
Revision Changes Path
1.9 +11 -0 spread/daemon/config_parse.y
Index: config_parse.y
===================================================================
RCS file: /storage/cvsroot/spread/daemon/config_parse.y,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- config_parse.y 19 Jun 2003 22:45:11 -0000 1.8
+++ config_parse.y 24 Oct 2003 21:51:41 -0000 1.9
@@ -148,6 +148,13 @@
out_string[str_size-1] = '\0';
}
+#define PROC_NAME_CHECK( stoken ) { \
+ char strbuf[80]; \
+ if ( strlen((stoken)) >= MAX_PROC_NAME ) { \
+ snprintf(strbuf, 80, "Too long name(%d max): %s)\n", MAX_PROC_NAME, (stoken)); \
+ return (yyerror(strbuf)); \
+ } \
+ }
#define PROCS_CHECK( num_procs, stoken ) { \
char strbuf[80]; \
if ( (num_procs) >= MAX_PROCS_RING ) { \
@@ -399,6 +406,7 @@
Segmentparam : STRING IPADDR OPENBRACE Interfaceparams CLOSEBRACE
{
+ PROC_NAME_CHECK( $1.string );
PROCS_CHECK( num_procs, $1.string );
SEGMENT_CHECK( segments, $1.string );
SEGMENT_SIZE_CHECK( segment_procs, $1.string );
@@ -418,6 +426,7 @@
}
| STRING OPENBRACE Interfaceparams CLOSEBRACE
{
+ PROC_NAME_CHECK( $1.string );
PROCS_CHECK( num_procs, $1.string );
SEGMENT_CHECK( segments, $1.string );
SEGMENT_SIZE_CHECK( segment_procs, $1.string );
@@ -438,6 +447,7 @@
}
| STRING IPADDR
{
+ PROC_NAME_CHECK( $1.string );
PROCS_CHECK( num_procs, $1.string );
SEGMENT_CHECK( segments, $1.string );
SEGMENT_SIZE_CHECK( segment_procs, $1.string );
@@ -458,6 +468,7 @@
}
| STRING
{
+ PROC_NAME_CHECK( $1.string );
PROCS_CHECK( num_procs, $1.string );
SEGMENT_CHECK( segments, $1.string );
SEGMENT_SIZE_CHECK( segment_procs, $1.string );