[SCM] Samba Shared Repository - branch master updated
Stefan Metzmacher
metze at samba.org
Wed Jan 13 07:55:42 MST 2010
The branch, master has been updated
via ca9bc96... s4:ldb_msg: first try to decode integers as signed and then fallback to unsigned
via 5d08309... s4:dsdb/common: let samdb_msg_add_uint() call samdb_msg_add_int()
via 2d7ad93... s4:dsdb/common: let samdb_msg_add_uint64() call samdb_msg_add_int64()
from 8d4b913... s4:ldb: be more strict in parsing ldb time strings
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit ca9bc96b96425b7cb13797acf57704502bac1514
Author: Stefan Metzmacher <metze at samba.org>
Date: Mon Jan 11 20:18:09 2010 +0100
s4:ldb_msg: first try to decode integers as signed and then fallback to unsigned
LDAP only knowns about signed integers, so let
ldb_msg_find_attr_as_uint() and ldb_msg_find_attr_as_uint64() cope
with it.
metze
commit 5d08309204e475e85250a34ff7986c896e8c3c01
Author: Stefan Metzmacher <metze at samba.org>
Date: Mon Jan 11 20:17:53 2010 +0100
s4:dsdb/common: let samdb_msg_add_uint() call samdb_msg_add_int()
This is important as LDAP servers always play with int32 values
and we have to encode 0x80000000 as "-2147483648" instead of "2147483648".
metze
commit 2d7ad938d0b9345af920d396d5098ee52e900f2d
Author: Stefan Metzmacher <metze at samba.org>
Date: Mon Jan 11 20:00:43 2010 +0100
s4:dsdb/common: let samdb_msg_add_uint64() call samdb_msg_add_int64()
This is important as LDAP servers always play with int64 values
and we have to encode 0x8000000000000000LL as "-9223372036854775808"
instead of "9223372036854775808".
metze
-----------------------------------------------------------------------
Summary of changes:
source4/dsdb/common/util.c | 6 ++----
source4/lib/ldb/common/ldb_msg.c | 18 ++++++++++++++++++
2 files changed, 20 insertions(+), 4 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source4/dsdb/common/util.c b/source4/dsdb/common/util.c
index 6147940..7d3f460 100644
--- a/source4/dsdb/common/util.c
+++ b/source4/dsdb/common/util.c
@@ -851,8 +851,7 @@ int samdb_msg_add_int(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx, struct l
int samdb_msg_add_uint(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx, struct ldb_message *msg,
const char *attr_name, uint_t v)
{
- const char *s = talloc_asprintf(mem_ctx, "%u", v);
- return samdb_msg_add_string(sam_ldb, mem_ctx, msg, attr_name, s);
+ return samdb_msg_add_int(sam_ldb, mem_ctx, msg, attr_name, (int)v);
}
/*
@@ -871,8 +870,7 @@ int samdb_msg_add_int64(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx, struct
int samdb_msg_add_uint64(struct ldb_context *sam_ldb, TALLOC_CTX *mem_ctx, struct ldb_message *msg,
const char *attr_name, uint64_t v)
{
- const char *s = talloc_asprintf(mem_ctx, "%llu", (unsigned long long)v);
- return samdb_msg_add_string(sam_ldb, mem_ctx, msg, attr_name, s);
+ return samdb_msg_add_int64(sam_ldb, mem_ctx, msg, attr_name, (int64_t)v);
}
/*
diff --git a/source4/lib/ldb/common/ldb_msg.c b/source4/lib/ldb/common/ldb_msg.c
index cb8d4a8..9f90f33 100644
--- a/source4/lib/ldb/common/ldb_msg.c
+++ b/source4/lib/ldb/common/ldb_msg.c
@@ -353,10 +353,19 @@ unsigned int ldb_msg_find_attr_as_uint(const struct ldb_message *msg,
const char *attr_name,
unsigned int default_value)
{
+ unsigned int ret;
const struct ldb_val *v = ldb_msg_find_ldb_val(msg, attr_name);
if (!v || !v->data) {
return default_value;
}
+
+ /* in LDAP there're only int32_t values */
+ errno = 0;
+ ret = strtol((const char *)v->data, NULL, 0);
+ if (errno == 0) {
+ return ret;
+ }
+
return strtoul((const char *)v->data, NULL, 0);
}
@@ -375,10 +384,19 @@ uint64_t ldb_msg_find_attr_as_uint64(const struct ldb_message *msg,
const char *attr_name,
uint64_t default_value)
{
+ uint64_t ret;
const struct ldb_val *v = ldb_msg_find_ldb_val(msg, attr_name);
if (!v || !v->data) {
return default_value;
}
+
+ /* in LDAP there're only int64_t values */
+ errno = 0;
+ ret = strtoll((const char *)v->data, NULL, 0);
+ if (errno == 0) {
+ return ret;
+ }
+
return strtoull((const char *)v->data, NULL, 0);
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list