ldb: Return LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS rather than OPERATIONS_ERROR on EACCES...
authorAndrew Bartlett <abartlet@samba.org>
Wed, 5 Feb 2014 01:52:28 +0000 (14:52 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 5 Feb 2014 07:42:25 +0000 (08:42 +0100)
This makes provision errors clearer in Samba.

Andrew Bartlett

Reviewed-by: Garming Sam <garming@catalyst.net.nz>
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Jelmer Vernooij <jelmer@samba.org>
lib/ldb/ldb_tdb/ldb_tdb.c

index 30c58f5ee362b94669a195022f48d7f4993d94b3..d3c83f5d57988176e5ed4b467d3859ef07e94463 100644 (file)
@@ -1560,10 +1560,13 @@ static int ltdb_connect(struct ldb_context *ldb, const char *url,
                                   ldb_get_create_perms(ldb), ldb);
        if (!ltdb->tdb) {
                ldb_asprintf_errstring(ldb,
-                                      "Unable to open tdb '%s'", path);
+                                      "Unable to open tdb '%s': %s", path, strerror(errno));
                ldb_debug(ldb, LDB_DEBUG_ERROR,
-                         "Unable to open tdb '%s'", path);
+                         "Unable to open tdb '%s': %s", path, strerror(errno));
                talloc_free(ltdb);
+               if (errno == EACCES || errno == EPERM) {
+                       return LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS;
+               }
                return LDB_ERR_OPERATIONS_ERROR;
        }