summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--daemons/configure.ac8
-rw-r--r--daemons/ipa-slapi-plugins/ipa-uuid/Makefile.am1
-rw-r--r--daemons/ipa-slapi-plugins/ipa-uuid/ipa_uuid.c30
-rw-r--r--ipa.spec.in1
4 files changed, 30 insertions, 10 deletions
diff --git a/daemons/configure.ac b/daemons/configure.ac
index b7ad33fed..53806f52d 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 37bd92908..167a19631 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 8455eed37..919abc821 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 45c5cfdf6..1277d41ec 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