tree 10f0f1be21ef0f21f9d834f47a426e5f1109e2b0
parent 08be868a6d18bca99d3580f4b3247c0c953f0f84
author Jiaqing Zhao <jiaqing.zhao@intel.com> 1648893745 +0800
committer Jiaqing Zhao <jiaqing.zhao@intel.com> 1648894153 +0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEuUrOwkL4eKsvYjyyk2yETDPkVWIFAmJIIMoACgkQk2yETDPk
 VWLNPg//b9yY/KmpH2X/KOiDymXto4Z1NSxqWHWcVqojXufy0CobaHp25Q+vQbmK
 pGtDRUWAeM6kEprfSd2GH+Z+n5DFQ8W/nUnKu4+BtBEq/75XPbI2ykVhVqCOM05u
 va4Md+SV/bsfAtpUlWYEgVi3s+8O2lM7ydalOeZV3AY7sRdEhUPzjIsZ4CtIgAeq
 VgFk6lHMi8dieU22xs+kji7FGGpil4DgVN1KQQzRv3cFajOu/qg3rll3g2quj2b4
 KObCQNbhzxPENCEzdLKjG+faKIacpBHiOBI2iOvL/Nt84w1Efaaw4+XszIbNLqDY
 heyZsyCrwkXZjHphugwL/MxRj3z4lAG6rCA6gtorb6owLrZBbcttKhXNOBV9v4ns
 vXBrtX4djyXMcm2guWZ2pVzrQpeOoArL/HYZ+D0Y4viLiDrCazbYCWjbDVqdzHvL
 nZrzIO+E2RAu6ery5bBLkMjPjFonskutTI0MtaChgZtlN1Eq5XLiJjCe3wXAtB+0
 KH1WpkT80Q4KfX1JOTKRtpu2kGfXKG/J+8+5c2/hyr4WxUrdKIGIiU1ZtJpGuxpS
 sVuOyMYhnHz2L1mo//s9xf1W37d84wfZJ0xMgVhmMIzXx/NrScixMstbcOBPzec5
 SywRr+4giarL5lJjxbgfeHht4ZqKxnV/PHHhLhgWQn7xY3BnAJ0=
 =imD8
 -----END PGP SIGNATURE-----

Return PAM_AUTHTOK_ERR when length exceeds limit

Currently, when the length of username or password exceeds IPMI limit,
it returns PAM_NEW_AUTHTOK_REQD. But according to the man page of
pam_sm_chauthtok, PAM_NEW_AUTHTOK_REQD is not a vaild return value.
Return PAM_AUTHTOK_ERR instead.

Tested:
Try updating a user in ipmi group with a 21-char password by calling
pam_chauthtok, PAM_AUTHTOK_ERR is returned.

Change-Id: Ia055f253865e9f4174dcbee8eec87917b7612f94
Signed-off-by: Jiaqing Zhao <jiaqing.zhao@intel.com>
