summaryrefslogtreecommitdiff
path: root/lib/ldb
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2011-10-06 14:19:24 +1100
committerAndrew Tridgell <tridge@samba.org>2011-10-06 14:34:21 +1100
commitea41860d32d38448e08cefd79d30ee1150317a9e (patch)
tree81d4fe8941cdda13f780d5e0074b17fef28fd555 /lib/ldb
parentb3476f00a621cf2d5d547ed479acf91b5cc0679c (diff)
downloadsamba-ea41860d32d38448e08cefd79d30ee1150317a9e.tar.gz
samba-ea41860d32d38448e08cefd79d30ee1150317a9e.tar.bz2
samba-ea41860d32d38448e08cefd79d30ee1150317a9e.zip
ldb: support raw OIDs in control string parsing
this makes it possible to use a raw OID string on the command line or in python scripts Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'lib/ldb')
-rw-r--r--lib/ldb/common/ldb_controls.c18
-rw-r--r--lib/ldb/include/ldb_private.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/lib/ldb/common/ldb_controls.c b/lib/ldb/common/ldb_controls.c
index d7a3143932..42fabfc185 100644
--- a/lib/ldb/common/ldb_controls.c
+++ b/lib/ldb/common/ldb_controls.c
@@ -1018,9 +1018,27 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
return ctrl;
}
+
+ /* support a raw OID */
+ if (isdigit(control_strings[0])) {
+ const char *p = strchr(control_strings, ':');
+ if (p == NULL) {
+ goto failed;
+ }
+ if (strspn(control_strings, "0123456789.") != (p-control_strings)) {
+ goto failed;
+ }
+ ctrl->oid = talloc_strndup(ctrl, control_strings, p-control_strings);
+ ctrl->critical = (p[1]=='1'?1:0);
+ ctrl->data = NULL;
+ return ctrl;
+ }
+
/*
* When no matching control has been found.
*/
+failed:
+ talloc_free(ctrl);
return NULL;
}
diff --git a/lib/ldb/include/ldb_private.h b/lib/ldb/include/ldb_private.h
index cafc020e29..db2457d6df 100644
--- a/lib/ldb/include/ldb_private.h
+++ b/lib/ldb/include/ldb_private.h
@@ -40,6 +40,7 @@
#include "replace.h"
#include "system/filesys.h"
#include "system/time.h"
+#include "system/locale.h"
#include "ldb.h"
#include "ldb_module.h"