From: Pierangelo Masarati Date: Mon, 23 May 2005 07:21:58 +0000 (+0000) Subject: authid-rewrite*: fix parsing, rework unparsing X-Git-Tag: OPENLDAP_AC_BP~613 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=c573fe70fb35432c60e22572978ed5f6377a98ea;p=openldap authid-rewrite*: fix parsing, rework unparsing --- diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c index de62eae274..d16e88edc4 100644 --- a/servers/slapd/bconfig.c +++ b/servers/slapd/bconfig.c @@ -234,7 +234,7 @@ static ConfigTable config_back_cf_table[] = { &config_generic, "( OLcfgGlAt:5 NAME 'olcAttributeOptions' " "EQUALITY caseIgnoreMatch " "SYNTAX OMsDirectoryString )", NULL, NULL }, - { "authid-rewrite", NULL, 2, 0, 0, + { "authid-rewrite", NULL, 2, 0, STRLENOF( "authid-rewrite" ), #ifdef SLAP_AUTH_REWRITE ARG_MAGIC|CFG_REWRITE|ARG_NO_INSERT, &config_generic, #else @@ -1207,9 +1207,27 @@ config_generic(ConfigArgs *c) { #ifdef SLAP_AUTH_REWRITE case CFG_REWRITE: { struct berval bv; + char *line; + if(slap_sasl_rewrite_config(c->fname, c->lineno, c->argc, c->argv)) return(1); - ber_str2bv( c->line, 0, 1, &bv ); + + if ( c->argc > 1 ) { + char *s; + + /* quote all args but the first */ + line = ldap_charray2str( c->argv, "\" \"" ); + ber_str2bv( line, 0, 0, &bv ); + s = strchr( bv.bv_val, '"' ); + assert( s != NULL ); + /* move the trailing quote of argv[0] to the end */ + AC_MEMCPY( s, s + 1, bv.bv_len - ( s - bv.bv_val ) ); + bv.bv_val[ bv.bv_len - 1 ] = '"'; + + } else { + ber_str2bv( c->argv[ 0 ], 0, 1, &bv ); + } + ber_bvarray_add( &authz_rewrites, &bv ); } break;