Browse Source

Range check fixed bugs

PascalCoin 2 years ago
parent
commit
0fcd6a1626
2 changed files with 5 additions and 3 deletions
  1. 2 1
      src/core/UBaseTypes.pas
  2. 3 2
      src/core/UCrypto.pas

+ 2 - 1
src/core/UBaseTypes.pas

@@ -218,7 +218,8 @@ begin
   Move(ASerialized[0],Lsize,2);
   Move(ASerialized[0],Lsize,2);
   if (2 + Lsize > Length(ASerialized)) then Exit(False);
   if (2 + Lsize > Length(ASerialized)) then Exit(False);
   SetLength(Self,Lsize);
   SetLength(Self,Lsize);
-  Move(ASerialized[2],Self[0],Lsize);
+  if Lsize>0 then
+    Move(ASerialized[2],Self[0],Lsize);
   Result := True;
   Result := True;
 end;
 end;
 
 

+ 3 - 2
src/core/UCrypto.pas

@@ -632,8 +632,9 @@ Var PS : PAnsiChar;
 begin
 begin
 {$IFDEF Use_OpenSSL}
 {$IFDEF Use_OpenSSL}
   If length(ResultSha256)<>32 then SetLength(ResultSha256,32);
   If length(ResultSha256)<>32 then SetLength(ResultSha256,32);
-  PS := @ResultSha256[Low(ResultSha256)];
-  SHA256(@TheMessage[Low(TheMessage)],Length(TheMessage),PS);
+  PS := @ResultSha256[0];
+  if length(TheMessage)=0 then SHA256(Nil,0,PS)
+  else SHA256(@TheMessage[0],Length(TheMessage),PS);
 {$ELSE}
 {$ELSE}
   TPCCryptoLib4Pascal.DoSHA256(TheMessage,ResultSha256);
   TPCCryptoLib4Pascal.DoSHA256(TheMessage,ResultSha256);
 {$ENDIF}
 {$ENDIF}