summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/dsdb/samdb/ldb_modules/partition_init.c3
-rw-r--r--source4/dsdb/samdb/samdb.c27
-rw-r--r--source4/lib/ldb-samba/ldb_wrap.c26
-rw-r--r--source4/lib/ldb-samba/ldb_wrap.h3
-rw-r--r--source4/param/secrets.c2
5 files changed, 32 insertions, 29 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/partition_init.c b/source4/dsdb/samdb/ldb_modules/partition_init.c
index 0ab8bada13..775e566d51 100644
--- a/source4/dsdb/samdb/ldb_modules/partition_init.c
+++ b/source4/dsdb/samdb/ldb_modules/partition_init.c
@@ -31,6 +31,7 @@
#include "dsdb/samdb/ldb_modules/partition.h"
#include "lib/util/tsort.h"
+#include "lib/ldb-samba/ldb_wrap.h"
static int partition_sort_compare(const void *v1, const void *v2)
{
@@ -218,7 +219,7 @@ static int new_partition_from_dn(struct ldb_context *ldb, struct partition_priva
(*partition)->backend_url = data->ldapBackend;
} else {
/* the backend LDB is the DN (base64 encoded if not 'plain') followed by .ldb */
- backend_url = samdb_relative_path(ldb,
+ backend_url = ldb_relative_path(ldb,
*partition,
filename);
if (!backend_url) {
diff --git a/source4/dsdb/samdb/samdb.c b/source4/dsdb/samdb/samdb.c
index c2a1e9ec80..57de27a22e 100644
--- a/source4/dsdb/samdb/samdb.c
+++ b/source4/dsdb/samdb/samdb.c
@@ -43,33 +43,6 @@
#include "param/secrets.h"
#include "auth/auth.h"
-char *samdb_relative_path(struct ldb_context *ldb,
- TALLOC_CTX *mem_ctx,
- const char *name)
-{
- const char *base_url =
- (const char *)ldb_get_opaque(ldb, "ldb_url");
- char *path, *p, *full_name;
- if (name == NULL) {
- return NULL;
- }
- if (strncmp("tdb://", base_url, 6) == 0) {
- base_url = base_url+6;
- }
- path = talloc_strdup(mem_ctx, base_url);
- if (path == NULL) {
- return NULL;
- }
- if ( (p = strrchr(path, '/')) != NULL) {
- p[0] = '\0';
- full_name = talloc_asprintf(mem_ctx, "%s/%s", path, name);
- } else {
- full_name = talloc_asprintf(mem_ctx, "./%s", name);
- }
- talloc_free(path);
- return full_name;
-}
-
/*
make sure the static credentials are not freed
*/
diff --git a/source4/lib/ldb-samba/ldb_wrap.c b/source4/lib/ldb-samba/ldb_wrap.c
index 7ac94dea2c..b09e68c0a1 100644
--- a/source4/lib/ldb-samba/ldb_wrap.c
+++ b/source4/lib/ldb-samba/ldb_wrap.c
@@ -338,3 +338,29 @@ int samba_ldb_connect(struct ldb_context *ldb, struct loadparm_context *lp_ctx,
}
}
+ char *ldb_relative_path(struct ldb_context *ldb,
+ TALLOC_CTX *mem_ctx,
+ const char *name)
+{
+ const char *base_url =
+ (const char *)ldb_get_opaque(ldb, "ldb_url");
+ char *path, *p, *full_name;
+ if (name == NULL) {
+ return NULL;
+ }
+ if (strncmp("tdb://", base_url, 6) == 0) {
+ base_url = base_url+6;
+ }
+ path = talloc_strdup(mem_ctx, base_url);
+ if (path == NULL) {
+ return NULL;
+ }
+ if ( (p = strrchr(path, '/')) != NULL) {
+ p[0] = '\0';
+ full_name = talloc_asprintf(mem_ctx, "%s/%s", path, name);
+ } else {
+ full_name = talloc_asprintf(mem_ctx, "./%s", name);
+ }
+ talloc_free(path);
+ return full_name;
+}
diff --git a/source4/lib/ldb-samba/ldb_wrap.h b/source4/lib/ldb-samba/ldb_wrap.h
index a835f665fc..531aa9ac70 100644
--- a/source4/lib/ldb-samba/ldb_wrap.h
+++ b/source4/lib/ldb-samba/ldb_wrap.h
@@ -60,5 +60,8 @@ bool ldb_wrap_add(const char *url, struct tevent_context *ev,
struct cli_credentials *credentials,
int flags,
struct ldb_context *ldb);
+char *ldb_relative_path(struct ldb_context *ldb,
+ TALLOC_CTX *mem_ctx,
+ const char *name);
#endif /* _LDB_WRAP_H_ */
diff --git a/source4/param/secrets.c b/source4/param/secrets.c
index 5e9b0a977f..c894358e2d 100644
--- a/source4/param/secrets.c
+++ b/source4/param/secrets.c
@@ -181,7 +181,7 @@ char *keytab_name_from_msg(TALLOC_CTX *mem_ctx, struct ldb_context *ldb, struct
return NULL;
}
- relative_path = samdb_relative_path(ldb, mem_ctx, privateKeytab);
+ relative_path = ldb_relative_path(ldb, mem_ctx, privateKeytab);
if (!relative_path) {
return NULL;
}