summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2010-09-22 11:04:26 -0400
committerStephen Gallagher <sgallagh@redhat.com>2010-09-23 13:00:42 -0400
commitcf3be5c32a7ddf878896da86ce5f04be7a3337ba (patch)
tree457832724dee88e1a2410550cab2d50895b85600
parent538a5fd15c7acbc08e33b72b480c2304902a5bae (diff)
downloadsssd-cf3be5c32a7ddf878896da86ce5f04be7a3337ba.tar.gz
sssd-cf3be5c32a7ddf878896da86ce5f04be7a3337ba.tar.xz
sssd-cf3be5c32a7ddf878896da86ce5f04be7a3337ba.zip
Fix sysdb_group_dn_name
-rw-r--r--src/db/sysdb.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/db/sysdb.c b/src/db/sysdb.c
index 638ac69e3..78af9cc53 100644
--- a/src/db/sysdb.c
+++ b/src/db/sysdb.c
@@ -56,6 +56,7 @@ errno_t sysdb_group_dn_name(struct sysdb_ctx *ctx, void *memctx,
const char *_dn, char **_name)
{
struct ldb_dn *dn;
+ const struct ldb_val *val;
*_name = NULL;
dn = ldb_dn_new_fmt(memctx, ctx->ldb, "%s", _dn);
@@ -63,7 +64,14 @@ errno_t sysdb_group_dn_name(struct sysdb_ctx *ctx, void *memctx,
return ENOMEM;
}
- *_name = talloc_strdup(memctx, ldb_dn_get_rdn_name(dn));
+ val = ldb_dn_get_rdn_val(dn);
+ if (val == NULL) {
+ talloc_zfree(dn);
+ return EINVAL;
+ }
+
+ *_name = talloc_strndup(memctx, (char *) val->data, val->length);
+
if (!*_name) {
talloc_zfree(dn);
return ENOMEM;