This commit is contained in:
Mario Fetka
2026-05-22 15:42:15 +02:00
parent 82202fd6fb
commit c12c93b958

41
login.c
View File

@@ -14,32 +14,57 @@ static int do_change_object_passwd(char *name,
{
uint8 key[8];
fprintf(stderr, "PASSWD debug: user='%s' oldlen=%u newlen=%u\n",
name, (uint)strlen(oldpassword), (uint)strlen(newpassword));
if (!ncp_17_17(key)) {
uint32 objid = ncp_17_35(name, objtyp);
uint32 objid;
fprintf(stderr, "PASSWD debug: ncp_17_17 OK\n");
objid = ncp_17_35(name, objtyp);
if (objid) {
uint8 buff[128];
uint8 encrypted[8];
uint8 newcryptpasswd[16];
int passwdx=0;
int passwdx = (int)strlen(newpassword);
uint8 tmpid[4];
fprintf(stderr, "PASSWD debug: ncp_17_35 OK objid=%08lx name='%s'\n",
objid, name);
U32_TO_BE32(objid, tmpid);
shuffle(tmpid, oldpassword, strlen(oldpassword), buff);
nw_encrypt(key, buff, encrypted);
shuffle(tmpid, newpassword, strlen(newpassword), buff);
memcpy(newcryptpasswd, buff, sizeof(newcryptpasswd));
fprintf(stderr, "PASSWD debug: trying encrypted ncp_17_4b passwdx=%d\n",
passwdx);
if (!ncp_17_4b(encrypted, name, objtyp, passwdx, newcryptpasswd)) {
;;
fprintf(stderr, "PASSWD debug: ncp_17_4b OK\n");
return(0);
}
fprintf(stderr, "PASSWD debug: ncp_17_4b failed neterrno=%d\n", neterrno);
} else {
fprintf(stderr, "PASSWD debug: ncp_17_35 failed neterrno=%d\n", neterrno);
}
} else { /* fallback to old unencrypted algorithmus */
if (!ncp_17_40(name, objtyp, oldpassword, newpassword)) {
;;
return(0);
}
} else {
fprintf(stderr, "PASSWD debug: ncp_17_17 failed neterrno=%d\n", neterrno);
}
fprintf(stderr, "PASSWD debug: trying fallback unencrypted ncp_17_40\n");
if (!ncp_17_40(name, objtyp, oldpassword, newpassword)) {
fprintf(stderr, "PASSWD debug: ncp_17_40 OK\n");
return(0);
}
fprintf(stderr, "PASSWD debug: ncp_17_40 failed neterrno=%d\n", neterrno);
return(-1);
}