- ack On 09/10/2012 06:02 PM, Jakub Filak wrote:
Signed-off-by: Jakub Filak <[email protected]> --- src/dbus/abrt-dbus.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)diff --git a/src/dbus/abrt-dbus.c b/src/dbus/abrt-dbus.c index 4302b4f..9f3b2d9 100644 --- a/src/dbus/abrt-dbus.c +++ b/src/dbus/abrt-dbus.c @@ -362,7 +362,7 @@ static bool allowed_problem_dir(const char *dir_name) return true; } -static char *handle_new_problem(GVariant *problem_info, char **error) +static char *handle_new_problem(GVariant *problem_info, uid_t caller_uid, char **error) { problem_data_t *pd = problem_data_new(); @@ -374,6 +374,14 @@ static char *handle_new_problem(GVariant *problem_info, char **error) problem_data_add_text_editable(pd, key, value); } + char buf[sizeof(uid_t) * 3 + 2]; + if (caller_uid != 0) + { /* set uid field to caller's uid if caller is not root */ + VERB2 log("Adding UID %d to problem data", caller_uid); + snprintf(buf, sizeof(buf), "%d", caller_uid); + problem_data_add_text_noteditable(pd, FILENAME_UID, buf); + } + char *problem_id = problem_data_save(pd); if (!problem_id) { @@ -419,7 +427,7 @@ static void handle_method_call(GDBusConnection *connection, if (g_strcmp0(method_name, "NewProblem") == 0) { char *error = NULL; - char *problem_id = handle_new_problem(g_variant_get_child_value(parameters, 0), &error); + char *problem_id = handle_new_problem(g_variant_get_child_value(parameters, 0), caller_uid, &error); if (!problem_id) { g_dbus_method_invocation_return_dbus_error(invocation,
