err = getLoginConfig(ld, objectDN, methodIDLen, &methodID, tag, &pwdBufLen, pwdBuf);
if (err == 0) {
- if (pwdBufLen !=0) {
- pwdBuf[pwdBufLen] = 0; /* null terminate */
-
+ if (pwdBufLen > 1) {
switch (pwdBuf[0]) {
case 1: /* cleartext password */
break;
err = LDAP_INAPPROPRIATE_AUTH; /* only return clear text */
break;
}
-
if (!err) {
- if (pwdLen >= pwdBufLen-1) {
+ if (pwdLen >= pwdBufLen) {
memcpy(pwd, &pwdBuf[1], pwdBufLen-1); /* skip digest tag and include null */
+ pwd[pwdBufLen - 1] = '\0';
} else {
err = LDAP_NO_MEMORY;
}
if (*pwdSize >= pwdBufLen+1 && pwd != nullptr) {
memcpy(pwd, pwdBuf, pwdBufLen);
pwd[pwdBufLen] = 0; /* add null termination */
+ } else {
+ err = LDAP_OPERATIONS_ERROR;
}
*pwdSize = pwdBufLen; /* does not include null termination */
}