diff -rc slim-1.3.1-orig/app.cpp slim-1.3.1/app.cpp *** slim-1.3.1-orig/app.cpp 2008-09-26 02:54:15.000000000 +0200 --- slim-1.3.1/app.cpp 2009-02-17 19:50:06.000000000 +0100 *************** *** 41,48 **** Panel* panel = *static_cast(appdata_ptr); int result = PAM_SUCCESS; for (int i=0; iresp=0; ! resp[i]->resp_retcode=0; switch(msg[i]->msg_style){ case PAM_PROMPT_ECHO_ON: // We assume PAM is asking for the username --- 41,48 ---- Panel* panel = *static_cast(appdata_ptr); int result = PAM_SUCCESS; for (int i=0; imsg_style){ case PAM_PROMPT_ECHO_ON: // We assume PAM is asking for the username *************** *** 51,63 **** case Panel::Suspend: case Panel::Halt: case Panel::Reboot: ! resp[i]->resp=strdup("root"); break; case Panel::Console: case Panel::Exit: case Panel::Login: ! resp[i]->resp=strdup(panel->GetName().c_str()); break; } break; --- 51,63 ---- case Panel::Suspend: case Panel::Halt: case Panel::Reboot: ! (*resp)[i].resp=strdup("root"); break; case Panel::Console: case Panel::Exit: case Panel::Login: ! (*resp)[i].resp=strdup(panel->GetName().c_str()); break; } break; *************** *** 73,79 **** default: panel->EventHandler(Panel::Get_Passwd); ! resp[i]->resp=strdup(panel->GetPasswd().c_str()); break; } break; --- 73,79 ---- default: panel->EventHandler(Panel::Get_Passwd); ! (*resp)[i].resp=strdup(panel->GetPasswd().c_str()); break; } break; *************** *** 89,97 **** } if (result!=PAM_SUCCESS){ for (int i=0; iresp==0) continue; ! free(resp[i]->resp); ! resp[i]->resp=0; }; free(*resp); *resp=0; --- 89,97 ---- } if (result!=PAM_SUCCESS){ for (int i=0; i