- This is a very tough task: try to implement a sandbox to execute
plugins in, trap deadly signals and possibly disable unsafe plugins
without crashing slapd (fork from inside thread? trap signals
- and longjump to next plugin execution? Brrr).
+ and longjump to next plugin execution? Brrr).
---
$OpenLDAP$
Slapi_PluginDesc *pPluginDesc = NULL;
lt_dlhandle hdLoadHandle;
int rc;
- char **av2 = NULL, **ppPluginArgv;
- char *path = argv[2];
- char *initfunc = argv[3];
+ char **av2 = NULL, **ppPluginArgv;
+ char *path = argv[2];
+ char *initfunc = argv[3];
pPlugin = slapi_pblock_new();
if ( pPlugin == NULL ) {
Backend *be,
Slapi_PBlock *pPB )
{
- Slapi_PBlock *pTmpPB;
- Slapi_PBlock *pSavePB;
- int rc = LDAP_SUCCESS;
+ Slapi_PBlock *pTmpPB;
+ Slapi_PBlock *pSavePB;
+ int rc = LDAP_SUCCESS;
assert( be != NULL );
{
ExtendedOp *ret;
- ret = (ExtendedOp *)ch_malloc(sizeof(ExtendedOp));
- if ( ret != NULL ) {
- ret->ext_oid.bv_val = NULL;
- ret->ext_oid.bv_len = 0;
- ret->ext_func = NULL;
- ret->ext_be = NULL;
- ret->ext_next = NULL;
- }
+ ret = (ExtendedOp *)slapi_ch_malloc(sizeof(ExtendedOp));
+ ret->ext_oid.bv_val = NULL;
+ ret->ext_oid.bv_len = 0;
+ ret->ext_func = NULL;
+ ret->ext_be = NULL;
+ ret->ext_next = NULL;
return ret;
}
}
for ( pGetPlugin = tmpPlugin ; *pGetPlugin != NULL; pGetPlugin++ ) {
- /*
- * FIXME: we should provide here a sort of sandbox,
- * to protect from plugin faults; e.g. trap signals
- * and longjump here, marking the plugin as unsafe for
- * later executions ...
- */
rc = (*pGetPlugin)(pPB);
/*
return -1;
}
- slapi_log_file = ch_strdup( LDAP_RUNDIR LDAP_DIRSEP "errors" );
+ slapi_log_file = slapi_ch_strdup( LDAP_RUNDIR LDAP_DIRSEP "errors" );
if ( slapi_log_file == NULL ) {
return -1;
}