mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-25 13:29:38 +02:00
Take into account the size of HexText TBytes open array before calling HexToBin overload with PAnsiChar first parameter
This commit is contained in:
parent
98aa472873
commit
57a53d6532
@ -3076,6 +3076,10 @@ procedure BinToHex(const BinBuffer: TBytes; BinBufOffset: Integer; var HexBuffer
|
||||
var
|
||||
i : longint;
|
||||
begin
|
||||
if (Length(HexBuffer)-HexBufOffset) div 2 < Count then
|
||||
Count:=(Length(HexBuffer)-HexBufOffset) div 2;
|
||||
if (Length(BinBuffer)-BinBufOffset) < Count then
|
||||
Count:=Length(BinBuffer)-BinBufOffset;
|
||||
for i:=0 to Count-1 do
|
||||
begin
|
||||
HexBuffer[HexBufOffset+2*i+0]:=Byte(HexDigits[(BinBuffer[BinBufOffset + i] shr 4)]);
|
||||
@ -3113,7 +3117,12 @@ begin
|
||||
PText:=HexText+HexTextOffset;
|
||||
PBinBuf:=PAnsiChar(BinBuffer)+BinBufOffset;
|
||||
i:=Count;
|
||||
Result:=HexToBin(PText, PBinBuf, i);
|
||||
if (Length(BinBuffer)-BinBufOffset)<i then
|
||||
i:=Length(BinBuffer)-BinBufOffset;
|
||||
if i<=0 then
|
||||
Result:=0
|
||||
else
|
||||
Result:=HexToBin(PText, PBinBuf, i);
|
||||
end;
|
||||
|
||||
function HexToBin(const HexText: TBytes; HexTextOffset: Integer; var BinBuffer: TBytes; BinBufOffset: Integer; Count: Integer): Integer;
|
||||
@ -3125,7 +3134,14 @@ begin
|
||||
PText:=PAnsiChar(HexText)+HexTextOffset;
|
||||
PBinBuf:=PAnsiChar(BinBuffer)+BinBufOffset;
|
||||
i:=Count;
|
||||
Result:=HexToBin(PText, PBinBuf, i);
|
||||
if (Length(HexText)-HexTextOffset) div 2 < i then
|
||||
i:=(Length(HexText)-HexTextOffset) div 2;
|
||||
if (Length(BinBuffer)-BinBufOffset) < i then
|
||||
i:=Length(BinBuffer)-BinBufOffset;
|
||||
if i<=0 then
|
||||
Result:=0
|
||||
else
|
||||
Result:=HexToBin(PText, PBinBuf, i);
|
||||
end;
|
||||
|
||||
function HexToBin(HexText: PWideChar; BinBuffer: Pointer; BinBufSize: Integer): Integer;
|
||||
|
Loading…
Reference in New Issue
Block a user