diff options
author | Andrew Tridgell <tridge@samba.org> | 2009-11-27 14:18:39 +1100 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2009-11-27 16:05:06 +1100 |
commit | 7ea485a1d20c1bf41926ebb4b0ae8f37a2d909f7 (patch) | |
tree | efd3f120d51f52cd4f7af9440660acfe19b32702 | |
parent | d3d7ca8eeab13c00705188102855525a21dd5345 (diff) | |
download | samba-7ea485a1d20c1bf41926ebb4b0ae8f37a2d909f7.tar.gz samba-7ea485a1d20c1bf41926ebb4b0ae8f37a2d909f7.tar.bz2 samba-7ea485a1d20c1bf41926ebb4b0ae8f37a2d909f7.zip |
s4-ldb: better to test for valid arguments in ldb library than commandline
We were testing for valid DNs in ldbrename in the command line
tool. This hid a bug in the ldb library where we caught a bad DN in
the objectclass module rather than in the main ldb code. It is better
to do validation of the DNs passed on the command line in the library
code, as this gives us more consistent error handling between the
programming APIs for ldb and the command line.
-rw-r--r-- | source4/lib/ldb/common/ldb.c | 10 | ||||
-rw-r--r-- | source4/lib/ldb/tools/ldbrename.c | 9 |
2 files changed, 10 insertions, 9 deletions
diff --git a/source4/lib/ldb/common/ldb.c b/source4/lib/ldb/common/ldb.c index 3a8023ac93..94a5fb2153 100644 --- a/source4/lib/ldb/common/ldb.c +++ b/source4/lib/ldb/common/ldb.c @@ -791,6 +791,16 @@ int ldb_request(struct ldb_context *ldb, struct ldb_request *req) ret = module->ops->del(module, req); break; case LDB_RENAME: + if (!ldb_dn_validate(req->op.rename.olddn)) { + ldb_asprintf_errstring(ldb, "ldb_rename: invalid olddn '%s'", + ldb_dn_get_linearized(req->op.rename.olddn)); + return LDB_ERR_INVALID_DN_SYNTAX; + } + if (!ldb_dn_validate(req->op.rename.newdn)) { + ldb_asprintf_errstring(ldb, "ldb_rename: invalid newdn '%s'", + ldb_dn_get_linearized(req->op.rename.newdn)); + return LDB_ERR_INVALID_DN_SYNTAX; + } FIRST_OP(ldb, rename); ret = module->ops->rename(module, req); break; diff --git a/source4/lib/ldb/tools/ldbrename.c b/source4/lib/ldb/tools/ldbrename.c index fcae766a20..bfccacc206 100644 --- a/source4/lib/ldb/tools/ldbrename.c +++ b/source4/lib/ldb/tools/ldbrename.c @@ -63,15 +63,6 @@ int main(int argc, const char **argv) dn1 = ldb_dn_new(ldb, ldb, options->argv[0]); dn2 = ldb_dn_new(ldb, ldb, options->argv[1]); - if ( ! ldb_dn_validate(dn1)) { - printf("Invalid DN1: %s\n", options->argv[0]); - return -1; - } - if ( ! ldb_dn_validate(dn2)) { - printf("Invalid DN2: %s\n", options->argv[1]); - return -1; - } - ret = ldb_rename(ldb, dn1, dn2); if (ret == 0) { printf("Renamed 1 record\n"); |