X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fconfig.c;h=c1f05a635e8857b8cf89e520481f6c0a498ece98;hb=20965abe9c5bb80d79e5ad791cd2b59ec60259b5;hp=ef307d881138ca81a55636aae9c8d592b6b0e013;hpb=5c0581b1840103de15ac2a30c7b5cb9f4322e2cd;p=openldap diff --git a/servers/slapd/config.c b/servers/slapd/config.c index ef307d8811..c1f05a635e 100644 --- a/servers/slapd/config.c +++ b/servers/slapd/config.c @@ -34,7 +34,6 @@ #include #include -#include "ldap_pvt.h" #include "slap.h" #ifdef LDAP_SLAPI #include "slapi/slapi.h" @@ -241,6 +240,82 @@ read_config( const char *fname, int depth ) ldap_pvt_thread_set_concurrency( c ); + /* set substring initial/final index minimum length */ + } else if ( strcasecmp( cargv[0], "index_substr_if_minlen" ) == 0 ) { + long min; + if ( cargc < 2 ) { + Debug( LDAP_DEBUG_ANY, + "%s: line %d: missing min in \"index_substr_if_minlen \" line\n", + fname, lineno, 0 ); + return( 1 ); + } + min = atoi( cargv[1] ); + if( min < 1 || min > index_substr_if_maxlen ) { + Debug( LDAP_DEBUG_ANY, + "%s: line %d: invalid min value (%ld) in " + "\"index_substr_if_minlen \" line.\n", + fname, lineno, min ); + return( 1 ); + } + index_substr_if_minlen = min; + + /* set substring initial/final index maximum length */ + } else if ( strcasecmp( cargv[0], "index_substr_if_maxlen" ) == 0 ) { + long max; + if ( cargc < 2 ) { + Debug( LDAP_DEBUG_ANY, + "%s: line %d: missing max in \"index_substr_if_maxlen \" line\n", + fname, lineno, 0 ); + return( 1 ); + } + max = atol( cargv[1] ); + if( max < 1 || max < index_substr_if_minlen ) { + Debug( LDAP_DEBUG_ANY, + "%s: line %d: invalid max value (%ld) in " + "\"index_substr_maxlen \" line.\n", + fname, lineno, max ); + return( 1 ); + } + index_substr_if_maxlen = max; + + /* set substring any index len */ + } else if ( strcasecmp( cargv[0], "index_substr_any_len" ) == 0 ) { + long len; + if ( cargc < 2 ) { + Debug( LDAP_DEBUG_ANY, + "%s: line %d: missing len in \"index_substr_any_len \" line\n", + fname, lineno, 0 ); + return( 1 ); + } + len = atol( cargv[1] ); + if( len < 1 ) { + Debug( LDAP_DEBUG_ANY, + "%s: line %d: invalid len value (%ld) in " + "\"index_substr_any_len \" line.\n", + fname, lineno, len ); + return( 1 ); + } + index_substr_any_len = len; + + /* set substring any index step */ + } else if ( strcasecmp( cargv[0], "index_substr_any_step" ) == 0 ) { + long step; + if ( cargc < 2 ) { + Debug( LDAP_DEBUG_ANY, + "%s: line %d: missing step in \"index_substr_any_step \" line\n", + fname, lineno, 0 ); + return( 1 ); + } + step = atol( cargv[1] ); + if( step < 1 ) { + Debug( LDAP_DEBUG_ANY, + "%s: line %d: invalid step value (%ld) in " + "\"index_substr_any_step \" line.\n", + fname, lineno, step ); + return( 1 ); + } + index_substr_any_step = step; + /* set sockbuf max */ } else if ( strcasecmp( cargv[0], "sockbuf_max_incoming" ) == 0 ) { long max; @@ -1270,25 +1345,6 @@ restrict_unknown:; if( value_add( &default_referral, vals ) ) return LDAP_OTHER; - /* start of a new database definition */ - } else if ( strcasecmp( cargv[0], "debug" ) == 0 ) { - int level; - if ( cargc < 3 ) { - Debug( LDAP_DEBUG_ANY, - "%s: line %d: Error in debug directive, \"debug subsys level\"\n", - fname, lineno, 0 ); - return( 1 ); - } - level = strtol( cargv[2], &next, 10 ); - if ( next == NULL || next[0] != '\0' ){ - Debug( LDAP_DEBUG_ANY, - "%s: line %d: unable to parse level \"%s\" in debug directive, " - "\"debug \"\n", fname, lineno , cargv[2] ); - return( 1 ); - } - - if ( level <= 0 ) level = lutil_mnem2level( cargv[2] ); - lutil_set_debug_level( cargv[1], level ); /* specify an Object Identifier macro */ } else if ( strcasecmp( cargv[0], "objectidentifier" ) == 0 ) { rc = parse_oidm( fname, lineno, cargc, cargv ); @@ -1479,6 +1535,14 @@ restrict_unknown:; } else { int nr = -1; + if ( SLAP_MONITOR( be ) ) { + Debug( LDAP_DEBUG_ANY, "%s: line %d: " + "\"replica\" should not be used " + "inside monitor database\n", + fname, lineno, 0 ); + /* FIXME: turn into an error? */ + } + for ( i = 1; i < cargc; i++ ) { if ( strncasecmp( cargv[i], "host=", 5 ) == 0 ) { @@ -1655,7 +1719,15 @@ restrict_unknown:; return( 1 ); } if ( be ) { + if ( SLAP_MONITOR( be ) ) { + Debug( LDAP_DEBUG_ANY, "%s: line %d: " + "\"replogfile\" should not be used " + "inside monitor database\n", + fname, lineno, 0 ); + /* FIXME: turn into an error? */ + } be->be_replogfile = ch_strdup( cargv[1] ); + } else { replogfile = ch_strdup( cargv[1] ); } @@ -2312,6 +2384,7 @@ add_syncrepl( if ( rc < 0 || duplicated_replica_id ) { Debug( LDAP_DEBUG_ANY, "failed to add syncinfo\n", 0, 0, 0 ); + syncinfo_free( si ); return 1; } else { Debug( LDAP_DEBUG_CONFIG, @@ -2326,48 +2399,54 @@ add_syncrepl( } } +/* NOTE: used & documented in slapd.conf(5) */ #define IDSTR "rid" #define PROVIDERSTR "provider" -#define SUFFIXSTR "suffix" +#define TYPESTR "type" +#define INTERVALSTR "interval" +#define SEARCHBASESTR "searchbase" +#define FILTERSTR "filter" +#define SCOPESTR "scope" +#define ATTRSSTR "attrs" +#define ATTRSONLYSTR "attrsonly" +#define SLIMITSTR "sizelimit" +#define TLIMITSTR "timelimit" +#define SCHEMASTR "schemachecking" #define UPDATEDNSTR "updatedn" #define BINDMETHSTR "bindmethod" -#define SIMPLESTR "simple" -#define SASLSTR "sasl" +#define SIMPLESTR "simple" +#define SASLSTR "sasl" #define BINDDNSTR "binddn" -#define CREDSTR "credentials" -#define OLDAUTHCSTR "bindprincipal" +#define SASLMECHSTR "saslmech" #define AUTHCSTR "authcID" #define AUTHZSTR "authzID" -#define SRVTABSTR "srvtab" -#define SASLMECHSTR "saslmech" +#define CREDSTR "credentials" #define REALMSTR "realm" #define SECPROPSSTR "secprops" -#define STARTTLSSTR "starttls" -#define CRITICALSTR "critical" -#define SCHEMASTR "schemachecking" -#define FILTERSTR "filter" -#define SEARCHBASESTR "searchbase" -#define SCOPESTR "scope" -#define ATTRSSTR "attrs" +/* FIXME: undocumented */ +#define OLDAUTHCSTR "bindprincipal" +#define STARTTLSSTR "starttls" +#define CRITICALSTR "critical" #define EXATTRSSTR "exattrs" -#define ATTRSONLYSTR "attrsonly" -#define TYPESTR "type" -#define INTERVALSTR "interval" +#define MANAGEDSAITSTR "manageDSAit" +#define RETRYSTR "retry" + +/* FIXME: unused */ #define LASTMODSTR "lastmod" -#define LMREQSTR "req" #define LMGENSTR "gen" #define LMNOSTR "no" -#define MANAGEDSAITSTR "manageDSAit" -#define SLIMITSTR "sizelimit" -#define TLIMITSTR "timelimit" - -#define RETRYSTR "retry" +#define LMREQSTR "req" +#define SRVTABSTR "srvtab" +#define SUFFIXSTR "suffix" +/* mandatory */ #define GOT_ID 0x0001 -#define GOT_PROVIDER 0x0002 +#define GOT_PROVIDER 0x0002 #define GOT_METHOD 0x0004 -#define GOT_ALL 0x0007 + +/* check */ +#define GOT_ALL (GOT_ID|GOT_PROVIDER|GOT_METHOD) static int parse_syncrepl_line( @@ -2382,10 +2461,12 @@ parse_syncrepl_line( int nr_attr = 0; for ( i = 1; i < cargc; i++ ) { - if ( !strncasecmp( cargv[ i ], IDSTR, sizeof( IDSTR ) - 1 )) { + if ( !strncasecmp( cargv[ i ], IDSTR "=", + STRLENOF( IDSTR "=" ) ) ) + { int tmp; /* '\0' string terminator accounts for '=' */ - val = cargv[ i ] + sizeof( IDSTR ); + val = cargv[ i ] + STRLENOF( IDSTR "=" ); tmp= atoi( val ); if ( tmp >= 1000 || tmp < 0 ) { fprintf( stderr, "Error: parse_syncrepl_line: " @@ -2394,9 +2475,10 @@ parse_syncrepl_line( } si->si_rid = tmp; gots |= GOT_ID; - } else if ( !strncasecmp( cargv[ i ], PROVIDERSTR, - sizeof( PROVIDERSTR ) - 1 )) { - val = cargv[ i ] + sizeof( PROVIDERSTR ); + } else if ( !strncasecmp( cargv[ i ], PROVIDERSTR "=", + STRLENOF( PROVIDERSTR "=" ) ) ) + { + val = cargv[ i ] + STRLENOF( PROVIDERSTR "=" ); si->si_provideruri = ch_strdup( val ); si->si_provideruri_bv = (BerVarray) ch_calloc( 2, sizeof( struct berval )); @@ -2405,27 +2487,28 @@ parse_syncrepl_line( si->si_provideruri_bv[1].bv_len = 0; si->si_provideruri_bv[1].bv_val = NULL; gots |= GOT_PROVIDER; - } else if ( !strncasecmp( cargv[ i ], STARTTLSSTR, - sizeof(STARTTLSSTR) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], STARTTLSSTR "=", + STRLENOF(STARTTLSSTR "=") ) ) { - val = cargv[ i ] + sizeof( STARTTLSSTR ); + val = cargv[ i ] + STRLENOF( STARTTLSSTR "=" ); if( !strcasecmp( val, CRITICALSTR ) ) { si->si_tls = SYNCINFO_TLS_CRITICAL; } else { si->si_tls = SYNCINFO_TLS_ON; } - } else if ( !strncasecmp( cargv[ i ], - UPDATEDNSTR, sizeof( UPDATEDNSTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], UPDATEDNSTR "=", + STRLENOF( UPDATEDNSTR "=" ) ) ) { - struct berval updatedn = {0, NULL}; - val = cargv[ i ] + sizeof( UPDATEDNSTR ); + struct berval updatedn = BER_BVNULL; + + val = cargv[ i ] + STRLENOF( UPDATEDNSTR "=" ); ber_str2bv( val, 0, 0, &updatedn ); ch_free( si->si_updatedn.bv_val ); dnNormalize( 0, NULL, NULL, &updatedn, &si->si_updatedn, NULL ); - } else if ( !strncasecmp( cargv[ i ], BINDMETHSTR, - sizeof( BINDMETHSTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], BINDMETHSTR "=", + STRLENOF( BINDMETHSTR "=" ) ) ) { - val = cargv[ i ] + sizeof( BINDMETHSTR ); + val = cargv[ i ] + STRLENOF( BINDMETHSTR "=" ); if ( !strcasecmp( val, SIMPLESTR )) { si->si_bindmethod = LDAP_AUTH_SIMPLE; gots |= GOT_METHOD; @@ -2436,52 +2519,60 @@ parse_syncrepl_line( #else /* HAVE_CYRUS_SASL */ fprintf( stderr, "Error: parse_syncrepl_line: " "not compiled with SASL support\n" ); - return 1; + return -1; #endif /* HAVE_CYRUS_SASL */ } else { si->si_bindmethod = -1; } - } else if ( !strncasecmp( cargv[ i ], - BINDDNSTR, sizeof( BINDDNSTR ) - 1 ) ) { - val = cargv[ i ] + sizeof( BINDDNSTR ); + } else if ( !strncasecmp( cargv[ i ], BINDDNSTR "=", + STRLENOF( BINDDNSTR "=" ) ) ) + { + val = cargv[ i ] + STRLENOF( BINDDNSTR "=" ); si->si_binddn = ch_strdup( val ); - } else if ( !strncasecmp( cargv[ i ], - CREDSTR, sizeof( CREDSTR ) - 1 ) ) { - val = cargv[ i ] + sizeof( CREDSTR ); + } else if ( !strncasecmp( cargv[ i ], CREDSTR "=", + STRLENOF( CREDSTR "=" ) ) ) + { + val = cargv[ i ] + STRLENOF( CREDSTR "=" ); si->si_passwd = ch_strdup( val ); - } else if ( !strncasecmp( cargv[ i ], - SASLMECHSTR, sizeof( SASLMECHSTR ) - 1 ) ) { - val = cargv[ i ] + sizeof( SASLMECHSTR ); + } else if ( !strncasecmp( cargv[ i ], SASLMECHSTR "=", + STRLENOF( SASLMECHSTR "=" ) ) ) + { + val = cargv[ i ] + STRLENOF( SASLMECHSTR "=" ); si->si_saslmech = ch_strdup( val ); - } else if ( !strncasecmp( cargv[ i ], - SECPROPSSTR, sizeof( SECPROPSSTR ) - 1 ) ) { - val = cargv[ i ] + sizeof( SECPROPSSTR ); + } else if ( !strncasecmp( cargv[ i ], SECPROPSSTR "=", + STRLENOF( SECPROPSSTR "=" ) ) ) + { + val = cargv[ i ] + STRLENOF( SECPROPSSTR "=" ); si->si_secprops = ch_strdup( val ); - } else if ( !strncasecmp( cargv[ i ], - REALMSTR, sizeof( REALMSTR ) - 1 ) ) { - val = cargv[ i ] + sizeof( REALMSTR ); + } else if ( !strncasecmp( cargv[ i ], REALMSTR "=", + STRLENOF( REALMSTR "=" ) ) ) + { + val = cargv[ i ] + STRLENOF( REALMSTR "=" ); si->si_realm = ch_strdup( val ); - } else if ( !strncasecmp( cargv[ i ], - AUTHCSTR, sizeof( AUTHCSTR ) - 1 ) ) { - val = cargv[ i ] + sizeof( AUTHCSTR ); + } else if ( !strncasecmp( cargv[ i ], AUTHCSTR "=", + STRLENOF( AUTHCSTR "=" ) ) ) + { + val = cargv[ i ] + STRLENOF( AUTHCSTR "=" ); if ( si->si_authcId ) ch_free( si->si_authcId ); si->si_authcId = ch_strdup( val ); - } else if ( !strncasecmp( cargv[ i ], - OLDAUTHCSTR, sizeof( OLDAUTHCSTR ) - 1 ) ) { + } else if ( !strncasecmp( cargv[ i ], OLDAUTHCSTR "=", + STRLENOF( OLDAUTHCSTR "=" ) ) ) + { /* Old authcID is provided for some backwards compatibility */ - val = cargv[ i ] + sizeof( OLDAUTHCSTR ); + val = cargv[ i ] + STRLENOF( OLDAUTHCSTR "=" ); if ( si->si_authcId ) ch_free( si->si_authcId ); si->si_authcId = ch_strdup( val ); - } else if ( !strncasecmp( cargv[ i ], - AUTHZSTR, sizeof( AUTHZSTR ) - 1 ) ) { - val = cargv[ i ] + sizeof( AUTHZSTR ); + } else if ( !strncasecmp( cargv[ i ], AUTHZSTR "=", + STRLENOF( AUTHZSTR "=" ) ) ) + { + val = cargv[ i ] + STRLENOF( AUTHZSTR "=" ); si->si_authzId = ch_strdup( val ); - } else if ( !strncasecmp( cargv[ i ], - SCHEMASTR, sizeof( SCHEMASTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], SCHEMASTR "=", + STRLENOF( SCHEMASTR "=" ) ) ) { - val = cargv[ i ] + sizeof( SCHEMASTR ); + val = cargv[ i ] + STRLENOF( SCHEMASTR "=" ); if ( !strncasecmp( val, "on", STRLENOF( "on" ) )) { si->si_schemachecking = 1; } else if ( !strncasecmp( val, "off", STRLENOF( "off" ) ) ) { @@ -2489,28 +2580,28 @@ parse_syncrepl_line( } else { si->si_schemachecking = 1; } - } else if ( !strncasecmp( cargv[ i ], - FILTERSTR, sizeof( FILTERSTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], FILTERSTR "=", + STRLENOF( FILTERSTR "=" ) ) ) { - val = cargv[ i ] + sizeof( FILTERSTR ); + val = cargv[ i ] + STRLENOF( FILTERSTR "=" ); ber_str2bv( val, 0, 1, &si->si_filterstr ); - } else if ( !strncasecmp( cargv[ i ], - SEARCHBASESTR, sizeof( SEARCHBASESTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], SEARCHBASESTR "=", + STRLENOF( SEARCHBASESTR "=" ) ) ) { struct berval bv; - val = cargv[ i ] + sizeof( SEARCHBASESTR ); + val = cargv[ i ] + STRLENOF( SEARCHBASESTR "=" ); if ( si->si_base.bv_val ) { ch_free( si->si_base.bv_val ); } ber_str2bv( val, 0, 0, &bv ); if ( dnNormalize( 0, NULL, NULL, &bv, &si->si_base, NULL )) { fprintf( stderr, "Invalid base DN \"%s\"\n", val ); - return 1; + return -1; } - } else if ( !strncasecmp( cargv[ i ], - SCOPESTR, sizeof( SCOPESTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], SCOPESTR "=", + STRLENOF( SCOPESTR "=" ) ) ) { - val = cargv[ i ] + sizeof( SCOPESTR ); + val = cargv[ i ] + STRLENOF( SCOPESTR "=" ); if ( !strncasecmp( val, "base", STRLENOF( "base" ) )) { si->si_scope = LDAP_SCOPE_BASE; } else if ( !strncasecmp( val, "one", STRLENOF( "one" ) )) { @@ -2526,21 +2617,20 @@ parse_syncrepl_line( } else { fprintf( stderr, "Error: parse_syncrepl_line: " "unknown scope \"%s\"\n", val); - return 1; + return -1; } - } else if ( !strncasecmp( cargv[ i ], - ATTRSONLYSTR, sizeof( ATTRSONLYSTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], ATTRSONLYSTR "=", + STRLENOF( ATTRSONLYSTR "=" ) ) ) { si->si_attrsonly = 1; - } else if ( !strncasecmp( cargv[ i ], - ATTRSSTR, sizeof( ATTRSSTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], ATTRSSTR "=", + STRLENOF( ATTRSSTR "=" ) ) ) { - val = cargv[ i ] + sizeof( ATTRSSTR ); - if ( !strncasecmp( val, ":include:", STRLENOF(":include:") )) { + val = cargv[ i ] + STRLENOF( ATTRSSTR "=" ); + if ( !strncasecmp( val, ":include:", STRLENOF(":include:") ) ) { char *attr_fname; attr_fname = ch_strdup( val + STRLENOF(":include:") ); - si->si_anlist = file2anlist( - si->si_anlist, attr_fname, " ,\t" ); + si->si_anlist = file2anlist( si->si_anlist, attr_fname, " ,\t" ); if ( si->si_anlist == NULL ) { ch_free( attr_fname ); return -1; @@ -2551,8 +2641,9 @@ parse_syncrepl_line( char delimstr[] = " ,\t"; str = ch_strdup( val ); for ( s = ldap_pvt_strtok( str, delimstr, &next ); - s != NULL; - s = ldap_pvt_strtok( NULL, delimstr, &next )) { + s != NULL; + s = ldap_pvt_strtok( NULL, delimstr, &next ) ) + { if ( strlen(s) == 1 && *s == '*' ) { si->si_allattrs = 1; *(val + ( s - str )) = delimstr[0]; @@ -2568,10 +2659,10 @@ parse_syncrepl_line( return -1; } } - } else if ( !strncasecmp( cargv[ i ], - EXATTRSSTR, sizeof( EXATTRSSTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], EXATTRSSTR "=", + STRLENOF( EXATTRSSTR "=" ) ) ) { - val = cargv[ i ] + sizeof( EXATTRSSTR ); + val = cargv[ i ] + STRLENOF( EXATTRSSTR "=" ); if ( !strncasecmp( val, ":include:", STRLENOF(":include:") )) { char *attr_fname; attr_fname = ch_strdup( val + STRLENOF(":include:") ); @@ -2589,26 +2680,28 @@ parse_syncrepl_line( return -1; } } - } else if ( !strncasecmp( cargv[ i ], - TYPESTR, sizeof( TYPESTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], TYPESTR "=", + STRLENOF( TYPESTR "=" ) ) ) { - val = cargv[ i ] + sizeof( TYPESTR ); - if ( !strncasecmp( val, "refreshOnly", STRLENOF("refreshOnly") )) { + val = cargv[ i ] + STRLENOF( TYPESTR "=" ); + if ( !strncasecmp( val, "refreshOnly", + STRLENOF("refreshOnly") )) + { si->si_type = LDAP_SYNC_REFRESH_ONLY; } else if ( !strncasecmp( val, "refreshAndPersist", - STRLENOF("refreshAndPersist") )) + STRLENOF("refreshAndPersist") )) { si->si_type = LDAP_SYNC_REFRESH_AND_PERSIST; si->si_interval = 60; } else { fprintf( stderr, "Error: parse_syncrepl_line: " "unknown sync type \"%s\"\n", val); - return 1; + return -1; } - } else if ( !strncasecmp( cargv[ i ], - INTERVALSTR, sizeof( INTERVALSTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], INTERVALSTR "=", + STRLENOF( INTERVALSTR "=" ) ) ) { - val = cargv[ i ] + sizeof( INTERVALSTR ); + val = cargv[ i ] + STRLENOF( INTERVALSTR "=" ); if ( si->si_type == LDAP_SYNC_REFRESH_AND_PERSIST ) { si->si_interval = 0; } else { @@ -2622,21 +2715,21 @@ parse_syncrepl_line( if ( hstr == NULL ) { fprintf( stderr, "Error: parse_syncrepl_line: " "invalid interval \"%s\"\n", val ); - return 1; + return -1; } *hstr++ = '\0'; mstr = strchr( hstr, ':' ); if ( mstr == NULL ) { fprintf( stderr, "Error: parse_syncrepl_line: " "invalid interval \"%s\"\n", val ); - return 1; + return -1; } *mstr++ = '\0'; sstr = strchr( mstr, ':' ); if ( sstr == NULL ) { fprintf( stderr, "Error: parse_syncrepl_line: " "invalid interval \"%s\"\n", val ); - return 1; + return -1; } *sstr++ = '\0'; @@ -2649,7 +2742,7 @@ parse_syncrepl_line( ( ss > 60 ) || ( ss < 0 ) || ( dd < 0 )) { fprintf( stderr, "Error: parse_syncrepl_line: " "invalid interval \"%s\"\n", val ); - return 1; + return -1; } si->si_interval = (( dd * 24 + hh ) * 60 + mm ) * 60 + ss; } @@ -2657,16 +2750,16 @@ parse_syncrepl_line( fprintf( stderr, "Error: parse_syncrepl_line: " "invalid interval \"%ld\"\n", (long) si->si_interval); - return 1; + return -1; } - } else if ( !strncasecmp( cargv[ i ], - RETRYSTR, sizeof( RETRYSTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], RETRYSTR "=", + STRLENOF( RETRYSTR "=" ) ) ) { char *str; char **retry_list; int j, k, n; - val = cargv[ i ] + sizeof( RETRYSTR ); + val = cargv[ i ] + STRLENOF( RETRYSTR "=" ); retry_list = (char **) ch_calloc( 1, sizeof( char * )); retry_list[0] = NULL; @@ -2706,24 +2799,25 @@ parse_syncrepl_line( ch_free( retry_list[k] ); } ch_free( retry_list ); - } else if ( !strncasecmp( cargv[ i ], - MANAGEDSAITSTR, sizeof( MANAGEDSAITSTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], MANAGEDSAITSTR "=", + STRLENOF( MANAGEDSAITSTR "=" ) ) ) { - val = cargv[ i ] + sizeof( MANAGEDSAITSTR ); + val = cargv[ i ] + STRLENOF( MANAGEDSAITSTR "=" ); si->si_manageDSAit = atoi( val ); - } else if ( !strncasecmp( cargv[ i ], - SLIMITSTR, sizeof( SLIMITSTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], SLIMITSTR "=", + STRLENOF( SLIMITSTR "=") ) ) { - val = cargv[ i ] + sizeof( SLIMITSTR ); + val = cargv[ i ] + STRLENOF( SLIMITSTR "=" ); si->si_slimit = atoi( val ); - } else if ( !strncasecmp( cargv[ i ], - TLIMITSTR, sizeof( TLIMITSTR ) - 1 ) ) + } else if ( !strncasecmp( cargv[ i ], TLIMITSTR "=", + STRLENOF( TLIMITSTR "=" ) ) ) { - val = cargv[ i ] + sizeof( TLIMITSTR ); + val = cargv[ i ] + STRLENOF( TLIMITSTR "=" ); si->si_tlimit = atoi( val ); } else { fprintf( stderr, "Error: parse_syncrepl_line: " "unknown keyword \"%s\"\n", cargv[ i ] ); + return -1; } }