From ca0b72a1fdb7bd965065e833df34662afef0423e Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 16 Nov 2007 20:12:00 +0100 Subject: r26003: Split up DB_WRAP, as first step in an attempt to sanitize dependencies. (This used to be commit 56dfcb4f2f8e74c9d8b2fe3a0df043781188a555) --- source4/lib/util/util_ldb.c | 131 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 source4/lib/util/util_ldb.c (limited to 'source4/lib/util/util_ldb.c') diff --git a/source4/lib/util/util_ldb.c b/source4/lib/util/util_ldb.c new file mode 100644 index 0000000000..ba8443c236 --- /dev/null +++ b/source4/lib/util/util_ldb.c @@ -0,0 +1,131 @@ +/* + Unix SMB/CIFS implementation. + + common share info functions + + Copyright (C) Andrew Tridgell 2004 + Copyright (C) Tim Potter 2004 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "includes.h" +#include "lib/ldb/include/ldb.h" +#include "lib/ldb/include/ldb_errors.h" + +/* + search the sam for the specified attributes - va_list variant +*/ +int gendb_search_v(struct ldb_context *ldb, + TALLOC_CTX *mem_ctx, + struct ldb_dn *basedn, + struct ldb_message ***msgs, + const char * const *attrs, + const char *format, + va_list ap) _PRINTF_ATTRIBUTE(6,0) +{ + enum ldb_scope scope = LDB_SCOPE_SUBTREE; + struct ldb_result *res; + char *expr = NULL; + int ret; + + if (format) { + expr = talloc_vasprintf(mem_ctx, format, ap); + if (expr == NULL) { + return -1; + } + } else { + scope = LDB_SCOPE_BASE; + } + + res = NULL; + + ret = ldb_search(ldb, basedn, scope, expr, attrs, &res); + + if (ret == LDB_SUCCESS) { + talloc_steal(mem_ctx, res->msgs); + + DEBUG(6,("gendb_search_v: %s %s -> %d\n", + basedn?ldb_dn_get_linearized(basedn):"NULL", + expr?expr:"NULL", res->count)); + + ret = res->count; + *msgs = res->msgs; + talloc_free(res); + } else if (scope == LDB_SCOPE_BASE && ret == LDB_ERR_NO_SUCH_OBJECT) { + ret = 0; + *msgs = NULL; + } else { + DEBUG(4,("gendb_search_v: search failed: %s", ldb_errstring(ldb))); + ret = -1; + } + + talloc_free(expr); + + return ret; +} + +/* + search the LDB for the specified attributes - varargs variant +*/ +int gendb_search(struct ldb_context *ldb, + TALLOC_CTX *mem_ctx, + struct ldb_dn *basedn, + struct ldb_message ***res, + const char * const *attrs, + const char *format, ...) _PRINTF_ATTRIBUTE(6,7) +{ + va_list ap; + int count; + + va_start(ap, format); + count = gendb_search_v(ldb, mem_ctx, basedn, res, attrs, format, ap); + va_end(ap); + + return count; +} + +/* + search the LDB for a specified record (by DN) +*/ + +int gendb_search_dn(struct ldb_context *ldb, + TALLOC_CTX *mem_ctx, + struct ldb_dn *dn, + struct ldb_message ***res, + const char * const *attrs) +{ + return gendb_search(ldb, mem_ctx, dn, res, attrs, NULL); +} + +/* + setup some initial ldif in a ldb +*/ +int gendb_add_ldif(struct ldb_context *ldb, const char *ldif_string) +{ + struct ldb_ldif *ldif; + int ret; + ldif = ldb_ldif_read_string(ldb, &ldif_string); + if (ldif == NULL) return -1; + ret = ldb_add(ldb, ldif->msg); + talloc_free(ldif); + return ret; +} + +char *wrap_casefold(void *context, void *mem_ctx, const char *s) +{ + return strupper_talloc(mem_ctx, s); +} + + -- cgit From ac4237e9971bd50ef194f2166365ff91af4dbfaa Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Mon, 17 Dec 2007 18:31:16 +0100 Subject: r26511: Janitorial: Fix a warning for the 'printf' attribute on gendb_search_v While at it, also add a PRINTF_ATTRIBUTE for talloc_vasprintf. (This used to be commit 5b3a8c8ae195e6a98357a407a0699493f54a8b79) --- source4/lib/util/util_ldb.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source4/lib/util/util_ldb.c') diff --git a/source4/lib/util/util_ldb.c b/source4/lib/util/util_ldb.c index ba8443c236..a8719af190 100644 --- a/source4/lib/util/util_ldb.c +++ b/source4/lib/util/util_ldb.c @@ -23,16 +23,16 @@ #include "includes.h" #include "lib/ldb/include/ldb.h" #include "lib/ldb/include/ldb_errors.h" - +#include "lib/util/util_ldb.h" /* search the sam for the specified attributes - va_list variant */ -int gendb_search_v(struct ldb_context *ldb, +int gendb_search_v(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, struct ldb_dn *basedn, struct ldb_message ***msgs, const char * const *attrs, - const char *format, + const char *format, va_list ap) _PRINTF_ATTRIBUTE(6,0) { enum ldb_scope scope = LDB_SCOPE_SUBTREE; -- cgit From f22598a95c5a42c6453f11e5e95c720e8b61c4fc Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Wed, 13 Feb 2008 23:35:43 +0100 Subject: util_ldb: Add a missing \n to debug string, fix trailing whitespaces. (This used to be commit b0991cc09b36171c18d2407c9f3153b6f7e8299b) --- source4/lib/util/util_ldb.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'source4/lib/util/util_ldb.c') diff --git a/source4/lib/util/util_ldb.c b/source4/lib/util/util_ldb.c index a8719af190..f1b42effd8 100644 --- a/source4/lib/util/util_ldb.c +++ b/source4/lib/util/util_ldb.c @@ -1,21 +1,21 @@ -/* +/* Unix SMB/CIFS implementation. common share info functions Copyright (C) Andrew Tridgell 2004 Copyright (C) Tim Potter 2004 - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -56,7 +56,7 @@ int gendb_search_v(struct ldb_context *ldb, if (ret == LDB_SUCCESS) { talloc_steal(mem_ctx, res->msgs); - DEBUG(6,("gendb_search_v: %s %s -> %d\n", + DEBUG(6,("gendb_search_v: %s %s -> %d\n", basedn?ldb_dn_get_linearized(basedn):"NULL", expr?expr:"NULL", res->count)); @@ -67,7 +67,8 @@ int gendb_search_v(struct ldb_context *ldb, ret = 0; *msgs = NULL; } else { - DEBUG(4,("gendb_search_v: search failed: %s", ldb_errstring(ldb))); + DEBUG(4,("gendb_search_v: search failed: %s\n", + ldb_errstring(ldb))); ret = -1; } @@ -80,7 +81,7 @@ int gendb_search_v(struct ldb_context *ldb, search the LDB for the specified attributes - varargs variant */ int gendb_search(struct ldb_context *ldb, - TALLOC_CTX *mem_ctx, + TALLOC_CTX *mem_ctx, struct ldb_dn *basedn, struct ldb_message ***res, const char * const *attrs, @@ -101,7 +102,7 @@ int gendb_search(struct ldb_context *ldb, */ int gendb_search_dn(struct ldb_context *ldb, - TALLOC_CTX *mem_ctx, + TALLOC_CTX *mem_ctx, struct ldb_dn *dn, struct ldb_message ***res, const char * const *attrs) -- cgit From afe3e8172ddaa5e4aa811faceecda4f943d6e2ef Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 2 Apr 2008 04:53:27 +0200 Subject: Install public header files again and include required prototypes. (This used to be commit 47ffbbf67435904754469544390b67d34c958343) --- source4/lib/util/util_ldb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/lib/util/util_ldb.c') diff --git a/source4/lib/util/util_ldb.c b/source4/lib/util/util_ldb.c index f1b42effd8..38f53c2c66 100644 --- a/source4/lib/util/util_ldb.c +++ b/source4/lib/util/util_ldb.c @@ -33,7 +33,7 @@ int gendb_search_v(struct ldb_context *ldb, struct ldb_message ***msgs, const char * const *attrs, const char *format, - va_list ap) _PRINTF_ATTRIBUTE(6,0) + va_list ap) { enum ldb_scope scope = LDB_SCOPE_SUBTREE; struct ldb_result *res; @@ -85,7 +85,7 @@ int gendb_search(struct ldb_context *ldb, struct ldb_dn *basedn, struct ldb_message ***res, const char * const *attrs, - const char *format, ...) _PRINTF_ATTRIBUTE(6,7) + const char *format, ...) { va_list ap; int count; -- cgit From 929adc9efa5cf985f0585214d30d18521aa1a821 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Sat, 14 Jun 2008 11:24:17 -0400 Subject: Make up the right dependencies now that ldb depends on libevents (This used to be commit 3b8eec7ca334528cad3cdcd5e3fc5ee555d8d0e0) --- source4/lib/util/util_ldb.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/lib/util/util_ldb.c') diff --git a/source4/lib/util/util_ldb.c b/source4/lib/util/util_ldb.c index 38f53c2c66..0a7433696e 100644 --- a/source4/lib/util/util_ldb.c +++ b/source4/lib/util/util_ldb.c @@ -21,6 +21,7 @@ */ #include "includes.h" +#include "lib/events/events.h" #include "lib/ldb/include/ldb.h" #include "lib/ldb/include/ldb_errors.h" #include "lib/util/util_ldb.h" -- cgit From cc43037f19056ed24d7fffa54456d597c63ad105 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 22 Aug 2008 17:36:56 +1000 Subject: fixed a problem with length limited ldap values The core ldb code for string matching assumed NULL terminated strings, whereas the anr module used data_blob_const() to effectively truncate a ldb_val by changing its length. The ldb code is supposed to be based around length limited blobs, not NULL terminated strings, so the correct fix was to change the string comparison functions to be length limited (This used to be commit 26c6aa5a80ffaf06fc33f30a6533f8f16ef538bc) --- source4/lib/util/util_ldb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/lib/util/util_ldb.c') diff --git a/source4/lib/util/util_ldb.c b/source4/lib/util/util_ldb.c index 0a7433696e..fab729c036 100644 --- a/source4/lib/util/util_ldb.c +++ b/source4/lib/util/util_ldb.c @@ -125,9 +125,9 @@ int gendb_add_ldif(struct ldb_context *ldb, const char *ldif_string) return ret; } -char *wrap_casefold(void *context, void *mem_ctx, const char *s) +char *wrap_casefold(void *context, void *mem_ctx, const char *s, size_t n) { - return strupper_talloc(mem_ctx, s); + return strupper_talloc_n(mem_ctx, s, n); } -- cgit