summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-04-17 14:45:55 +0000
committermarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-04-17 14:45:55 +0000
commitc997613f43aa017d34666ea5b0e09a9163b868e0 (patch)
treecbe26319d9890b77a8cf0142df2f427db5fbbdee
parentee23007947377e9913bf91ee9ad37198defc51ba (diff)
downloadfpc-c997613f43aa017d34666ea5b0e09a9163b868e0.tar.gz
--- 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: https://svn.freepascal.org/svn/fpc/branches/fixes_3_2@49221 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--packages/fcl-registry/src/registry.pp2
-rw-r--r--packages/hash/src/sha1.pp11
-rw-r--r--packages/iconvenc/src/iconvert.inc11
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;