소스 검색

Check that index value is not below lower bound in TMessage.Valid method

Pierre Muller 8 달 전
부모
커밋
c6c05f8395
1개의 변경된 파일5개의 추가작업 그리고 1개의 파일을 삭제
  1. 5 1
      compiler/cmsgs.pas

+ 5 - 1
compiler/cmsgs.pas

@@ -461,8 +461,12 @@ begin
 end;
 
 function TMessage.Valid(nr:longint):boolean;
+var
+  i,j : longint;
 begin
-  result:=(nr div 1000<msgparts) and (nr mod 1000<msgidxmax[nr div 1000]) and assigned(msgidx[nr div 1000]^[nr mod 1000]);
+  i:=nr div 1000;
+  j:=nr mod 1000;
+  result:=(i>=low(msgstates)) and (i<msgparts) and (j<msgidxmax[i]) and assigned(msgidx[i]^[j]);
 end;
 
 procedure TMessage.ResetStates;