GNOME Bugzilla – Bug 662992
the same password in deferent layouts is allowed!!!
Last modified: 2012-04-30 16:19:56 UTC
when gnome-screen-saver ask me for password (let's assume it is a) , i type ش which it has the same place in the arabic layout , and it allow it and unlock the screen !.
i use ubuntu 11.10.
More likely what's going on is the layout selector is lying about the current layout. This may be fixed by this commit: http://cgit.freedesktop.org/libxklavier/commit/?id=3d12615671ae69b718d23e5eeeed4164eeeb4582
i tried them both (en & ar) , and it unlock the screen.
Does the text show up right-to-left when it says ar ? My assumption is you aren't actually switching, it just says you are. Either way, this has to be problem lower in the stack than gnome-screensaver. gnome-screensaver never actually looks at what's typed, it just blindly passes it on to PAM or whatever.
yes , the text show up right-to-left when it says ar .
okay this must be a PAM problem or some such, although I can't quite imagine how. Does *any* password work? (even gibberish) ?
NO !! the problem is gnome-screen-saver allowed user to unlock screen with password from another keyboard layout for example i set password in en to (adf) when gnome-screen-saver ask me for password i switch keyboard layout to fr and type (qdf) (q has the same palce of a in en keyboard layout) it unlock screen, is it a bug??
it sounds like a bug, but it's very unlikely it's a gnome-screensaver bug. gnome-screensaver never checks your password, it farms that functionality off to PAM and does the unlock only if PAM says everything is okay. There is a possibility that gnome-screensaver is *CRASHING* after the screen unlocks when it shouldn't, if you bring up a terminal and type: ps -ef |grep gnome-screensaver what output do you see?
OUTPUT : os 1862 1 0 03:16 ? 00:00:02 /usr/bin/gnome-screensaver --no-daemon os 21970 21889 0 06:11 pts/0 00:00:00 grep gnome-screensaver and this (bug) also exist in gnome-screen-saver 3.0.
alright, so this is probably not a gnome-screensaver bug then. If you run pkill -f gnome-screensaver then gnome-screensaver --no-daemon --debug then lock your screen and reproduce the bug, can you paste the output to a comment here?
[gs_debug_init] gs-debug.c:106 (14:03:56): Debugging enabled [main] gnome-screensaver.c:86 (14:03:56): initializing gnome-screensaver 3.2.0 [init_session_id] gs-listener-dbus.c:1287 (14:03:56): Got session-id: /org/freedesktop/ConsoleKit/Session2 [gs_fade_init] gs-fade.c:921 (14:03:56): Fade type: 3 [set_status] gs-watcher-x11.c:347 (14:03:56): GSWatcher: not active, ignoring status changes [gs_manager_set_lock_enabled] gs-manager.c:162 (14:03:56): GSManager: lock-enabled=1 [gs_watcher_set_active] gs-watcher-x11.c:277 (14:03:56): turning watcher: ON [listener_dbus_handle_system_message] gs-listener-dbus.c:764 (14:03:56): obj_path=/org/freedesktop/DBus interface=org.freedesktop.DBus method=NameAcquired destination=:1.77 [on_bg_changed] gs-manager.c:549 (14:03:57): background changed [gs_manager_set_lock_active] gs-manager.c:129 (14:04:00): Setting lock active: 1 [gs_grab_grab_root] gs-grab-x11.c:538 (14:04:00): Grabbing the root window [gs_grab_get_keyboard] gs-grab-x11.c:153 (14:04:00): Grabbing keyboard widget=AE [gs_grab_get_mouse] gs-grab-x11.c:188 (14:04:00): Grabbing mouse widget=AE [gs_manager_create_windows_for_screen] gs-manager.c:1175 (14:04:00): Creating 1 windows for screen 0 [gs_manager_create_window_for_monitor] gs-manager.c:998 (14:04:00): Creating window for monitor 0 [0,0] (1366x768) [gs_manager_activate] gs-manager.c:1268 (14:04:00): fading out [fade_done_cb] gs-manager.c:1234 (14:04:01): fade completed, showing windows [update_geometry] gs-window-x11.c:325 (14:04:01): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:01): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:325 (14:04:01): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:01): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [gs_window_move_resize_window] gs-window-x11.c:371 (14:04:01): Move and/or resize window on monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:325 (14:04:01): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:01): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [gs_window_move_resize_window] gs-window-x11.c:371 (14:04:01): Move and/or resize window on monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:325 (14:04:01): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:01): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [gs_window_move_resize_window] gs-window-x11.c:371 (14:04:01): Move and/or resize window on monitor 0: x=0 y=0 w=1366 h=768 [window_map_cb] gs-manager.c:786 (14:04:01): Handling window map event [window_show_cb] gs-manager.c:852 (14:04:01): Handling window show [apply_background_to_window] gs-manager.c:813 (14:04:01): Creating background w:1366 h:768 [gs_watcher_set_active] gs-watcher-x11.c:277 (14:04:01): turning watcher: OFF [gs_listener_send_signal_active_changed] gs-listener-dbus.c:175 (14:04:01): Sending the ActiveChanged(TRUE) signal on the session bus [gs_manager_set_lock_active] gs-manager.c:129 (14:04:01): Setting lock active: 1 [gs_window_xevent] gs-window-x11.c:576 (14:04:01): not raising our windows [window_map_event_cb] gs-manager.c:775 (14:04:01): Handling window map_event event [manager_maybe_grab_window] gs-manager.c:729 (14:04:01): Moving grab to 0x8783028 [gs_grab_move_keyboard] gs-grab-x11.c:343 (14:04:01): Moving keyboard grab from AE to E00007 [gs_grab_move_keyboard] gs-grab-x11.c:350 (14:04:01): *** doing X server grab [gs_grab_release_keyboard] gs-grab-x11.c:226 (14:04:01): Ungrabbing keyboard [gs_grab_get_keyboard] gs-grab-x11.c:153 (14:04:01): Grabbing keyboard widget=E00007 [gs_grab_move_keyboard] gs-grab-x11.c:372 (14:04:01): *** releasing X server grab [gs_grab_move_mouse] gs-grab-x11.c:288 (14:04:01): Moving pointer grab from AE to E00007 [gs_grab_move_mouse] gs-grab-x11.c:295 (14:04:01): *** doing X server grab [gs_grab_release_mouse] gs-grab-x11.c:249 (14:04:01): Ungrabbing pointer [gs_grab_get_mouse] gs-grab-x11.c:188 (14:04:01): Grabbing mouse widget=E00007 [gs_grab_move_mouse] gs-grab-x11.c:318 (14:04:01): *** releasing X server grab [set_status] gs-watcher-x11.c:347 (14:04:01): GSWatcher: not active, ignoring status changes [update_geometry] gs-window-x11.c:325 (14:04:01): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:01): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [gs_window_move_resize_window] gs-window-x11.c:371 (14:04:01): Move and/or resize window on monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:325 (14:04:01): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:01): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [gs_window_move_resize_window] gs-window-x11.c:371 (14:04:01): Move and/or resize window on monitor 0: x=0 y=0 w=1366 h=768 [unfade_idle] gs-manager.c:756 (14:04:01): resetting fade [gs_fade_reset] gs-fade.c:862 (14:04:01): Resetting fade [find_window_at_pointer] gs-manager.c:688 (14:04:03): Requesting unlock for screen 0 [gs_window_request_unlock] gs-window-x11.c:1522 (14:04:03): Requesting unlock [window_dialog_up_changed_cb] gs-manager.c:923 (14:04:03): Handling window dialog up changed: up [handle_window_dialog_up] gs-manager.c:865 (14:04:03): Handling dialog up [gs_grab_move_keyboard] gs-grab-x11.c:336 (14:04:03): Window E00007 is already grabbed, skipping [gs_grab_move_mouse] gs-grab-x11.c:276 (14:04:03): Window E00007 is already grabbed, skipping [gs_grab_release_mouse] gs-grab-x11.c:249 (14:04:03): Ungrabbing pointer [popup_dialog] gs-window-x11.c:1458 (14:04:03): Popping up dialog [gs_window_clear_to_background_surface] gs-window-x11.c:260 (14:04:03): Clearing window to background pixmap [update_geometry] gs-window-x11.c:325 (14:04:03): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:03): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [gs_window_move_resize_window] gs-window-x11.c:371 (14:04:03): Move and/or resize window on monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:325 (14:04:03): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:03): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [gs_window_move_resize_window] gs-window-x11.c:371 (14:04:03): Move and/or resize window on monitor 0: x=0 y=0 w=1366 h=768 [error_watch] gs-window-x11.c:838 (14:04:03): command error output: [gs_debug_init] gs-debug.c:106 (14:04:03): Debugging enabled [error_watch] gs-window-x11.c:838 (14:04:03): command error output: [auth_message_handler] gnome-screensaver-dialog.c:229 (14:04:03): Got message style 1: 'Password: ' [gs_window_raise] gs-window-x11.c:524 (14:04:03): Raising screensaver window [gs_window_xevent] gs-window-x11.c:588 (14:04:03): not raising our windows [gs_window_xevent] gs-window-x11.c:588 (14:04:03): not raising our windows [error_watch] gs-window-x11.c:838 (14:04:03): command error output: [lock_command_watch] gs-window-x11.c:1363 (14:04:03): command output: WINDOW ID=58720260 [error_watch] gs-window-x11.c:838 (14:04:03): command error output: ** (gnome-screensaver-dialog:3703): WARNING **: Couldn't load user icon: Failed to open file '/home/os/.face': No such file or directory [error_watch] gs-window-x11.c:838 (14:04:03): command error output: [gs_lock_plug_enable_prompt] gs-lock-plug.c:1236 (14:04:03): Setting prompt to: Password: [gs_window_xevent] gs-window-x11.c:576 (14:04:03): not raising our windows [update_geometry] gs-window-x11.c:325 (14:04:03): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:03): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [gs_window_move_resize_window] gs-window-x11.c:371 (14:04:03): Move and/or resize window on monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:325 (14:04:03): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:03): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [gs_window_move_resize_window] gs-window-x11.c:371 (14:04:03): Move and/or resize window on monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:325 (14:04:03): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:03): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [gs_window_move_resize_window] gs-window-x11.c:371 (14:04:03): Move and/or resize window on monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:325 (14:04:03): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:03): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [gs_window_move_resize_window] gs-window-x11.c:371 (14:04:03): Move and/or resize window on monitor 0: x=0 y=0 w=1366 h=768 [gs_window_xevent] gs-window-x11.c:588 (14:04:03): not raising our windows [gs_window_xevent] gs-window-x11.c:588 (14:04:03): not raising our windows [gs_window_xevent] gs-window-x11.c:588 (14:04:03): not raising our windows [gs_window_xevent] gs-window-x11.c:576 (14:04:03): not raising our windows [gs_window_xevent] gs-window-x11.c:576 (14:04:03): not raising our windows [error_watch] gs-window-x11.c:838 (14:04:10): command error output: [request_response] gnome-screensaver-dialog.c:157 (14:04:10): got response: -2 [error_watch] gs-window-x11.c:838 (14:04:10): command error output: [do_auth_check] gnome-screensaver-dialog.c:303 (14:04:10): Verify user returned: TRUE [lock_command_watch] gs-window-x11.c:1363 (14:04:10): command output: RESPONSE=OK [lock_command_watch] gs-window-x11.c:1377 (14:04:10): Got OK response [gs_window_dialog_finish] gs-window-x11.c:1239 (14:04:10): Dialog finished [keyboard_command_finish] gs-window-x11.c:1116 (14:04:10): Keyboard finished [window_dialog_up_changed_cb] gs-manager.c:923 (14:04:10): Handling window dialog up changed: down [handle_window_dialog_down] gs-manager.c:897 (14:04:10): Handling dialog down [gs_grab_move_keyboard] gs-grab-x11.c:336 (14:04:10): Window E00007 is already grabbed, skipping [gs_grab_move_mouse] gs-grab-x11.c:291 (14:04:10): Getting pointer grab on E00007 [gs_grab_move_mouse] gs-grab-x11.c:295 (14:04:10): *** doing X server grab [gs_grab_get_mouse] gs-grab-x11.c:188 (14:04:10): Grabbing mouse widget=E00007 [gs_grab_move_mouse] gs-grab-x11.c:318 (14:04:10): *** releasing X server grab [update_geometry] gs-window-x11.c:325 (14:04:10): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:10): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [gs_window_move_resize_window] gs-window-x11.c:371 (14:04:10): Move and/or resize window on monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:325 (14:04:10): got geometry for monitor 0: x=0 y=0 w=1366 h=768 [update_geometry] gs-window-x11.c:338 (14:04:10): using geometry for monitor 0: x=0 y=0 w=1366 h=768 [gs_window_move_resize_window] gs-window-x11.c:371 (14:04:10): Move and/or resize window on monitor 0: x=0 y=0 w=1366 h=768 [gs_fade_reset] gs-fade.c:862 (14:04:10): Resetting fade [gs_grab_release] gs-grab-x11.c:399 (14:04:10): Releasing all grabs [gs_grab_release_mouse] gs-grab-x11.c:249 (14:04:10): Ungrabbing pointer [gs_grab_release_keyboard] gs-grab-x11.c:226 (14:04:10): Ungrabbing keyboard [gs_window_dialog_finish] gs-window-x11.c:1239 (14:04:10): Dialog finished [keyboard_command_finish] gs-window-x11.c:1116 (14:04:10): Keyboard finished [window_unmap_cb] gs-manager.c:793 (14:04:10): window unmapped! [gs_window_dialog_finish] gs-window-x11.c:1239 (14:04:10): Dialog finished [keyboard_command_finish] gs-window-x11.c:1116 (14:04:10): Keyboard finished [gs_watcher_set_active] gs-watcher-x11.c:277 (14:04:10): turning watcher: ON [gs_listener_send_signal_active_changed] gs-listener-dbus.c:175 (14:04:10): Sending the ActiveChanged(FALSE) signal on the session bus
Hi - I can verify syriatalks' experience, also on Ubuntu 11.10 - it seems to also verify Ray's hunch that it's not really changing the layout (although it indicates that it is). Here's what I reported most recently at: https://bugs.launchpad.net/ubuntu/+source/gnome-screensaver/+bug/872701 """ I can confirm that, at least for me: With two keyboard layouts (layout1 and layout2) 1) lock the screen with CTRL-ALT-l 2) touch mouse to bring up screensaver dialog 3) switch keyboard layout to layout2 (and note keyboard indicator indicates layout change) 4) enter password *as if layout1 was active* 5) screen is unlocked 6) switch back to layout1 Repeat, but this time skip step 3 - screen is still unlocked. That is, it seems that although the screensaver dialog indicates that it changes the layout - it is always using the one layout. """ Let me know if I can provide any useful information.
and if change the layout before i press Alt+cltr+L ? it has changed but it still allowed !! so i say it again : GNOME_SCREEN_SAVER DOESN'T SEE ANY DEFFERENTS BETWEEN LAYOUTS (sorry for pooor english :D)
okay, I think this is the libxklavier bug mentioned in comment 2.
Closing as RESOLVED NOTGNOME as per comment 14 as the issue is likely in libxklavier which is not part of the GNOME infrastructure but freedesktop.org. Please ask Ubuntu to ship an updated libxklavier version.
*** Bug 666977 has been marked as a duplicate of this bug. ***
FYI, this still happens with libxklavier 5.2.
reopening and moving to gtk. Owen found a bug in plug handling that could explain this.
To give more details, at one point gtkplug-x11.c was merged into gtkplug.c and the merge was incomplete, so there's code like: case KeyPress: ... gdk_keymap_translate_keyboard_state (keymap, event->key.hardware_keycode, event->key.state, event->key.group, &event->key.keyval, NULL, NULL, &consumed); ... /* FIXME: These should be filled in properly */ event->key.group = 0; ... So the keyval is getting set with a group 0 (since key.group hasn't been initialized yet, and is implicitly 0 at the start of the function) and the key group is getting explicitly hard coded to 0 after that. group 0 is usually the latin layout so it unlocks the screen.
oh he already filed a bug, i'll do this one to that one. *** This bug has been marked as a duplicate of bug 675167 ***