From 477a1743995ed620732c073955de707d2f8e7248 Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 6 Jul 1998 15:56:43 +0000 Subject: [PATCH] Added length checking for string reading --- rtl/inc/text.inc | 55 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/rtl/inc/text.inc b/rtl/inc/text.inc index b1deffc84c..cf2fd19037 100644 --- a/rtl/inc/text.inc +++ b/rtl/inc/text.inc @@ -711,7 +711,7 @@ Begin FileFunc(f.FlushFunc)(f); End; - +{$ifndef MAXLENREADSTRING} Procedure Read_String(var f : TextRec;var s : String);[Public,Alias: 'READ_TEXT_STRING']; var Temp,sPos : Word; @@ -753,7 +753,53 @@ Begin End; s[0]:=chr(sPos-1); End; - +{$ELSE} +Procedure Read_String(Maxlen : Longint;var f : TextRec;var s : String);[Public,Alias: 'READ_TEXT_STRING']; +var + Temp,sPos,nrread : Word; +Begin + { Delete the string } + s:=''; + If InOutRes <> 0 then exit; + if not OpenInput(f) then + exit; + Temp:=f.BufPos; + sPos:=1; + NrRead:=0; + while (f.BufPos#10) and (NrRead#10) and (NrRead=f.BufEnd Then + Begin + FileFunc(f.InOutFunc)(f); + Temp:=f.BufPos; + End + End; + s[0]:=chr(sPos-1); +End; +{$ENDIF MAXLENREADSTRING} Procedure Read_Char(var f : TextRec;var c : Char);[Public,Alias: 'READ_TEXT_CHAR']; Begin @@ -1087,7 +1133,10 @@ end; { $Log$ - Revision 1.14 1998-07-02 12:14:56 carl + Revision 1.15 1998-07-06 15:56:43 michael + Added length checking for string reading + + Revision 1.14 1998/07/02 12:14:56 carl + Each IOCheck routine now check InOutRes before, just like TP Revision 1.13 1998/07/01 15:30:00 peter