summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2006-09-27 05:57:41 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:20:22 -0500
commit4c3b07b654f4eb9041da0e9a84bc60d667901fe5 (patch)
tree9313c76ded12df3eef7b1a9053f126ca03f3be3e
parent4e7c9367a7f885b685d7d1476c359e5848356f83 (diff)
downloadsamba-4c3b07b654f4eb9041da0e9a84bc60d667901fe5.tar.gz
samba-4c3b07b654f4eb9041da0e9a84bc60d667901fe5.tar.bz2
samba-4c3b07b654f4eb9041da0e9a84bc60d667901fe5.zip
r18942: add a ldb_set_create_perms() function in ldb. I didn't call it
ldb_set_umask() (which is what we had discussed) as it doesn't actually set the umask (in effect it sets the inverse of the umask - the perms to be used for the file) (This used to be commit 7e2ec875908c112d5c3b0f6d18f9a8bbacf33539)
-rw-r--r--source4/lib/ldb/common/ldb.c11
-rw-r--r--source4/lib/ldb/include/ldb.h1
-rw-r--r--source4/lib/ldb/include/ldb_private.h2
-rw-r--r--source4/lib/ldb/ldb_tdb/ldb_tdb.c3
4 files changed, 16 insertions, 1 deletions
diff --git a/source4/lib/ldb/common/ldb.c b/source4/lib/ldb/common/ldb.c
index 00bf5e79ba..0981d9b25b 100644
--- a/source4/lib/ldb/common/ldb.c
+++ b/source4/lib/ldb/common/ldb.c
@@ -52,6 +52,7 @@ struct ldb_context *ldb_init(void *mem_ctx)
}
ldb_set_utf8_default(ldb);
+ ldb_set_create_perms(ldb, 0666);
return ldb;
}
@@ -455,6 +456,16 @@ int ldb_set_timeout_from_prev_req(struct ldb_context *ldb, struct ldb_request *o
return LDB_SUCCESS;
}
+
+/*
+ set the permissions for new files to be passed to open() in
+ backends that use local files
+ */
+void ldb_set_create_perms(struct ldb_context *ldb, unsigned int perms)
+{
+ ldb->create_perms = perms;
+}
+
/*
start an ldb request
NOTE: the request must be a talloc context.
diff --git a/source4/lib/ldb/include/ldb.h b/source4/lib/ldb/include/ldb.h
index cf4a1f282b..82da9df0dd 100644
--- a/source4/lib/ldb/include/ldb.h
+++ b/source4/lib/ldb/include/ldb.h
@@ -781,6 +781,7 @@ int ldb_wait(struct ldb_handle *handle, enum ldb_wait_type type);
int ldb_set_timeout(struct ldb_context *ldb, struct ldb_request *req, int timeout);
int ldb_set_timeout_from_prev_req(struct ldb_context *ldb, struct ldb_request *oldreq, struct ldb_request *newreq);
+void ldb_set_create_perms(struct ldb_context *ldb, unsigned int perms);
/**
Initialise ldbs' global information
diff --git a/source4/lib/ldb/include/ldb_private.h b/source4/lib/ldb/include/ldb_private.h
index 96b71ff3b4..3cacd5e292 100644
--- a/source4/lib/ldb/include/ldb_private.h
+++ b/source4/lib/ldb/include/ldb_private.h
@@ -119,6 +119,8 @@ struct ldb_context {
int default_timeout;
unsigned int flags;
+
+ unsigned int create_perms;
};
#ifndef ARRAY_SIZE
diff --git a/source4/lib/ldb/ldb_tdb/ldb_tdb.c b/source4/lib/ldb/ldb_tdb/ldb_tdb.c
index 5d43783903..579c48791b 100644
--- a/source4/lib/ldb/ldb_tdb/ldb_tdb.c
+++ b/source4/lib/ldb/ldb_tdb/ldb_tdb.c
@@ -1036,7 +1036,8 @@ static int ltdb_connect(struct ldb_context *ldb, const char *url,
/* note that we use quite a large default hash size */
ltdb->tdb = ltdb_wrap_open(ltdb, path, 10000,
- tdb_flags, open_flags, 0644, ldb);
+ tdb_flags, open_flags,
+ ldb->create_perms, ldb);
if (!ltdb->tdb) {
ldb_debug(ldb, LDB_DEBUG_ERROR, "Unable to open tdb '%s'\n", path);
talloc_free(ltdb);