X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibrewrite%2Fconfig.c;h=60fc6b9b52a1aa2a242723ee1a3affd9866b217a;hb=1f635b8bcfaaac666005a88a5620e9798c9565e1;hp=b6c729406eb5aa0df8b99b5b8ce116ff36ca8a2c;hpb=dc0eacd40b625258355eea866d62188e5aa7ce3b;p=openldap diff --git a/libraries/librewrite/config.c b/libraries/librewrite/config.c index b6c729406e..60fc6b9b52 100644 --- a/libraries/librewrite/config.c +++ b/libraries/librewrite/config.c @@ -1,7 +1,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 2000-2005 The OpenLDAP Foundation. + * Copyright 2000-2007 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -104,19 +104,33 @@ rewrite_parse( return -1; } - info->li_max_passes = atoi( argv[ 1 ] ); + if ( lutil_atoi( &info->li_max_passes, argv[ 1 ] ) != 0 ) { + Debug( LDAP_DEBUG_ANY, + "[%s:%d] unable to parse rewriteMaxPasses=\"%s\"\n", + fname, lineno, argv[ 1 ] ); + return -1; + } + if ( info->li_max_passes <= 0 ) { Debug( LDAP_DEBUG_ANY, - "[%s:%d] negative or null rewriteMaxPasses'\n", + "[%s:%d] negative or null rewriteMaxPasses\n", fname, lineno, 0 ); + return -1; } if ( argc > 2 ) { - info->li_max_passes_per_rule = atoi( argv[ 2 ] ); + if ( lutil_atoi( &info->li_max_passes_per_rule, argv[ 2 ] ) != 0 ) { + Debug( LDAP_DEBUG_ANY, + "[%s:%d] unable to parse rewriteMaxPassesPerRule=\"%s\"\n", + fname, lineno, argv[ 2 ] ); + return -1; + } + if ( info->li_max_passes_per_rule <= 0 ) { Debug( LDAP_DEBUG_ANY, - "[%s:%d] negative or null rewriteMaxPassesPerRule'\n", + "[%s:%d] negative or null rewriteMaxPassesPerRule\n", fname, lineno, 0 ); + return -1; } } else { @@ -399,8 +413,8 @@ rewrite_parse_builtin_map( /* * Built-in ldap map */ - if ( strcasecmp( argv[ MAP_TYPE ], "ldap" ) == 0 ) { - map->lb_type = REWRITE_BUILTIN_MAP_LDAP; + if (( map->lb_mapper = rewrite_mapper_find( argv[ MAP_TYPE ] ))) { + map->lb_type = REWRITE_BUILTIN_MAP; #ifdef USE_REWRITE_LDAP_PVT_THREADS if ( ldap_pvt_thread_mutex_init( & map->lb_mutex ) ) { @@ -410,13 +424,14 @@ rewrite_parse_builtin_map( } #endif /* USE_REWRITE_LDAP_PVT_THREADS */ - map->lb_private = map_ldap_parse( info, fname, lineno, + map->lb_private = map->lb_mapper->rm_config( fname, lineno, argc - 3, argv + 3 ); /* * Error */ } else { + free( map ); Debug( LDAP_DEBUG_ANY, "[%s:%d] unknown map type\n%s", fname, lineno, "" ); return -1;