X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Flogin.c;h=bbde6359d70434748779ba96a8868134a8e1aa19;hb=0ff33777febca1ac06417c976a4a3e76b68c93d8;hp=d79344b5941bcfa59ab61ff4a0acd49131fb4b48;hpb=107bfdc821cfb179996e1186cff0ec4970ef4fbd;p=ngircd-alex.git diff --git a/src/ngircd/login.c b/src/ngircd/login.c index d79344b5..bbde6359 100644 --- a/src/ngircd/login.c +++ b/src/ngircd/login.c @@ -90,7 +90,7 @@ Login_User(CLIENT * Client) #ifdef PAM if (!Conf_PAM) { /* Don't do any PAM authentication at all, instead emulate - * the beahiour of the daemon compiled without PAM support: + * the behavior of the daemon compiled without PAM support: * because there can't be any "server password", all * passwords supplied are classified as "wrong". */ if(Conn_Password(conn)[0] == '\0') @@ -194,7 +194,7 @@ Login_User_PostAuth(CLIENT *Client) #ifdef PAM /** - * Read result of the authenticatior sub-process from pipe + * Read result of the authenticator sub-process from pipe * * @param r_fd File descriptor of the pipe. * @param events (ignored IO specification) @@ -202,6 +202,7 @@ Login_User_PostAuth(CLIENT *Client) static void cb_Read_Auth_Result(int r_fd, UNUSED short events) { + char user[CLIENT_USER_LEN], *ptr; CONN_ID conn; CLIENT *client; int result; @@ -233,7 +234,14 @@ cb_Read_Auth_Result(int r_fd, UNUSED short events) } if (result == true) { - Client_SetUser(client, Client_OrigUser(client), true); + /* Authentication succeeded, now set the correct user name + * supplied by the client (without prepended '~' for exmaple), + * but cut it at the first '@' character: */ + strlcpy(user, Client_OrigUser(client), sizeof(user)); + ptr = strchr(user, '@'); + if (ptr) + *ptr = '\0'; + Client_SetUser(client, user, true); (void)Login_User_PostAuth(client); } else Client_Reject(client, "Bad password", false);