|
From: <tw...@us...> - 2026-03-07 16:59:42
|
Revision: 864
http://sourceforge.net/p/tdbf/code/864
Author: twm
Date: 2026-03-07 16:59:41 +0000 (Sat, 07 Mar 2026)
Log Message:
-----------
Fix nil pointer dereference in GetKeyDataFromEntry
TMdxPage.GetKeyDataFromEntry and TNdxPage.GetKeyDataFromEntry both
dereference the result of GetEntry() without checking for nil. GetEntry
returns nil when the entry number is out of range (e.g. corrupt index).
Add nil check to return nil instead of causing an Access Violation.
Modified Paths:
--------------
trunk/src/dbf_idxfile.pas
Modified: trunk/src/dbf_idxfile.pas
===================================================================
--- trunk/src/dbf_idxfile.pas 2025-09-12 15:57:13 UTC (rev 863)
+++ trunk/src/dbf_idxfile.pas 2026-03-07 16:59:41 UTC (rev 864)
@@ -1720,8 +1720,14 @@
end;
function TMdxPage.GetKeyDataFromEntry(AEntry: Integer): PAnsiChar;
+var
+ EntryPtr: Pointer;
begin
- Result := @PMdxEntry(GetEntry(AEntry))^.KeyData;
+ EntryPtr := GetEntry(AEntry);
+ if EntryPtr <> nil then
+ Result := @PMdxEntry(EntryPtr)^.KeyData
+ else
+ Result := nil;
end;
function TMdxPage.GetRecNo: Integer;
@@ -1797,8 +1803,14 @@
end;
function TNdxPage.GetKeyDataFromEntry(AEntry: Integer): PAnsiChar;
+var
+ EntryPtr: Pointer;
begin
- Result := @PNdxEntry(GetEntry(AEntry))^.KeyData;
+ EntryPtr := GetEntry(AEntry);
+ if EntryPtr <> nil then
+ Result := @PNdxEntry(EntryPtr)^.KeyData
+ else
+ Result := nil;
end;
function TNdxPage.GetNumEntries: Integer;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|