本文整理汇总了C++中ch_strdup函数的典型用法代码示例。如果您正苦于以下问题:C++ ch_strdup函数的具体用法?C++ ch_strdup怎么用?C++ ch_strdup使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ch_strdup函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: parse_slappasswdopt
static int
parse_slappasswdopt( void )
{
size_t len = 0;
char *p;
p = strchr( optarg, '=' );
if ( p != NULL ) {
len = p - optarg;
p++;
}
if ( strncasecmp( optarg, "module-path", len ) == 0 ) {
if ( modulepath )
ch_free( modulepath );
modulepath = ch_strdup( p );
} else if ( strncasecmp( optarg, "module-load", len ) == 0 ) {
if ( moduleload )
ch_free( moduleload );
moduleload = ch_strdup( p );
} else {
return -1;
}
return 0;
}
开发者ID:Distrotech,项目名称:openldap,代码行数:28,代码来源:slappasswd.c
示例2: slap_sasl_regexp_config
int slap_sasl_regexp_config( const char *match, const char *replace )
{
int rc;
SaslRegexp_t *reg;
SaslRegexp = (SaslRegexp_t *) ch_realloc( (char *) SaslRegexp,
(nSaslRegexp + 1) * sizeof(SaslRegexp_t) );
reg = &SaslRegexp[nSaslRegexp];
reg->sr_match = ch_strdup( match );
reg->sr_replace = ch_strdup( replace );
/* Precompile matching pattern */
rc = regcomp( ®->sr_workspace, reg->sr_match, REG_EXTENDED|REG_ICASE );
if ( rc ) {
#ifdef NEW_LOGGING
LDAP_LOG( TRANSPORT, ERR,
"slap_sasl_regexp_config: \"%s\" could not be compiled.\n",
reg->sr_match, 0, 0 );
#else
Debug( LDAP_DEBUG_ANY,
"SASL match pattern %s could not be compiled by regexp engine\n",
reg->sr_match, 0, 0 );
#endif
return( LDAP_OTHER );
}
rc = slap_sasl_rx_off( reg->sr_replace, reg->sr_offset );
if ( rc != LDAP_SUCCESS ) return rc;
nSaslRegexp++;
return( LDAP_SUCCESS );
}
开发者ID:BackupTheBerlios,项目名称:wl530g-svn,代码行数:35,代码来源:saslauthz.c
示例3: init_module
int init_module(int argc, char *argv[]) {
if (argc > 0) {
principal = ch_strdup(argv[0]);
}
if (argc > 1) {
kt_name = ch_strdup(argv[1]);
}
if (argc > 2) {
return -1;
}
return kinit_initialize();
}
开发者ID:openldap,项目名称:openldap,代码行数:12,代码来源:kinit.c
示例4: passwd_back_db_config
int
passwd_back_db_config(
BackendDB *be,
const char *fname,
int lineno,
int argc,
char **argv
)
{
/* alternate passwd file */
if ( strcasecmp( argv[0], "file" ) == 0 ) {
#ifdef HAVE_SETPWFILE
if ( argc < 2 ) {
fprintf( stderr,
"%s: line %d: missing filename in \"file <filename>\" line\n",
fname, lineno );
return( 1 );
}
be->be_private = ch_strdup( argv[1] );
#else /* HAVE_SETPWFILE */
fprintf( stderr,
"%s: line %d: ignoring \"file\" option (not supported on this platform)\n",
fname, lineno );
#endif /* HAVE_SETPWFILE */
/* anything else */
} else {
return SLAP_CONF_UNKNOWN;
}
return( 0 );
}
开发者ID:kalloc,项目名称:openldap,代码行数:32,代码来源:config.c
示例5: mdb_db_init
static int
mdb_db_init( BackendDB *be, ConfigReply *cr )
{
struct mdb_info *mdb;
int rc;
Debug( LDAP_DEBUG_TRACE,
LDAP_XSTRING(mdb_db_init) ": Initializing mdb database\n",
0, 0, 0 );
/* allocate backend-database-specific stuff */
mdb = (struct mdb_info *) ch_calloc( 1, sizeof(struct mdb_info) );
/* DBEnv parameters */
mdb->mi_dbenv_home = ch_strdup( SLAPD_DEFAULT_DB_DIR );
mdb->mi_dbenv_flags = 0;
mdb->mi_dbenv_mode = SLAPD_DEFAULT_DB_MODE;
mdb->mi_search_stack_depth = DEFAULT_SEARCH_STACK_DEPTH;
mdb->mi_search_stack = NULL;
mdb->mi_mapsize = DEFAULT_MAPSIZE;
be->be_private = mdb;
be->be_cf_ocs = be->bd_info->bi_cf_ocs;
#ifndef MDB_MULTIPLE_SUFFIXES
SLAP_DBFLAGS( be ) |= SLAP_DBFLAG_ONE_SUFFIX;
#endif
rc = mdb_monitor_db_init( be );
return rc;
}
开发者ID:rouzier,项目名称:openldap,代码行数:34,代码来源:init.c
示例6: collect_error_msg_cb
static int collect_error_msg_cb( Operation *op, SlapReply *rs)
{
if(rs->sr_text)
{
op->o_callback->sc_private = (void *) ch_strdup(rs->sr_text);
}
return LDAP_SUCCESS;
}
开发者ID:Distrotech,项目名称:openldap,代码行数:9,代码来源:addpartial-overlay.c
示例7: backsql_merge_from_clause
int
backsql_merge_from_clause(
backsql_info *bi,
struct berbuf *dest_from,
struct berval *src_from )
{
char *s, *p, *srcc, *pos, e;
struct berbuf res = BB_NULL;
#ifdef BACKSQL_TRACE
Debug( LDAP_DEBUG_TRACE, "==>backsql_merge_from_clause(): "
"dest_from=\"%s\",src_from=\"%s\"\n",
dest_from ? dest_from->bb_val.bv_val : "<NULL>",
src_from->bv_val, 0 );
#endif /* BACKSQL_TRACE */
srcc = ch_strdup( src_from->bv_val );
p = srcc;
if ( dest_from != NULL ) {
res = *dest_from;
}
while ( *p ) {
s = backsql_get_table_spec( bi, &p );
#ifdef BACKSQL_TRACE
Debug( LDAP_DEBUG_TRACE, "backsql_merge_from_clause(): "
"p=\"%s\" s=\"%s\"\n", p, s, 0 );
#endif /* BACKSQL_TRACE */
if ( BER_BVISNULL( &res.bb_val ) ) {
backsql_strcat_x( &res, NULL, s, NULL );
} else {
pos = strstr( res.bb_val.bv_val, s );
if ( pos == NULL || ( ( e = pos[ strlen( s ) ] ) != '\0' && e != ',' ) ) {
backsql_strfcat_x( &res, NULL, "cs", ',', s );
}
}
if ( s ) {
ch_free( s );
}
}
#ifdef BACKSQL_TRACE
Debug( LDAP_DEBUG_TRACE, "<==backsql_merge_from_clause()\n", 0, 0, 0 );
#endif /* BACKSQL_TRACE */
free( srcc );
*dest_from = res;
return 1;
}
开发者ID:rashoodkhan,项目名称:ldap-server-mirror,代码行数:55,代码来源:util.c
示例8: mdb_db_init
static int
mdb_db_init( BackendDB *be, ConfigReply *cr )
{
struct mdb_info *mdb;
int rc;
Debug( LDAP_DEBUG_TRACE,
LDAP_XSTRING(mdb_db_init) ": Initializing mdb database\n" );
#if MDBX_MODE_ENABLED
unsigned flags = mdbx_setup_debug(MDBX_DBG_DNT, mdbx_debug, MDBX_DBG_DNT);
flags &= ~(MDBX_DBG_TRACE | MDBX_DBG_EXTRA | MDBX_DBG_ASSERT);
if (reopenldap_mode_check())
flags |= MDBX_DBG_ASSERT;
# if LDAP_DEBUG > 1
flags |= MDBX_DBG_PRINT | MDBX_DBG_TRACE;
# endif /* LDAP_DEBUG > 1 */
# if LDAP_DEBUG > 2
flags |= MDBX_DBG_EXTRA;
# endif /* LDAP_DEBUG > 2 */
mdbx_setup_debug(flags, (MDBX_debug_func*) MDBX_DBG_DNT, MDBX_DBG_DNT);
#endif /* MDBX_MODE_ENABLED */
/* allocate backend-database-specific stuff */
mdb = (struct mdb_info *) ch_calloc( 1, sizeof(struct mdb_info) );
/* DBEnv parameters */
mdb->mi_dbenv_home = ch_strdup( SLAPD_DEFAULT_DB_DIR );
mdb->mi_dbenv_flags = 0;
mdb->mi_dbenv_mode = SLAPD_DEFAULT_DB_MODE;
mdb->mi_search_stack_depth = DEFAULT_SEARCH_STACK_DEPTH;
mdb->mi_search_stack = NULL;
mdb->mi_mapsize = DEFAULT_MAPSIZE;
mdb->mi_rtxn_size = DEFAULT_RTXN_SIZE;
be->be_private = mdb;
be->be_cf_ocs = be->bd_info->bi_cf_ocs;
#ifndef MDB_MULTIPLE_SUFFIXES
SLAP_DBFLAGS( be ) |= SLAP_DBFLAG_ONE_SUFFIX;
#endif
slap_backtrace_set_dir( mdb->mi_dbenv_home );
ldap_pvt_thread_mutex_init( &mdb->mi_ads_mutex );
rc = mdb_monitor_db_init( be );
return rc;
}
开发者ID:osstech-jp,项目名称:ReOpenLDAP,代码行数:53,代码来源:init.c
示例9: wt_db_init
static int
wt_db_init( BackendDB *be, ConfigReply *cr )
{
struct wt_info *wi;
Debug( LDAP_DEBUG_TRACE,
LDAP_XSTRING(wt_db_init) ": Initializing wt backend\n",
0, 0, 0 );
/* allocate backend-database-specific stuff */
wi = ch_calloc( 1, sizeof(struct wt_info) );
wi->wi_dbenv_home = ch_strdup( SLAPD_DEFAULT_DB_DIR );
wi->wi_dbenv_config = ch_strdup("create");
wi->wi_lastid = 0;
wi->wi_search_stack_depth = DEFAULT_SEARCH_STACK_DEPTH;
wi->wi_search_stack = NULL;
be->be_private = wi;
be->be_cf_ocs = be->bd_info->bi_cf_ocs;
return LDAP_SUCCESS;
}
开发者ID:osstech-jp,项目名称:openldap,代码行数:23,代码来源:init.c
示例10: bdb_db_init
static int
bdb_db_init( BackendDB *be, ConfigReply *cr )
{
struct bdb_info *bdb;
int rc;
Debug( LDAP_DEBUG_TRACE,
LDAP_XSTRING(bdb_db_init) ": Initializing " BDB_UCTYPE " database\n",
0, 0, 0 );
/* allocate backend-database-specific stuff */
bdb = (struct bdb_info *) ch_calloc( 1, sizeof(struct bdb_info) );
/* DBEnv parameters */
bdb->bi_dbenv_home = ch_strdup( SLAPD_DEFAULT_DB_DIR );
bdb->bi_dbenv_xflags = DB_TIME_NOTGRANTED;
bdb->bi_dbenv_mode = SLAPD_DEFAULT_DB_MODE;
bdb->bi_cache.c_maxsize = DEFAULT_CACHE_SIZE;
bdb->bi_cache.c_minfree = 1;
bdb->bi_lock_detect = DB_LOCK_DEFAULT;
bdb->bi_search_stack_depth = DEFAULT_SEARCH_STACK_DEPTH;
bdb->bi_search_stack = NULL;
ldap_pvt_thread_mutex_init( &bdb->bi_database_mutex );
ldap_pvt_thread_mutex_init( &bdb->bi_lastid_mutex );
#ifdef BDB_HIER
ldap_pvt_thread_mutex_init( &bdb->bi_modrdns_mutex );
#endif
ldap_pvt_thread_mutex_init( &bdb->bi_cache.c_lru_mutex );
ldap_pvt_thread_mutex_init( &bdb->bi_cache.c_count_mutex );
ldap_pvt_thread_mutex_init( &bdb->bi_cache.c_eifree_mutex );
ldap_pvt_thread_mutex_init( &bdb->bi_cache.c_dntree.bei_kids_mutex );
ldap_pvt_thread_rdwr_init ( &bdb->bi_cache.c_rwlock );
ldap_pvt_thread_rdwr_init( &bdb->bi_idl_tree_rwlock );
ldap_pvt_thread_mutex_init( &bdb->bi_idl_tree_lrulock );
be->be_private = bdb;
be->be_cf_ocs = be->bd_info->bi_cf_ocs;
#ifndef BDB_MULTIPLE_SUFFIXES
SLAP_DBFLAGS( be ) |= SLAP_DBFLAG_ONE_SUFFIX;
#endif
rc = bdb_monitor_db_init( be );
return rc;
}
开发者ID:Joywar,项目名称:openldap,代码行数:49,代码来源:init.c
示例11: word_dup
static char *
word_dup( char *w )
{
char *s, *ret;
char save;
for ( s = w; !iswordbreak( *s ); s++ )
; /* NULL */
save = *s;
*s = '\0';
ret = ch_strdup( w );
*s = save;
return( ret );
}
开发者ID:gosudream,项目名称:netbsd-src,代码行数:15,代码来源:phonetic.c
示例12: ch_strdup
static char *v2ref( BerVarray ref, const char *text )
{
size_t len = 0, i = 0;
char *v2;
if(ref == NULL) {
if (text) {
return ch_strdup(text);
} else {
return NULL;
}
}
if ( text != NULL ) {
len = strlen( text );
if (text[len-1] != '\n') {
i = 1;
}
}
v2 = ch_malloc( len+i+sizeof("Referral:") );
if( text != NULL ) {
strcpy(v2, text);
if( i ) {
v2[len++] = '\n';
}
}
strcpy( v2+len, "Referral:" );
len += sizeof("Referral:");
for( i=0; ref[i].bv_val != NULL; i++ ) {
v2 = ch_realloc( v2, len + ref[i].bv_len + 1 );
v2[len-1] = '\n';
memcpy(&v2[len], ref[i].bv_val, ref[i].bv_len );
len += ref[i].bv_len;
if (ref[i].bv_val[ref[i].bv_len-1] != '/') {
++len;
}
}
v2[len-1] = '\0';
return v2;
}
开发者ID:Smilefant,项目名称:ReOpenLDAP,代码行数:44,代码来源:result.c
示例13: backsql_api_config
int
backsql_api_config( backsql_info *bi, const char *name, int argc, char *argv[] )
{
backsql_api *ba;
assert( bi != NULL );
assert( name != NULL );
for ( ba = backsqlapi; ba; ba = ba->ba_next ) {
if ( strcasecmp( name, ba->ba_name ) == 0 ) {
backsql_api *ba2;
ba2 = ch_malloc( sizeof( backsql_api ) );
*ba2 = *ba;
if ( ba2->ba_config ) {
if ( ( *ba2->ba_config )( ba2, argc, argv ) ) {
ch_free( ba2 );
return 1;
}
ba2->ba_argc = argc;
if ( argc ) {
int i;
ba2->ba_argv = ch_malloc( argc * sizeof(char *));
for ( i=0; i<argc; i++ )
ba2->ba_argv[i] = ch_strdup( argv[i] );
}
}
ba2->ba_next = bi->sql_api;
bi->sql_api = ba2;
return 0;
}
}
return 1;
}
开发者ID:osstech-jp,项目名称:ReOpenLDAP,代码行数:37,代码来源:api.c
示例14: passwd_back_search
int
passwd_back_search(
Operation *op,
SlapReply *rs )
{
struct passwd *pw;
time_t stoptime = (time_t)-1;
LDAPRDN rdn = NULL;
struct berval parent = BER_BVNULL;
AttributeDescription *ad_objectClass = slap_schema.si_ad_objectClass;
if ( op->ors_tlimit != SLAP_NO_LIMIT ) {
stoptime = op->o_time + op->ors_tlimit;
}
/* Handle a query for the base of this backend */
if ( be_issuffix( op->o_bd, &op->o_req_ndn ) ) {
struct berval val;
rs->sr_matched = op->o_req_dn.bv_val;
if( op->ors_scope != LDAP_SCOPE_ONELEVEL ) {
AttributeDescription *desc = NULL;
char *next;
Entry e = { 0 };
/* Create an entry corresponding to the base DN */
e.e_name.bv_val = ch_strdup( op->o_req_dn.bv_val );
e.e_name.bv_len = op->o_req_dn.bv_len;
e.e_nname.bv_val = ch_strdup( op->o_req_ndn.bv_val );
e.e_nname.bv_len = op->o_req_ndn.bv_len;
/* Use the first attribute of the DN
* as an attribute within the entry itself.
*/
if( ldap_bv2rdn( &op->o_req_dn, &rdn, &next,
LDAP_DN_FORMAT_LDAP ) )
{
rs->sr_err = LDAP_INVALID_DN_SYNTAX;
goto done;
}
if( slap_bv2ad( &rdn[0]->la_attr, &desc, &rs->sr_text )) {
rs->sr_err = LDAP_NO_SUCH_OBJECT;
ldap_rdnfree(rdn);
goto done;
}
attr_merge_normalize_one( &e, desc, &rdn[0]->la_value, NULL );
ldap_rdnfree(rdn);
rdn = NULL;
/* Every entry needs an objectclass. We don't really
* know if our hardcoded choice here agrees with the
* DN that was configured for this backend, but it's
* better than nothing.
*
* should be a configuratable item
*/
BER_BVSTR( &val, "organizationalUnit" );
attr_merge_one( &e, ad_objectClass, &val, NULL );
if ( test_filter( op, &e, op->ors_filter ) == LDAP_COMPARE_TRUE ) {
rs->sr_entry = &e;
rs->sr_attrs = op->ors_attrs;
rs->sr_flags = REP_ENTRY_MODIFIABLE;
send_search_entry( op, rs );
rs->sr_flags = 0;
rs->sr_attrs = NULL;
}
entry_clean( &e );
}
if ( op->ors_scope != LDAP_SCOPE_BASE ) {
/* check all our "children" */
ldap_pvt_thread_mutex_lock( &passwd_mutex );
pw_start( op->o_bd );
for ( pw = getpwent(); pw != NULL; pw = getpwent() ) {
Entry e = { 0 };
/* check for abandon */
if ( op->o_abandon ) {
endpwent();
ldap_pvt_thread_mutex_unlock( &passwd_mutex );
return( SLAPD_ABANDON );
}
/* check time limit */
if ( op->ors_tlimit != SLAP_NO_LIMIT
&& slap_get_time() > stoptime )
{
send_ldap_error( op, rs, LDAP_TIMELIMIT_EXCEEDED, NULL );
endpwent();
ldap_pvt_thread_mutex_unlock( &passwd_mutex );
return( 0 );
//.........这里部分代码省略.........
开发者ID:winlibs,项目名称:openldap,代码行数:101,代码来源:search.c
示例15: ldbm_back_referrals
int
ldbm_back_referrals(
Backend *be,
Connection *conn,
Operation *op,
struct berval *dn,
struct berval *ndn,
const char **text )
{
struct ldbminfo *li = (struct ldbminfo *) be->be_private;
int rc = LDAP_SUCCESS;
Entry *e, *matched;
if( op->o_tag == LDAP_REQ_SEARCH ) {
/* let search take care of itself */
return rc;
}
if( get_manageDSAit( op ) ) {
/* let op take care of DSA management */
return rc;
}
/* grab giant lock for reading */
ldap_pvt_thread_rdwr_rlock(&li->li_giant_rwlock);
/* get entry with reader lock */
e = dn2entry_r( be, ndn, &matched );
if ( e == NULL ) {
char *matched_dn = NULL;
BerVarray refs = NULL;
if ( matched != NULL ) {
matched_dn = ch_strdup( matched->e_dn );
#ifdef NEW_LOGGING
LDAP_LOG( BACK_LDBM, DETAIL1,
"ldbm_back_referrals: op=%ld target=\"%s\" matched=\"%s\"\n",
op->o_tag, dn->bv_val, matched_dn );
#else
Debug( LDAP_DEBUG_TRACE,
"ldbm_referrals: op=%ld target=\"%s\" matched=\"%s\"\n",
op->o_tag, dn->bv_val, matched_dn );
#endif
if( is_entry_referral( matched ) ) {
rc = LDAP_OTHER;
refs = get_entry_referrals( be, conn, op, matched );
}
cache_return_entry_r( &li->li_cache, matched );
} else if ( default_referral != NULL ) {
rc = LDAP_OTHER;
refs = referral_rewrite( default_referral,
NULL, dn, LDAP_SCOPE_DEFAULT );
}
ldap_pvt_thread_rdwr_runlock(&li->li_giant_rwlock);
if( refs != NULL ) {
/* send referrals */
send_ldap_result( conn, op, rc = LDAP_REFERRAL,
matched_dn, NULL, refs, NULL );
ber_bvarray_free( refs );
} else if ( rc != LDAP_SUCCESS ) {
send_ldap_result( conn, op, rc, matched_dn,
matched_dn ? "bad referral object" : "bad default referral",
NULL, NULL );
}
if ( matched_dn ) free( matched_dn );
return rc;
}
if ( is_entry_referral( e ) ) {
/* entry is a referral */
BerVarray refs = get_entry_referrals( be, conn, op, e );
BerVarray rrefs = referral_rewrite(
refs, &e->e_name, dn, LDAP_SCOPE_DEFAULT );
#ifdef NEW_LOGGING
LDAP_LOG( BACK_LDBM, DETAIL1,
"ldbm_referrals: op=%ld target=\"%s\" matched=\"%s\"\n",
op->o_tag, dn->bv_val, e->e_dn );
#else
Debug( LDAP_DEBUG_TRACE,
"ldbm_referrals: op=%ld target=\"%s\" matched=\"%s\"\n",
op->o_tag, dn->bv_val, e->e_dn );
#endif
if( rrefs != NULL ) {
send_ldap_result( conn, op, rc = LDAP_REFERRAL,
e->e_dn, NULL, rrefs, NULL );
ber_bvarray_free( rrefs );
} else {
send_ldap_result( conn, op, rc = LDAP_OTHER, e->e_dn,
//.........这里部分代码省略.........
开发者ID:BackupTheBerlios,项目名称:wl530g-svn,代码行数:101,代码来源:referral.c
示例16: wt_compare
int
wt_compare( Operation *op, SlapReply *rs )
{
struct wt_info *wi = (struct wt_info *) op->o_bd->be_private;
Entry *e = NULL;
int manageDSAit = get_manageDSAit( op );
int rc;
wt_ctx *wc = NULL;
Debug( LDAP_DEBUG_ARGS, "==> " LDAP_XSTRING(wt_compare) ": %s\n",
op->o_req_dn.bv_val, 0, 0 );
wc = wt_ctx_get(op, wi);
if( !wc ){
Debug( LDAP_DEBUG_ANY,
LDAP_XSTRING(wt_compare)
": wt_ctx_get failed\n",
0, 0, 0 );
rs->sr_err = LDAP_OTHER;
rs->sr_text = "internal error";
send_ldap_result( op, rs );
return rs->sr_err;
}
rs->sr_err = wt_dn2entry(op->o_bd, wc, &op->o_req_ndn, &e);
switch( rs->sr_err ) {
case 0:
case WT_NOTFOUND:
break;
default:
rs->sr_err = LDAP_OTHER;
rs->sr_text = "internal error";
goto return_results;
}
if ( rs->sr_err == WT_NOTFOUND ) {
if ( e != NULL ) {
/* return referral only if "disclose" is granted on the object */
if ( ! access_allowed( op, e, slap_schema.si_ad_entry,
NULL, ACL_DISCLOSE, NULL ) )
{
rs->sr_err = LDAP_NO_SUCH_OBJECT;
} else {
rs->sr_matched = ch_strdup( e->e_dn );
if ( is_entry_referral( e )) {
BerVarray ref = get_entry_referrals( op, e );
rs->sr_ref = referral_rewrite( ref,
&e->e_name,
&op->o_req_dn,
LDAP_SCOPE_DEFAULT );
ber_bvarray_free( ref );
} else {
rs->sr_ref = NULL;
}
rs->sr_err = LDAP_REFERRAL;
}
wt_entry_return( e );
e = NULL;
} else {
rs->sr_ref = referral_rewrite( default_referral,
NULL,
&op->o_req_dn,
LDAP_SCOPE_DEFAULT );
rs->sr_err = rs->sr_ref ? LDAP_REFERRAL : LDAP_NO_SUCH_OBJECT;
}
rs->sr_flags = REP_MATCHED_MUSTBEFREED | REP_REF_MUSTBEFREED;
send_ldap_result( op, rs );
goto done;
}
if (!manageDSAit && is_entry_referral( e ) ) {
/* return referral only if "disclose" is granted on the object */
if ( !access_allowed( op, e, slap_schema.si_ad_entry,
NULL, ACL_DISCLOSE, NULL ) )
{
rs->sr_err = LDAP_NO_SUCH_OBJECT;
} else {
/* entry is a referral, don't allow compare */
rs->sr_ref = get_entry_referrals( op, e );
rs->sr_err = LDAP_REFERRAL;
rs->sr_matched = e->e_name.bv_val;
}
Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0, 0, 0 );
send_ldap_result( op, rs );
ber_bvarray_free( rs->sr_ref );
rs->sr_ref = NULL;
rs->sr_matched = NULL;
goto done;
}
rs->sr_err = slap_compare_entry( op, e, op->orc_ava );
return_results:
send_ldap_result( op, rs );
switch ( rs->sr_err ) {
//.........这里部分代码省略.........
开发者ID:Distrotech,项目名称:openldap,代码行数:101,代码来源:compare.c
示例17: slappasswd
int
slappasswd( int argc, char *argv[] )
{
int rc = EXIT_SUCCESS;
#ifdef LUTIL_SHA1_BYTES
char *default_scheme = "{SSHA}";
#else
char *default_scheme = "{SMD5}";
#endif
char *scheme = default_scheme;
char *newpw = NULL;
char *pwfile = NULL;
const char *text;
const char *progname = "slappasswd";
int i;
char *newline = "\n";
struct berval passwd = BER_BVNULL;
struct berval hash;
#ifdef LDAP_DEBUG
/* tools default to "none", so that at least LDAP_DEBUG_ANY
* messages show up; use -d 0 to reset */
slap_debug = LDAP_DEBUG_NONE;
#endif
ldap_syslog = 0;
while( (i = getopt( argc, argv,
"c:d:gh:no:s:T:vu" )) != EOF )
{
switch (i) {
case 'c': /* crypt salt format */
scheme = "{CRYPT}";
lutil_salt_format( optarg );
break;
case 'g': /* new password (generate) */
if ( pwfile != NULL ) {
fprintf( stderr, "Option -g incompatible with -T\n" );
return EXIT_FAILURE;
} else if ( newpw != NULL ) {
fprintf( stderr, "New password already provided\n" );
return EXIT_FAILURE;
} else if ( lutil_passwd_generate( &passwd, 8 )) {
fprintf( stderr, "Password generation failed\n" );
return EXIT_FAILURE;
}
break;
case 'h': /* scheme */
if ( scheme != default_scheme ) {
fprintf( stderr, "Scheme already provided\n" );
return EXIT_FAILURE;
} else {
scheme = ch_strdup( optarg );
}
break;
case 'n':
newline = "";
break;
case 'o':
if ( parse_slappasswdopt() ) {
usage ( progname );
}
break;
case 's': /* new password (secret) */
if ( pwfile != NULL ) {
fprintf( stderr, "Option -s incompatible with -T\n" );
return EXIT_FAILURE;
} else if ( newpw != NULL ) {
fprintf( stderr, "New password already provided\n" );
return EXIT_FAILURE;
} else {
char* p;
newpw = ch_strdup( optarg );
for( p = optarg; *p != '\0'; p++ ) {
*p = '\0';
}
}
break;
case 'T': /* password file */
if ( pwfile != NULL ) {
fprintf( stderr, "Password file already provided\n" );
return EXIT_FAILURE;
} else if ( newpw != NULL ) {
fprintf( stderr, "Option -T incompatible with -s/-g\n" );
return EXIT_FAILURE;
//.........这里部分代码省略.........
开发者ID:Distrotech,项目名称:openldap,代码行数:101,代码来源:slappasswd.c
示例18: slappasswd
int
slappasswd( int argc, char *argv[] )
{
#ifdef LUTIL_SHA1_BYTES
char *default_scheme = "{SSHA}";
#else
char *default_scheme = "{SMD5}";
#endif
char *scheme = default_scheme;
char *newpw = NULL;
char *pwfile = NULL;
const char *text;
const char *progname = "slappasswd";
int i;
char *newline = "\n";
struct berval passwd = BER_BVNULL;
struct berval hash;
while( (i = getopt( argc, argv,
"c:d:gh:ns:T:vu" )) != EOF )
{
switch (i) {
case 'c': /* crypt salt format */
scheme = "{CRYPT}";
lutil_salt_format( optarg );
break;
case 'g': /* new password (generate) */
if ( pwfile != NULL ) {
fprintf( stderr, "Option -g incompatible with -T\n" );
return EXIT_FAILURE;
} else if ( newpw != NULL ) {
fprintf( stderr, "New password already provided\n" );
return EXIT_FAILURE;
} else if ( lutil_passwd_generate( &passwd, 8 )) {
fprintf( stderr, "Password generation failed\n" );
return EXIT_FAILURE;
}
break;
case 'h': /* scheme */
if ( scheme != default_scheme ) {
fprintf( stderr, "Scheme already provided\n" );
return EXIT_FAILURE;
} else {
scheme = ch_strdup( optarg );
}
break;
case 'n':
newline = "";
break;
case 's': /* new password (secret) */
if ( pwfile != NULL ) {
fprintf( stderr, "Option -s incompatible with -T\n" );
return EXIT_FAILURE;
} else if ( newpw != NULL ) {
fprintf( stderr, "New password already provided\n" );
return EXIT_FAILURE;
} else {
char* p;
newpw = ch_strdup( optarg );
for( p = optarg; *p != '\0'; p++ ) {
*p = '\0';
}
}
break;
case 'T': /* password file */
if ( pwfile != NULL ) {
fprintf( stderr, "Password file already provided\n" );
return EXIT_FAILURE;
} else if ( newpw != NULL ) {
fprintf( stderr, "Option -T incompatible with -s/-g\n" );
return EXIT_FAILURE;
}
pwfile = optarg;
break;
case 'u': /* RFC2307 userPassword */
break;
case 'v': /* verbose */
verbose++;
break;
default:
usage ( progname );
}
//.........这里部分代码省略.........
开发者ID:FarazShaikh,项目名称:LikewiseSMB2,代码行数:101,代码来源:slappasswd.c
示例19: autoca_cf
static int autoca_cf( ConfigArgs *c )
{
slap_overinst *on = (slap_overinst *)c->bi;
autoca_info *ai = on->on_bi.bi_private;
int rc = 0;
switch( c->op ) {
case SLAP_CONFIG_EMIT:
switch( c->type ) {
case ACA_USRCLASS:
if ( ai->ai_usrclass ) {
c->value_string = ch_strdup( ai->ai_usrclass->soc_cname.bv_val );
} else {
rc = 1;
}
break;
case ACA_SRVCLASS:
if ( ai->ai_srvclass ) {
c->value_string = ch_strdup( ai->ai_srvclass->soc_cname.bv_val );
} else {
rc = 1;
}
break;
case ACA_USRKEYBITS:
c->value_int = ai->ai_usrkeybits;
break;
case ACA_SRVKEYBITS:
c->value_int = ai->ai_srvkeybits;
break;
case ACA_CAKEYBITS:
c->value_int = ai->ai_cakeybits;
break;
case ACA_USRDAYS:
c->value_int = ai->ai_usrdays;
break;
case ACA_SRVDAYS:
c->value_int = ai->ai_srvdays;
break;
case ACA_CADAYS:
c->value_int = ai->ai_cadays;
break;
case ACA_LOCALDN:
if ( !BER_BVISNULL( &ai->ai_localdn )) {
rc = value_add_one( &c->rvalue_vals, &ai->ai_localdn );
} else {
rc = 1;
}
break;
}
break;
case LDAP_MOD_DELETE:
switch( c->type ) {
case ACA_USRCLASS:
ai->ai_usrclass = NULL;
break;
case ACA_SRVCLASS:
ai->ai_srvclass = NULL;
break;
case ACA_LOCALDN:
if ( ai->ai_localdn.bv_val ) {
ch_free( ai->ai_localdn.bv_val );
ch_free( ai->ai_localndn.bv_val );
BER_BVZERO( &ai->ai_localdn );
BER_BVZERO( &ai->ai_localndn );
}
break;
/* single-valued attrs, all no-ops */
}
break;
case SLAP_CONFIG_ADD:
case LDAP_MOD_ADD:
switch( c->type ) {
case ACA_USRCLASS:
{
ObjectClass *oc = oc_find( c->value_string );
if ( oc )
ai->ai_usrclass = oc;
else
rc = 1;
}
break;
case ACA_SRVCLASS:
{
ObjectClass *oc = oc_find( c->value_string );
if ( oc )
ai->ai_srvclass = oc;
else
rc = 1;
}
case ACA_USRKEYBITS:
if ( c->value_int < MIN_KEYBITS )
rc = 1;
else
ai->ai_usrkeybits = c->value_int;
break;
case ACA_SRVKEYBITS:
if ( c->value_int < MIN_KEYBITS )
rc = 1;
else
ai->ai_srvkeybits = c->value_int;
//.........这里部分代码省略.........
开发者ID:osstech-jp,项目名称:openldap,代码行数:101,代码来源:autoca.c
示例20: bdb_compare
int
bdb_compare( Operation *op, SlapReply *rs )
{
struct bdb_info *bdb = (struct bdb_info *) op->o_bd->be_private;
Entry *e = NULL;
EntryInfo *ei;
int manageDSAit = get_manageDSAit( op );
DB_TXN *rtxn;
DB_LOCK lock;
rs->sr_err = bdb_reader_get(op, bdb->bi_dbenv, &rtxn);
switch(rs->sr_err) {
case 0:
break;
default:
send_ldap_error( op, rs, LDAP_OTHER, "internal error" );
return rs->sr_err;
}
dn2entry_retry:
/* get entry */
rs->sr_err = bdb_dn2entry( op, rtxn, &op->o_req_ndn, &ei, 1,
&lock );
switch( rs->sr_err ) {
case DB_NOTFOUND:
case 0:
break;
case LDAP_BUSY:
rs->sr_text = "ldap server busy";
goto return_results;
case DB_LOCK_DEADLOCK:
case DB_LOCK_NOTGRANTED:
goto dn2entry_retry;
default:
rs->sr_err = LDAP_OTHER;
rs->sr_text = "internal error";
goto return_results;
}
e = ei->bei_e;
if ( rs->sr_err == DB_NOTFOUND ) {
if ( e != NULL ) {
/* return referral only if "disclose" is granted on the object */
if ( ! access_allowed( op, e, slap_schema.si_ad_entry,
NULL, ACL_DISCLOSE, NULL ) )
{
rs->sr_err = LDAP_NO_SUCH_OBJECT;
} else {
rs->sr_matched = ch_strdup( e->e_dn );
rs->sr_ref = is_entry_referral( e )
? get_entry_referrals( op, e )
: NULL;
rs->sr_err = LDAP_REFERRAL;
}
bdb_cache_return_entry_r( bdb, e, &lock );
e = NULL;
} else {
rs->sr_ref = referral_rewrite( default_referral,
NULL, &op->o_req_dn, LDAP_SCOPE_DEFAULT );
rs->sr_err = rs->sr_ref ? LDAP_REFERRAL : LDAP_NO_SUCH_OBJECT;
}
send_ldap_result( op, rs );
ber_bvarray_free( rs->sr_ref );
free( (char *)rs->sr_matched );
rs->sr_ref = NULL;
rs->sr_matched = NULL;
goto done;
}
if (!manageDSAit && is_entry_referral( e ) ) {
/* return referral only if "disclose" is granted on the object */
if ( !access_allowed( op, e, slap_schema.si_ad_entry,
NULL, ACL_DISCLOSE, NULL ) )
{
rs->sr_err = LDAP_NO_SUCH_OBJECT;
} else {
/* entry is a referral, don't allow compare */
rs->sr_ref = get_entry_referrals( op, e );
rs->sr_err = LDAP_REFERRAL;
rs->sr_matched = e->e_name.bv_val;
}
Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0, 0, 0 );
send_ldap_result( op, rs );
ber_bvarray_free( rs->sr_ref );
rs->sr_ref = NULL;
rs->sr_matched = NULL;
goto done;
}
//.........这里部分代码省略.........
开发者ID:benegon,项目名称:openldap,代码行数:101,代码来源:compare.c
注:本文中的ch_strdup函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论