diff options
author | Pavel Březina <pbrezina@redhat.com> | 2014-05-11 16:18:06 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-05-22 17:16:13 +0200 |
commit | 78f2f0bbb999d40782f8beb940f79bc522cdcb2d (patch) | |
tree | ad606bd7a72a5d67d990b77619e45d08dd9bd1b4 /src/responder/ifp/ifpsrv_util.c | |
parent | 1a546ae8250c6dbcff0ce775fc811529e02c360c (diff) | |
download | sssd-78f2f0bbb999d40782f8beb940f79bc522cdcb2d.tar.gz sssd-78f2f0bbb999d40782f8beb940f79bc522cdcb2d.tar.xz sssd-78f2f0bbb999d40782f8beb940f79bc522cdcb2d.zip |
IFP: Add a utility function to reply with an object path
Reviewed-by: Stef Walter <stefw@redhat.com>
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Diffstat (limited to 'src/responder/ifp/ifpsrv_util.c')
-rw-r--r-- | src/responder/ifp/ifpsrv_util.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/responder/ifp/ifpsrv_util.c b/src/responder/ifp/ifpsrv_util.c index 6fcd22479..c0ab686e4 100644 --- a/src/responder/ifp/ifpsrv_util.c +++ b/src/responder/ifp/ifpsrv_util.c @@ -236,6 +236,48 @@ done: return safe_path; } +char * +_ifp_reply_objpath(TALLOC_CTX *mem_ctx, const char *base, + const char *part, ...) +{ + char *safe_part; + char *path = NULL; + va_list va; + + if (base == NULL) { + DEBUG(SSSDBG_OP_FAILURE, "Wrong object path base!\n"); + return NULL; + } + + path = talloc_strdup(mem_ctx, base); + if (path == NULL) return NULL; + + va_start(va, part); + while (part != NULL) { + safe_part = ifp_bus_path_escape(mem_ctx, part); + if (safe_part == NULL) { + DEBUG(SSSDBG_OP_FAILURE, "Could not add [%s] to objpath\n", part); + goto fail; + } + + path = talloc_asprintf_append(path, "/%s", safe_part); + talloc_free(safe_part); + if (path == NULL) { + goto fail; + } + + part = va_arg(va, const char *); + } + va_end(va); + + return path; + +fail: + va_end(va); + talloc_free(path); + return NULL; +} + errno_t ifp_add_ldb_el_to_dict(DBusMessageIter *iter_dict, struct ldb_message_element *el) { |