diff options
author | Andrew Tridgell <tridge@samba.org> | 2011-10-06 14:19:24 +1100 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2011-10-06 14:34:21 +1100 |
commit | ea41860d32d38448e08cefd79d30ee1150317a9e (patch) | |
tree | 81d4fe8941cdda13f780d5e0074b17fef28fd555 /lib | |
parent | b3476f00a621cf2d5d547ed479acf91b5cc0679c (diff) | |
download | samba-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')
-rw-r--r-- | lib/ldb/common/ldb_controls.c | 18 | ||||
-rw-r--r-- | lib/ldb/include/ldb_private.h | 1 |
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" |