zu SSPIValidatePassword.pas
Delphi-Quellcode:
function AddEntry(dwKey: DWORD; pData: pointer): boolean;
var
pTemp: PNode;
begin
GetMem(pTemp, sizeof(TNode));
if Assigned(pTemp) then
begin
...
result := True
end
else
result := False
end;
AddEntry wird niemals FALSE liefern, da GetMem eine
Exception wirft, wenn der Speicher nicht reserviert werden kann. (also True oder
Exception)
dieses
Delphi-Quellcode:
FillChar(AuthIdentity, sizeof(AuthIdentity), 0);
if DomainName <> '' then
begin
AuthIdentity.Domain := PChar(DomainName);
AuthIdentity.DomainLength := Length(DomainName)
end;
if UserName <> '' then
begin
AuthIdentity.User := PChar(UserName);
AuthIdentity.UserLength := Length(UserName);
end;
if Password <> '' then
begin
AuthIdentity.Password := PChar(Password);
AuthIdentity.PasswordLength := Length(Password)
end;
AuthIdentity.Flags := SEC_WINNT_AUTH_IDENTITY_ANSI;
könnte man auch so kürzen
Delphi-Quellcode:
AuthIdentity.Domain := Pointer(DomainName);
AuthIdentity.DomainLength := Length(DomainName)
AuthIdentity.User := Pointer(UserName);
AuthIdentity.UserLength := Length(UserName);
AuthIdentity.Password := Pointer(Password);
AuthIdentity.PasswordLength := Length(Password)
AuthIdentity.Flags := SEC_WINNT_AUTH_IDENTITY_ANSI;
Delphi-Quellcode:
function SSPLogonUser(const DomainName, UserName, Password: string): boolean;
ReallocMem(pClientBuf, 0);
ReallocMem(pServerBuf, 0);
auch wenn es nicht falsch ist, aber warum nicht FreeMem?