ldap/schema/01core389.ldif | 16 --------
ldap/servers/slapd/plugin.c | 85 +-------------------------------------------
2 files changed, 3 insertions(+), 98 deletions(-)
New commits:
commit 33da8586d71c625711c4079d5c83ad11241e236c
Author: Nathan Kinder <nkinder(a)redhat.com>
Date: Sun Aug 18 18:48:40 2013 -0700
Revert "Ticket #47431 - Duplicate values for the attribute nsslapd-pluginarg are
not handled correctly"
This reverts commit d2c5b35e20578043117f84e928d96d296bdfc046.
This commit caused a regression by introducing a hard-coded limit to
the number of plug-in arguments for some plug-ins. This needs to be
solved in a different way that doesn't limit the number of arguments.
diff --git a/ldap/schema/01core389.ldif b/ldap/schema/01core389.ldif
index 8c49918..8ef702d 100644
--- a/ldap/schema/01core389.ldif
+++ b/ldap/schema/01core389.ldif
@@ -153,22 +153,6 @@ attributeTypes: ( 2.16.840.1.113730.3.1.2152 NAME
'nsds5ReplicaProtocolTimeout'
attributeTypes: ( 2.16.840.1.113730.3.1.2154 NAME 'nsds5ReplicaBackoffMin' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
attributeTypes: ( 2.16.840.1.113730.3.1.2155 NAME 'nsds5ReplicaBackoffMax' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
attributeTypes: ( 2.16.840.1.113730.3.1.2156 NAME 'nsslapd-sasl-max-buffer-size'
DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2161 NAME 'nsslapd-pluginArg0' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2162 NAME 'nsslapd-pluginArg1' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2163 NAME 'nsslapd-pluginArg2' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2164 NAME 'nsslapd-pluginArg3' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2165 NAME 'nsslapd-pluginArg4' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2166 NAME 'nsslapd-pluginArg5' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2167 NAME 'nsslapd-pluginArg6' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2168 NAME 'nsslapd-pluginArg7' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2169 NAME 'nsslapd-pluginArg8' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2170 NAME 'nsslapd-pluginArg9' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2171 NAME 'nsslapd-pluginArg10' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2172 NAME 'nsslapd-pluginArg11' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2173 NAME 'nsslapd-pluginArg12' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2174 NAME 'nsslapd-pluginArg13' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2175 NAME 'nsslapd-pluginArg14' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
-attributeTypes: ( 2.16.840.1.113730.3.1.2176 NAME 'nsslapd-pluginArg15' DESC
'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE X-ORIGIN 'Netscape Directory Server' )
#
# objectclasses
#
diff --git a/ldap/servers/slapd/plugin.c b/ldap/servers/slapd/plugin.c
index 5430a1c..aa33b02 100644
--- a/ldap/servers/slapd/plugin.c
+++ b/ldap/servers/slapd/plugin.c
@@ -54,11 +54,6 @@
#define ROOT_BIND "directory manager"
#define ANONYMOUS_BIND "anonymous"
-/* This defines the maximum number that an nsslapd-pluginArg attribute can have.
- * A plugin can have 16 arguments nsslapd-pluginArg0 to nsslapd-pluginArg15
- */
-#define MAX_PLUGINARG_NUM 15
-
/* Forward Declarations */
static int plugin_call_list (struct slapdplugin *list, int operation, Slapi_PBlock *pb);
static int plugin_call_one (struct slapdplugin *list, int operation, Slapi_PBlock *pb);
@@ -2106,19 +2101,8 @@ plugin_setup(Slapi_Entry *plugin_entry, struct slapi_componentid
*group,
int status = 0;
int enabled = 1;
char *configdir = 0;
- int diff = 0;
- int index_prev = 0;
- char attr_prev[BUFSIZ];
- int rc = 0;
- int num_args = 0;
- Slapi_Attr *newattr = 0;
- int arg_length = 0;
- char *attrnamenum = NULL;
- char *attr_prevnum = NULL;
- int numsize = 0;
attrname[0] = '\0';
- attr_prev[0] = '\0';
if (!slapi_entry_get_sdn_const(plugin_entry))
{
@@ -2298,78 +2282,15 @@ plugin_setup(Slapi_Entry *plugin_entry, struct slapi_componentid
*group,
}
/* add the plugin arguments */
- rc = 0;
- arg_length = strlen(ATTR_PLUGIN_ARG);
-
- for (rc = slapi_entry_first_attr(plugin_entry, &newattr); !rc &&
newattr; rc = slapi_entry_next_attr(plugin_entry, newattr, &newattr))
- {
- char *type = NULL;
- slapi_attr_get_type(newattr, &type);
- if (strncasecmp(type, ATTR_PLUGIN_ARG, arg_length) == 0)
- {
- char *ptr = type;
- ptr += arg_length;
- int numdigits = 0;
- char *ptr_num = ptr;
- if ((*ptr == '\0') || ((*ptr == '0') && (*(ptr+1) !=
'\0')))
- {
- slapi_log_error( SLAPI_LOG_FATAL, plugin->plg_dn, "Invalid Plugin argument:
%s. Argument ignored\n", type);
- continue;
- }
- while(*ptr != '\0')
- {
- if (!isdigit(*ptr))
- {
- slapi_log_error( SLAPI_LOG_FATAL, plugin->plg_dn, "Invalid Plugin argument:
%s. Argument ignored\n", type);
- break;
- }
- numdigits++;
- ptr++;
- }
- if (*ptr == '\0')
- {
- if ((numdigits < 3) && (atoi(ptr_num) <= MAX_PLUGINARG_NUM))
- num_args++;
- else
- {
- slapi_log_error( SLAPI_LOG_FATAL, plugin->plg_dn, "Plugin argument value
nsslapd-pluginArg%s exceeded maximum allowed value nsslapd-pluginArg%d\n", ptr_num,
MAX_PLUGINARG_NUM);
- status = -1;
- goto PLUGIN_CLEANUP;
- }
- }
- }
- }
-
- PR_snprintf(attrname, sizeof(attrname), "%s", ATTR_PLUGIN_ARG);
- PR_snprintf(attr_prev, sizeof(attr_prev), "%s", ATTR_PLUGIN_ARG);
- attrnamenum = attrname + sizeof(ATTR_PLUGIN_ARG) -1;
- attr_prevnum = attr_prev + sizeof(ATTR_PLUGIN_ARG) -1;
- numsize = sizeof(attrname) - sizeof(ATTR_PLUGIN_ARG);
value = 0;
ii = 0;
- while (plugin->plg_argc < num_args)
+ PR_snprintf(attrname, sizeof(attrname), "%s%d", ATTR_PLUGIN_ARG, ii);
+ while ((value = slapi_entry_attr_get_charptr(plugin_entry, attrname)) != NULL)
{
- PR_snprintf(attrnamenum, numsize, "%d", ii);
- if (diff == 0)
- {
- strcpy(attr_prev, attrname);
- index_prev = ii;
- }
- while ((value = slapi_entry_attr_get_charptr(plugin_entry, attrname)) == NULL)
- {
- PR_snprintf(attrnamenum, numsize, "%d", ++ii);
- }
-
- if(strcmp(attrname, attr_prev) != 0)
- {
- slapi_entry_add_string(plugin_entry, attr_prev, value);
- slapi_entry_attr_delete(plugin_entry, attrname);
- diff = 1;
- PR_snprintf(attr_prevnum, numsize, "%d", ++index_prev);
- }
charray_add(&plugin->plg_argv, value);
plugin->plg_argc++;
++ii;
+ PR_snprintf(attrname, sizeof(attrname), "%s%d", ATTR_PLUGIN_ARG, ii);
}
memset((char *)&pb, '\0', sizeof(pb));