mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-26 09:39:45 -05:00
improve parsing - first step
This commit is contained in:
parent
175ce7960d
commit
42f3b3d87b
2 changed files with 168 additions and 63 deletions
|
|
@ -252,7 +252,7 @@ parse_acl(
|
|||
)
|
||||
{
|
||||
int i;
|
||||
char *left, *right, *style;
|
||||
char *left, *right, *style, *next;
|
||||
struct berval bv;
|
||||
AccessControl *a;
|
||||
Access *b;
|
||||
|
|
@ -1270,7 +1270,13 @@ parse_acl(
|
|||
acl_usage();
|
||||
}
|
||||
|
||||
b->a_authz.sai_ssf = atoi( right );
|
||||
b->a_authz.sai_ssf = strtol( right, *next, 10 );
|
||||
if ( next == NULL || next[0] != '\0' ) {
|
||||
fprintf( stderr,
|
||||
"%s: line %d: unable to parse ssf value (%s)\n",
|
||||
fname, lineno, right );
|
||||
acl_usage();
|
||||
}
|
||||
|
||||
if( !b->a_authz.sai_ssf ) {
|
||||
fprintf( stderr,
|
||||
|
|
@ -1303,7 +1309,13 @@ parse_acl(
|
|||
acl_usage();
|
||||
}
|
||||
|
||||
b->a_authz.sai_transport_ssf = atoi( right );
|
||||
b->a_authz.sai_transport_ssf = strtol( right, &next, 10 );
|
||||
if ( next == NULL || next[0] != '\0' ) {
|
||||
fprintf( stderr,
|
||||
"%s: line %d: unable to parse transport_ssf value (%s)\n",
|
||||
fname, lineno, right );
|
||||
acl_usage();
|
||||
}
|
||||
|
||||
if( !b->a_authz.sai_transport_ssf ) {
|
||||
fprintf( stderr,
|
||||
|
|
@ -1336,7 +1348,13 @@ parse_acl(
|
|||
acl_usage();
|
||||
}
|
||||
|
||||
b->a_authz.sai_tls_ssf = atoi( right );
|
||||
b->a_authz.sai_tls_ssf = strtol( right, &next, 10 );
|
||||
if ( next == NULL || next[0] != '\0' ) {
|
||||
fprintf( stderr,
|
||||
"%s: line %d: unable to parse tls_ssf value (%s)\n",
|
||||
fname, lineno, right );
|
||||
acl_usage();
|
||||
}
|
||||
|
||||
if( !b->a_authz.sai_tls_ssf ) {
|
||||
fprintf( stderr,
|
||||
|
|
@ -1369,7 +1387,13 @@ parse_acl(
|
|||
acl_usage();
|
||||
}
|
||||
|
||||
b->a_authz.sai_sasl_ssf = atoi( right );
|
||||
b->a_authz.sai_sasl_ssf = strtol( right, &next, 10 );
|
||||
if ( next == NULL || next[0] != '\0' ) {
|
||||
fprintf( stderr,
|
||||
"%s: line %d: unable to parse sasl_ssf value (%s)\n",
|
||||
fname, lineno, right );
|
||||
acl_usage();
|
||||
}
|
||||
|
||||
if( !b->a_authz.sai_sasl_ssf ) {
|
||||
fprintf( stderr,
|
||||
|
|
|
|||
|
|
@ -120,6 +120,8 @@ read_config( const char *fname, int depth )
|
|||
LDAPURLDesc *ludp;
|
||||
static BackendInfo *bi = NULL;
|
||||
static BackendDB *be = NULL;
|
||||
char *next;
|
||||
|
||||
|
||||
vals[1].bv_val = NULL;
|
||||
|
||||
|
|
@ -259,7 +261,7 @@ read_config( const char *fname, int depth )
|
|||
if ( cargc < 2 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG( CONFIG, CRIT,
|
||||
"%s: line %d: missing level in \"concurrency <level\" "
|
||||
"%s: line %d: missing level in \"concurrency <level>\" "
|
||||
" line\n", fname, lineno, 0 );
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
|
|
@ -270,7 +272,19 @@ read_config( const char *fname, int depth )
|
|||
return( 1 );
|
||||
}
|
||||
|
||||
c = atoi( cargv[1] );
|
||||
c = strtol( cargv[1], &next, 10 );
|
||||
if ( next == NULL || next[0] != '\0' ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG( CONFIG, CRIT,
|
||||
"%s: line %d: unable to parse level \"%s\" in \"concurrency <level>\" "
|
||||
" line\n", fname, lineno, cargv[1] );
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: unable to parse level \"%s\" in \"concurrency <level>\" line\n",
|
||||
fname, lineno, cargv[1] );
|
||||
#endif
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
if( c < 1 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
|
|
@ -541,7 +555,19 @@ read_config( const char *fname, int depth )
|
|||
return( 1 );
|
||||
}
|
||||
|
||||
c = atoi( cargv[1] );
|
||||
c = strtol( cargv[1], &next, 10 );
|
||||
if (next == NULL || next[0] != '\0' ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG( CONFIG, CRIT,
|
||||
"%s: line %d: unable to parse count \"%s\" in \"threads <count>\" line\n",
|
||||
fname, lineno, cargv[1] );
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: unable to parse count \"%s\" in \"threads <count>\" line\n",
|
||||
fname, lineno, cargv[1] );
|
||||
#endif
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
if( c < 0 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
|
|
@ -821,8 +847,6 @@ read_config( const char *fname, int depth )
|
|||
if ( strcasecmp( cargv[i], "unlimited" ) == 0 ) {
|
||||
lim->lms_s_soft = -1;
|
||||
} else {
|
||||
char *next;
|
||||
|
||||
lim->lms_s_soft = strtol( cargv[i] , &next, 0 );
|
||||
if ( next == cargv[i] ) {
|
||||
#ifdef NEW_LOGGING
|
||||
|
|
@ -901,8 +925,6 @@ read_config( const char *fname, int depth )
|
|||
if ( strcasecmp( cargv[i], "unlimited" ) == 0 ) {
|
||||
lim->lms_t_soft = -1;
|
||||
} else {
|
||||
char *next;
|
||||
|
||||
lim->lms_t_soft = strtol( cargv[i] , &next, 0 );
|
||||
if ( next == cargv[i] ) {
|
||||
#ifdef NEW_LOGGING
|
||||
|
|
@ -1150,25 +1172,38 @@ read_config( const char *fname, int depth )
|
|||
"%s: line %d: depth line must appear inside a database definition.\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
return 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
} else if ((i = atoi(cargv[1])) < 0) {
|
||||
i = strtol( cargv[1], &next, 10 );
|
||||
if ( next == NULL || next[0] != '\0' ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG( CONFIG, INFO,
|
||||
"%s: line %d: unable to parse depth \"%s\" in \"maxDerefDepth <depth>\" "
|
||||
"line.\n", fname, lineno, cargv[1] );
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: unable to parse depth \"%s\" in \"maxDerefDepth <depth>\" "
|
||||
"line.\n", fname, lineno, cargv[1] );
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (i < 0) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG( CONFIG, INFO,
|
||||
"%s: line %d: depth must be positive.\n",
|
||||
fname, lineno ,0 );
|
||||
fname, lineno, 0 );
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: depth must be positive.\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
return 1;
|
||||
return 1;
|
||||
|
||||
|
||||
} else {
|
||||
be->be_max_deref_depth = i;
|
||||
}
|
||||
|
||||
}
|
||||
be->be_max_deref_depth = i;
|
||||
|
||||
/* set magic "root" dn for this database */
|
||||
} else if ( strcasecmp( cargv[0], "rootdn" ) == 0 ) {
|
||||
|
|
@ -1632,64 +1667,67 @@ restrict_unknown:;
|
|||
}
|
||||
|
||||
for( i=1; i < cargc; i++ ) {
|
||||
if( strncasecmp( cargv[i], "ssf=",
|
||||
sizeof("ssf") ) == 0 )
|
||||
{
|
||||
set->sss_ssf =
|
||||
atoi( &cargv[i][sizeof("ssf")] );
|
||||
int *tgt;
|
||||
char *src;
|
||||
|
||||
} else if( strncasecmp( cargv[i], "transport=",
|
||||
sizeof("transport") ) == 0 )
|
||||
if ( strncasecmp( cargv[i], "ssf=",
|
||||
STRLENOF("ssf=") ) == 0 )
|
||||
{
|
||||
set->sss_transport =
|
||||
atoi( &cargv[i][sizeof("transport")] );
|
||||
tgt = &set->sss_ssf;
|
||||
src = &cargv[i][STRLENOF("ssf=")];
|
||||
|
||||
} else if( strncasecmp( cargv[i], "tls=",
|
||||
sizeof("tls") ) == 0 )
|
||||
} else if ( strncasecmp( cargv[i], "transport=",
|
||||
STRLENOF("transport=") ) == 0 )
|
||||
{
|
||||
set->sss_tls =
|
||||
atoi( &cargv[i][sizeof("tls")] );
|
||||
tgt = &set->sss_transport;
|
||||
src = &cargv[i][STRLENOF("transport=")];
|
||||
|
||||
} else if( strncasecmp( cargv[i], "sasl=",
|
||||
sizeof("sasl") ) == 0 )
|
||||
} else if ( strncasecmp( cargv[i], "tls=",
|
||||
STRLENOF("tls=") ) == 0 )
|
||||
{
|
||||
set->sss_sasl =
|
||||
atoi( &cargv[i][sizeof("sasl")] );
|
||||
tgt = &set->sss_tls;
|
||||
src = &cargv[i][STRLENOF("tls=")];
|
||||
|
||||
} else if( strncasecmp( cargv[i], "update_ssf=",
|
||||
sizeof("update_ssf") ) == 0 )
|
||||
} else if ( strncasecmp( cargv[i], "sasl=",
|
||||
STRLENOF("sasl=") ) == 0 )
|
||||
{
|
||||
set->sss_update_ssf =
|
||||
atoi( &cargv[i][sizeof("update_ssf")] );
|
||||
tgt = &set->sss_sasl;
|
||||
src = &cargv[i][STRLENOF("sasl=")];
|
||||
|
||||
} else if( strncasecmp( cargv[i], "update_transport=",
|
||||
sizeof("update_transport") ) == 0 )
|
||||
} else if ( strncasecmp( cargv[i], "update_ssf=",
|
||||
STRLENOF("update_ssf=") ) == 0 )
|
||||
{
|
||||
set->sss_update_transport =
|
||||
atoi( &cargv[i][sizeof("update_transport")] );
|
||||
tgt = &set->sss_update_ssf;
|
||||
src = &cargv[i][STRLENOF("update_ssf=")];
|
||||
|
||||
} else if( strncasecmp( cargv[i], "update_tls=",
|
||||
sizeof("update_tls") ) == 0 )
|
||||
} else if ( strncasecmp( cargv[i], "update_transport=",
|
||||
STRLENOF("update_transport=") ) == 0 )
|
||||
{
|
||||
set->sss_update_tls =
|
||||
atoi( &cargv[i][sizeof("update_tls")] );
|
||||
tgt = &set->sss_update_transport;
|
||||
src = &cargv[i][STRLENOF("update_transport=")];
|
||||
|
||||
} else if( strncasecmp( cargv[i], "update_sasl=",
|
||||
sizeof("update_sasl") ) == 0 )
|
||||
} else if ( strncasecmp( cargv[i], "update_tls=",
|
||||
STRLENOF("update_tls=") ) == 0 )
|
||||
{
|
||||
set->sss_update_sasl =
|
||||
atoi( &cargv[i][sizeof("update_sasl")] );
|
||||
tgt = &set->sss_update_tls;
|
||||
src = &cargv[i][STRLENOF("update_tls=")];
|
||||
|
||||
} else if( strncasecmp( cargv[i], "simple_bind=",
|
||||
sizeof("simple_bind") ) == 0 )
|
||||
} else if ( strncasecmp( cargv[i], "update_sasl=",
|
||||
STRLENOF("update_sasl=") ) == 0 )
|
||||
{
|
||||
set->sss_simple_bind =
|
||||
atoi( &cargv[i][sizeof("simple_bind")] );
|
||||
tgt = &set->sss_update_sasl;
|
||||
src = &cargv[i][STRLENOF("update_sasl=")];
|
||||
|
||||
} else if ( strncasecmp( cargv[i], "simple_bind=",
|
||||
STRLENOF("simple_bind=") ) == 0 )
|
||||
{
|
||||
tgt = &set->sss_simple_bind;
|
||||
src = &cargv[i][STRLENOF("simple_bind=")];
|
||||
|
||||
} else {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG( CONFIG, CRIT,
|
||||
"%s: line %d: unknown factor %S in "
|
||||
"%s: line %d: unknown factor %s in "
|
||||
"\"security <factors>\" line.\n",
|
||||
fname, lineno, cargv[1] );
|
||||
#else
|
||||
|
|
@ -1700,7 +1738,24 @@ restrict_unknown:;
|
|||
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
*tgt = strtol( src, &next, 10 );
|
||||
if ( next == NULL || next[0] != '\0' ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG( CONFIG, CRIT,
|
||||
"%s: line %d: unable to parse factor \"%s\" in "
|
||||
"\"security <factors>\" line.\n",
|
||||
fname, lineno, cargv[1] );
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: unable to parse factor \"%s\" in \"security <factors>\" line\n",
|
||||
fname, lineno, cargv[i] );
|
||||
#endif
|
||||
|
||||
return( 1 );
|
||||
}
|
||||
}
|
||||
|
||||
/* where to send clients when we don't hold it */
|
||||
} else if ( strcasecmp( cargv[0], "referral" ) == 0 ) {
|
||||
if ( cargc < 2 ) {
|
||||
|
|
@ -1768,10 +1823,22 @@ restrict_unknown:;
|
|||
"%s: line %d: Error in debug directive, \"debug subsys level\"\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
|
||||
return( 1 );
|
||||
}
|
||||
level = atoi( cargv[2] );
|
||||
level = strtol( cargv[2], &next, 10 );
|
||||
if ( next == NULL || next[0] != '\0' ){
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG( CONFIG, CRIT,
|
||||
"%s: line %d: unable to parse level \"%s\" in debug directive, "
|
||||
"\"debug <subsys> <level>\"\n", fname, lineno , cargv[2] );
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: unable to parse level \"%s\" in debug directive, "
|
||||
"\"debug <subsys> <level>\"\n", fname, lineno , cargv[2] );
|
||||
#endif
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
if ( level <= 0 ) level = lutil_mnem2level( cargv[2] );
|
||||
lutil_set_debug_level( cargv[1], level );
|
||||
/* specify an Object Identifier macro */
|
||||
|
|
@ -1898,11 +1965,11 @@ restrict_unknown:;
|
|||
if ( cargc < 2 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG( CONFIG, CRIT,
|
||||
"%s: line %d: missing level in \"loglevel <level>\""
|
||||
"%s: line %d: missing level(s) in \"loglevel <level> [...]\""
|
||||
" line.\n", fname, lineno , 0 );
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: missing level in \"loglevel <level>\" line\n",
|
||||
"%s: line %d: missing level(s) in \"loglevel <level> [...]\" line\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
|
||||
|
|
@ -1912,7 +1979,21 @@ restrict_unknown:;
|
|||
ldap_syslog = 0;
|
||||
|
||||
for( i=1; i < cargc; i++ ) {
|
||||
ldap_syslog += atoi( cargv[1] );
|
||||
int level = strtol( cargv[i], &next, 10 );
|
||||
if ( next == NULL || next[0] != '\0' ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG( CONFIG, CRIT,
|
||||
"%s: line %d: unable to parse level \"%s\" in \"loglevel <level> [...]\""
|
||||
" line.\n", fname, lineno , cargv[i] );
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: unable to parse level \"%s\" in \"loglevel <level> [...]\""
|
||||
" line.\n", fname, lineno , cargv[i] );
|
||||
#endif
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
ldap_syslog |= level;
|
||||
}
|
||||
|
||||
/* list of sync replication information in this backend (slave only) */
|
||||
|
|
|
|||
Loading…
Reference in a new issue