|
@@ -3076,6 +3076,10 @@ procedure BinToHex(const BinBuffer: TBytes; BinBufOffset: Integer; var HexBuffer
|
|
var
|
|
var
|
|
i : longint;
|
|
i : longint;
|
|
begin
|
|
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
|
|
for i:=0 to Count-1 do
|
|
begin
|
|
begin
|
|
HexBuffer[HexBufOffset+2*i+0]:=Byte(HexDigits[(BinBuffer[BinBufOffset + i] shr 4)]);
|
|
HexBuffer[HexBufOffset+2*i+0]:=Byte(HexDigits[(BinBuffer[BinBufOffset + i] shr 4)]);
|
|
@@ -3113,7 +3117,12 @@ begin
|
|
PText:=HexText+HexTextOffset;
|
|
PText:=HexText+HexTextOffset;
|
|
PBinBuf:=PAnsiChar(BinBuffer)+BinBufOffset;
|
|
PBinBuf:=PAnsiChar(BinBuffer)+BinBufOffset;
|
|
i:=Count;
|
|
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;
|
|
end;
|
|
|
|
|
|
function HexToBin(const HexText: TBytes; HexTextOffset: Integer; var BinBuffer: TBytes; BinBufOffset: Integer; Count: Integer): Integer;
|
|
function HexToBin(const HexText: TBytes; HexTextOffset: Integer; var BinBuffer: TBytes; BinBufOffset: Integer; Count: Integer): Integer;
|
|
@@ -3125,7 +3134,14 @@ begin
|
|
PText:=PAnsiChar(HexText)+HexTextOffset;
|
|
PText:=PAnsiChar(HexText)+HexTextOffset;
|
|
PBinBuf:=PAnsiChar(BinBuffer)+BinBufOffset;
|
|
PBinBuf:=PAnsiChar(BinBuffer)+BinBufOffset;
|
|
i:=Count;
|
|
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;
|
|
end;
|
|
|
|
|
|
function HexToBin(HexText: PWideChar; BinBuffer: Pointer; BinBufSize: Integer): Integer;
|
|
function HexToBin(HexText: PWideChar; BinBuffer: Pointer; BinBufSize: Integer): Integer;
|