From 68dc80f25a0b86074ce40075ab6eccbdc06a46f8 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Mon, 25 May 2020 13:43:28 +0100 Subject: [PATCH] polkit - fix user id we're authing to and be explicit which one it is @fix --- src/bin/e_ckpasswd_main.c | 4 ++-- src/modules/polkit/auth_ui.c | 26 +++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/bin/e_ckpasswd_main.c b/src/bin/e_ckpasswd_main.c index 08de4bc3d..576af98dc 100644 --- a/src/bin/e_ckpasswd_main.c +++ b/src/bin/e_ckpasswd_main.c @@ -214,7 +214,7 @@ polkit_auth(const char *cookie, unsigned int auth_uid) if (!m) BARF("Cannot get method call: AuthenticationAgentResponse2"); iter = eldbus_message_iter_get(m); if (!iter) BARF("Cannot set iter on proxy"); - if (!eldbus_message_iter_arguments_append(iter, "us", uid, cookie)) + if (!eldbus_message_iter_arguments_append(iter, "us", auth_uid, cookie)) BARF("Cannot append 'us' args"); if (!eldbus_message_iter_arguments_append(iter, "(sa{sv})", &subj)) BARF("Cannot append '(sa{sv})' args"); @@ -366,7 +366,7 @@ main(int argc, char **argv) fprintf(stderr, "AUTH: Password OK\n"); if (polkit_mode == 1) { - if (polkit_auth(polkit_cookie, polkit_uid) == 0) + if (polkit_auth(polkit_cookie, uid) == 0) { fprintf(stderr, "AUTH: Polkit AuthenticationAgentResponse2 success\n"); return 0; diff --git a/src/modules/polkit/auth_ui.c b/src/modules/polkit/auth_ui.c index fc146c4bc..d8d10aa87 100644 --- a/src/modules/polkit/auth_ui.c +++ b/src/modules/polkit/auth_ui.c @@ -42,6 +42,7 @@ _cb_ok(void *data EINA_UNUSED, Evas_Object *obj, if (!ps) return; if (ps->exe_exit_handler) return; elm_object_disabled_set(evas_object_data_get(obj, "label"), EINA_TRUE); + elm_object_disabled_set(evas_object_data_get(obj, "label2"), EINA_TRUE); elm_object_disabled_set(evas_object_data_get(obj, "entry"), EINA_TRUE); e_dialog_button_disable_num_set(evas_object_data_get(obj, "dia"), 0, 1); e_dialog_button_disable_num_set(evas_object_data_get(obj, "dia"), 1, 1); @@ -86,7 +87,9 @@ void auth_ui(Polkit_Session *ps) { E_Dialog *dia; - Evas_Object *o, *win, *box, *fr, *lab, *ent; + Evas_Object *o, *win, *box, *fr, *lab, *lab2, *ent; + char buf[512]; + struct passwd *pass; dia = e_dialog_new(NULL, "E", "_polkit_auth"); e_dialog_title_set(dia, _("Please enter password")); @@ -133,6 +136,26 @@ auth_ui(Polkit_Session *ps) evas_object_show(o); evas_object_data_set(win, "label", o); + fr = o = elm_frame_add(win); + elm_object_style_set(o, "pad_medium"); + evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(o, 0.0, 0.0); + elm_box_pack_end(box, o); + evas_object_show(o); + + pass = getpwuid(ps->target_uid); + if ((pass) && (pass->pw_name)) + snprintf(buf, sizeof(buf), _("Enter password for %s"), pass->pw_name); + else + snprintf(buf, sizeof(buf), _("Enter passowrd for UID %u"), ps->target_uid); + lab2 = o = elm_label_add(win); + evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.0); + elm_object_text_set(o, buf); + elm_object_content_set(fr, o); + evas_object_show(o); + evas_object_data_set(win, "label2", o); + fr = o = elm_frame_add(win); elm_object_style_set(o, "pad_medium"); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); @@ -149,6 +172,7 @@ auth_ui(Polkit_Session *ps) elm_object_part_text_set(o, "elm.guide", "Enter Password"); evas_object_data_set(o, "session", ps); evas_object_data_set(o, "label", lab); + evas_object_data_set(o, "label2", lab2); evas_object_data_set(o, "entry", ent); evas_object_data_set(o, "dia", dia); evas_object_smart_callback_add(o, "activated", _cb_ok, win);