diff options
-rw-r--r-- | daemons/configure.ac | 8 | ||||
-rw-r--r-- | daemons/ipa-slapi-plugins/ipa-uuid/Makefile.am | 1 | ||||
-rw-r--r-- | daemons/ipa-slapi-plugins/ipa-uuid/ipa_uuid.c | 30 | ||||
-rw-r--r-- | ipa.spec.in | 1 |
4 files changed, 30 insertions, 10 deletions
diff --git a/daemons/configure.ac b/daemons/configure.ac index b7ad33fe..53806f52 100644 --- a/daemons/configure.ac +++ b/daemons/configure.ac @@ -202,6 +202,14 @@ AC_CHECK_LIB(crypto, DES_set_key_unchecked, [SSL_LIBS="-lcrypto"]) AC_SUBST(SSL_LIBS) dnl --------------------------------------------------------------------------- +dnl - Check for UUID library +dnl --------------------------------------------------------------------------- +AC_CHECK_HEADERS(uuid/uuid.h,,[AC_MSG_ERROR([uuid/uuid.h not found])]) + +AC_CHECK_LIB(uuid, uuid_generate_time, [UUID_LIBS="-luuid"]) +AC_SUBST(UUID_LIBS) + +dnl --------------------------------------------------------------------------- dnl - Check for Python dnl --------------------------------------------------------------------------- diff --git a/daemons/ipa-slapi-plugins/ipa-uuid/Makefile.am b/daemons/ipa-slapi-plugins/ipa-uuid/Makefile.am index 37bd9290..167a1963 100644 --- a/daemons/ipa-slapi-plugins/ipa-uuid/Makefile.am +++ b/daemons/ipa-slapi-plugins/ipa-uuid/Makefile.am @@ -26,6 +26,7 @@ libipa_uuid_la_LDFLAGS = -avoid-version libipa_uuid_la_LIBADD = \ $(MOZLDAP_LIBS) \ + $(UUID_LIBS) \ $(NULL) appdir = $(IPA_DATA_DIR) diff --git a/daemons/ipa-slapi-plugins/ipa-uuid/ipa_uuid.c b/daemons/ipa-slapi-plugins/ipa-uuid/ipa_uuid.c index 8455eed3..919abc82 100644 --- a/daemons/ipa-slapi-plugins/ipa-uuid/ipa_uuid.c +++ b/daemons/ipa-slapi-plugins/ipa-uuid/ipa_uuid.c @@ -43,10 +43,7 @@ #include "slapi-plugin.h" #include "nspr.h" #include "prclist.h" - -#ifndef TEMP_TEMP_GET_A_DEFINE_FROM_389DS_TEAM -int slapi_uniqueIDGenerateString(char **uId); -#endif +#include "uuid/uuid.h" #define IPAUUID_PLUGIN_NAME "ipa-uuid-plugin" #define IPAUUID_PLUGIN_VERSION 0x00010000 @@ -56,6 +53,8 @@ int slapi_uniqueIDGenerateString(char **uId); #define IPAUUID_SUCCESS 0 #define IPAUUID_FAILURE -1 +#define IPAUUID_STR_SIZE 36 + #ifndef discard_const #define discard_const(ptr) ((void *)((uintptr_t)(ptr))) #endif @@ -760,6 +759,16 @@ ipauuid_list_contains_attr(char **list, char *attr) return ret; } +/* this function must be passed a preallocated buffer of 37 characters in the + * out parameter */ +static void ipauuid_generate_uuid(char *out) +{ + uuid_t uu; + + uuid_generate_time(uu); + uuid_unparse_lower(uu, out); +} + /* for mods and adds: where dn's are supplied, the closest in scope is used as long as the type filter matches @@ -1063,13 +1072,13 @@ static int ipauuid_pre_op(Slapi_PBlock *pb, int modtype) char *new_value; /* create the value to add */ - ret = slapi_uniqueIDGenerateString(&value); - if (ret != 0) { - errstr = slapi_ch_smprintf("Allocation of a new value for" - " attr %s failed! Unable to " - "proceed.", cfgentry->attr); - break; + value = slapi_ch_calloc(1, IPAUUID_STR_SIZE + 1); + if (!value) { + LOG_OOM(); + ret = LDAP_OPERATIONS_ERROR; + goto done; } + ipauuid_generate_uuid(value); if (cfgentry->prefix) { new_value = slapi_ch_smprintf("%s%s", @@ -1178,6 +1187,7 @@ done: } slapi_ch_array_free(generated_attrs); + slapi_ch_free_string(&value); if (free_entry && e) { slapi_entry_free(e); diff --git a/ipa.spec.in b/ipa.spec.in index 45c5cfdf..1277d41e 100644 --- a/ipa.spec.in +++ b/ipa.spec.in @@ -47,6 +47,7 @@ BuildRequires: xmlrpc-c-devel BuildRequires: libcurl-devel BuildRequires: gettext BuildRequires: authconfig +BuildRequires: libuuid-devel %endif %description |