Explorar o código

* buffer overflow checking in ptccrt.KeyBufAdd

git-svn-id: trunk@16141 -
nickysn %!s(int64=15) %!d(string=hai) anos
pai
achega
e7c4990780
Modificáronse 1 ficheiros con 4 adicións e 1 borrados
  1. 4 1
      packages/graph/src/ptcgraph/ptccrt.pp

+ 4 - 1
packages/graph/src/ptcgraph/ptccrt.pp

@@ -79,7 +79,10 @@ end;
 
 
 procedure KeyBufAdd(Ch: Char);
 procedure KeyBufAdd(Ch: Char);
 begin
 begin
-  {todo: overflow checking}
+  { do nothing, if the buffer is full }
+  if ((KeyBufTail + 1) = KeyBufHead) or
+     ((KeyBufTail = High(KeyBuffer)) and (KeyBufHead = Low(KeyBuffer))) then
+    exit;
   KeyBuffer[KeyBufTail] := Ch;
   KeyBuffer[KeyBufTail] := Ch;
   Inc(KeyBufTail);
   Inc(KeyBufTail);
   if KeyBufTail > High(KeyBuffer) then
   if KeyBufTail > High(KeyBuffer) then