From 3037276c8a7bb550070b3246336b07edd4f30976 Mon Sep 17 00:00:00 2001 From: marco Date: Sat, 17 Apr 2021 14:45:55 +0000 Subject: [PATCH] --- Merging r49165 into '.': U packages/fcl-registry/src/registry.pp --- Recording mergeinfo for merge of r49165 into '.': U . --- Merging r49166 into '.': U packages/hash/src/sha1.pp --- Recording mergeinfo for merge of r49166 into '.': G . --- Merging r49167 into '.': U packages/iconvenc/src/iconvert.inc --- Recording mergeinfo for merge of r49167 into '.': G . # revisions: 49165,49166,49167 r49165 | marco | 2021-04-10 15:53:57 +0200 (Sat, 10 Apr 2021) | 3 lines Changed paths: M /trunk/packages/fcl-registry/src/registry.pp * fix from bart for mantis #0038581 that prohibits reusing readbinarydata as basis for a multisz reader. r49166 | marco | 2021-04-10 16:26:20 +0200 (Sat, 10 Apr 2021) | 1 line Changed paths: M /trunk/packages/hash/src/sha1.pp * raise exception when file not found. r49167 | marco | 2021-04-10 16:58:53 +0200 (Sat, 10 Apr 2021) | 2 lines Changed paths: M /trunk/packages/iconvenc/src/iconvert.inc * implemented recommendations from mantis #038510 for better bionic compatibility. git-svn-id: branches/fixes_3_2@49221 - --- packages/fcl-registry/src/registry.pp | 2 -- packages/hash/src/sha1.pp | 11 ++++++++++- packages/iconvenc/src/iconvert.inc | 11 +++++++---- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/fcl-registry/src/registry.pp b/packages/fcl-registry/src/registry.pp index 7f11182b05..f9d631aad6 100644 --- a/packages/fcl-registry/src/registry.pp +++ b/packages/fcl-registry/src/registry.pp @@ -478,8 +478,6 @@ Var begin Result := GetData(Name, @Buffer, BufSize, RegDataType); - If not (RegDataType in [rdBinary, rdUnknown]) Then - Raise ERegistryException.CreateFmt(SInvalidRegType, [Name]); end; function TRegistry.ReadBinaryData(const Name: String; var Buffer; diff --git a/packages/hash/src/sha1.pp b/packages/hash/src/sha1.pp index 3c8961ea27..3b64f4ccc0 100644 --- a/packages/hash/src/sha1.pp +++ b/packages/hash/src/sha1.pp @@ -51,6 +51,8 @@ function SHA1Match(const Digest1, Digest2: TSHA1Digest): Boolean; implementation +uses sysutils,sysconst; + // inverts the bytes of (Count div 4) cardinals from source to target. procedure Invert(Source, Dest: Pointer; Count: PtrUInt); var @@ -257,6 +259,11 @@ begin SHA1Final(Context, Result); end; +procedure RaiseFileNotFoundException(const fn : String); +begin + raise EFileNotFoundException.Create(SFileNotFound); +end; + function SHA1File(const Filename: String; const Bufsize: PtrUInt): TSHA1Digest; var F: File; @@ -284,7 +291,9 @@ begin until Count < BufSize; FreeMem(Buf, BufSize); Close(F); - end; + end + else + RaiseFileNotFoundException(FileName); SHA1Final(Context, Result); FileMode := ofm; diff --git a/packages/iconvenc/src/iconvert.inc b/packages/iconvenc/src/iconvert.inc index d4428a8cf6..61ced52f6c 100644 --- a/packages/iconvenc/src/iconvert.inc +++ b/packages/iconvenc/src/iconvert.inc @@ -14,7 +14,7 @@ var iconvres: size_t; begin H := iconv_open(PChar(ToEncoding), PChar(FromEncoding)); - if not assigned(H) then + if h=Iconv_t(-1) then begin Res := S; exit(-1); @@ -48,7 +48,8 @@ begin Dst:=PChar(Res)+Offset; OutLen:=Length(Res)-Offset; end; - iconvres:=iconv(H, nil, nil, @Dst, @Outlen); + InLen=0; + iconvres:=iconv(H, nil, @InLen, @Dst, @Outlen); if iconvres = size_t(-1) then begin res:=s; @@ -91,7 +92,8 @@ begin SetLength(Res, Length(Res)+InLen*2+5); // 5 is minimally one utf-8 char Dst:=PChar(Res)+Offset; OutLen:=Length(Res)-Offset; - iconv(H, nil, nil, @Dst, @Outlen); + InLen:=0; + iconv(H, nil, @InLen, @Dst, @Outlen); end; {$endif} // trim output buffer @@ -101,7 +103,8 @@ begin SetLength(Res, Length(Res)+InLen*2+5); // 5 is minimally one utf-8 char Dst:=PChar(Res)+Offset; OutLen:=Length(Res)-Offset; - iconvres:=iconv(H, nil, nil, @Dst, @Outlen); + InLen:=0; + iconvres:=iconv(H, nil, @InLen, @Dst, @Outlen); setlength(Res,Length(Res) - Outlen); iconv_close(H); end;