diff -Npur gdm-old/daemon/gdm-session-worker.c gdm-new/daemon/gdm-session-worker.c
--- gdm-old/daemon/gdm-session-worker.c	2012-03-01 15:34:56.075400626 +0800
+++ gdm-new/daemon/gdm-session-worker.c	2012-03-01 15:40:25.255710404 +0800
@@ -819,6 +819,7 @@ gdm_session_worker_process_pam_message (
         char    *user_answer;
         gboolean res;
         char    *utf8_msg;
+        char	*msg;
 
         if (response_text != NULL) {
                 *response_text = NULL;
@@ -849,6 +850,13 @@ gdm_session_worker_process_pam_message (
         case PAM_ERROR_MSG:
                 res = gdm_session_worker_report_problem (worker, utf8_msg);
                 break;
+#ifdef PAM_RADIO_TYPE
+	case PAM_RADIO_TYPE:
+		msg = g_strdup_printf ("%s (yes/no/maybe)", utf8_msg);
+                res = gdm_session_worker_ask_question (worker, msg, &user_answer);
+		g_free (msg);
+		break;
+#endif
         default:
                 g_assert_not_reached ();
                 break;
