diff options
| author | David M. Syzdek <david@syzdek.net> | 2019-11-26 15:38:28 -0900 |
|---|---|---|
| committer | David M. Syzdek <david@syzdek.net> | 2019-11-26 15:38:28 -0900 |
| commit | ac31dd14b7ddcb4013894dd91ce07378e1635b87 (patch) | |
| tree | 6b3b0cc5dfe5b9691fde0950d19389439931de7f /lib | |
| parent | 2e2badcca078c6c9856af70ef1485c1abacb90a8 (diff) | |
| download | ldap-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.c | 47 |
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 | } |
