aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/lib
diff options
context:
space:
mode:
authorDavid M. Syzdek <david@syzdek.net>2019-11-26 15:38:28 -0900
committerDavid M. Syzdek <david@syzdek.net>2019-11-26 15:38:28 -0900
commitac31dd14b7ddcb4013894dd91ce07378e1635b87 (patch)
tree6b3b0cc5dfe5b9691fde0950d19389439931de7f /lib
parent2e2badcca078c6c9856af70ef1485c1abacb90a8 (diff)
downloadldap-utils-ac31dd14b7ddcb4013894dd91ce07378e1635b87.tar.gz
ldap-utils-ac31dd14b7ddcb4013894dd91ce07378e1635b87.tar.bz2
ldap-utils-ac31dd14b7ddcb4013894dd91ce07378e1635b87.tar.xz
ldap-utils-ac31dd14b7ddcb4013894dd91ce07378e1635b87.zip
libldapschema: refactoring ldapschema_parse_objectclass() registrations
Diffstat (limited to 'lib')
-rw-r--r--lib/libldapschema/llexer.c47
1 files changed, 2 insertions, 45 deletions
diff --git a/lib/libldapschema/llexer.c b/lib/libldapschema/llexer.c
index a8c2654..7931ec3 100644
--- a/lib/libldapschema/llexer.c
+++ b/lib/libldapschema/llexer.c
@@ -804,7 +804,6 @@ LDAPSchemaObjectclass * ldapschema_parse_objectclass(LDAPSchema * lsd, const str
804 int argc; 804 int argc;
805 int err; 805 int err;
806 LDAPSchemaObjectclass * objcls; 806 LDAPSchemaObjectclass * objcls;
807 LDAPSchemaAlias * alias;
808 807
809 objcls = NULL; 808 objcls = NULL;
810 argv = NULL; 809 argv = NULL;
@@ -983,54 +982,12 @@ LDAPSchemaObjectclass * ldapschema_parse_objectclass(LDAPSchema * lsd, const str
983 // adds specification to syntax 982 // adds specification to syntax
984 objcls->model.spec = ldapschema_spec_search(objcls->model.oid); 983 objcls->model.spec = ldapschema_spec_search(objcls->model.oid);
985 984
986 // adds objectClass into OID list 985 // register objectClass
987 if ((err = ldapschema_insert(lsd, (void ***)&lsd->oids, &lsd->oids_len, objcls, ldapschema_compar_models)) > 0) 986 if ((err = ldapschema_model_register(lsd, &objcls->model)) != LDAP_SUCCESS)
988 { 987 {
989 ldapschema_objectclass_free(objcls); 988 ldapschema_objectclass_free(objcls);
990 return(NULL); 989 return(NULL);
991 }; 990 };
992 if (err == -1)
993 {
994 ldapschema_schema_err(lsd, &objcls->model, "LDAP definition defines duplicate OID '%s'", objcls->model.oid);
995 if ((err = ldapschema_append(lsd,(void ***)&lsd->dups, &lsd->dups_len, objcls)) != LDAP_SUCCESS)
996 {
997 ldapschema_objectclass_free(objcls);
998 return(NULL);
999 };
1000 };
1001
1002 // adds objectclass into objectclass list using OID and names
1003 if ((alias = malloc(sizeof(LDAPSchemaAlias *))) == NULL)
1004 {
1005 lsd->errcode = LDAPSCHEMA_NO_MEMORY;
1006 return(NULL);
1007 };
1008 alias->alias = objcls->model.oid;
1009 alias->objectclass = objcls;
1010 if ((err = ldapschema_insert(lsd, (void ***)&lsd->objclses, &lsd->objclses_len, alias, ldapschema_compar_aliases)) > 0)
1011 {
1012 free(alias);
1013 return(NULL);
1014 };
1015 if (err == -1)
1016 ldapschema_schema_err(lsd, &objcls->model, " objectClasses with duplicate oid '%s' found", objcls->model.oid);
1017 for(pos = 0; (size_t)pos < objcls->names_len; pos++)
1018 {
1019 if ((alias = malloc(sizeof(LDAPSchemaAlias *))) == NULL)
1020 {
1021 lsd->errcode = LDAPSCHEMA_NO_MEMORY;
1022 return(NULL);
1023 };
1024 alias->alias = objcls->names[pos];
1025 alias->objectclass = objcls;
1026 if ((err = ldapschema_insert(lsd, (void ***)&lsd->objclses, &lsd->objclses_len, alias, ldapschema_compar_aliases)) > 0)
1027 {
1028 free(alias);
1029 return(NULL);
1030 };
1031 if (err == -1)
1032 ldapschema_schema_err(lsd, &objcls->model, " objectClasses with duplicate name '%s' found", objcls->names[pos]);
1033 };
1034 991
1035 return(objcls); 992 return(objcls);
1036} 993}