TSpinEdit的漏洞 (轉)

gugu99發表於2008-03-27
TSpinEdit的漏洞 (轉)[@more@]

最近在使用Samples頁中的SpinEdit時,發現SpinEdit的最大值(MaxValue)和最小值(MinValue)的處理有。當最大值和最小值相等且不為零時,設定形同虛設;當最大值小於最小值時,SpinEdit的取值為最大值和最小值。檢視Spin.pas時發現,SpinEdit的CheckValue如下:
function TSpinEdit.CheckValue (NewValue: LongInt): LongInt;
begin
  Result := NewValue;
  if (FMaxValue <> FMinValue) then
  begin
  if NewValue < FMinValue then
  Result := FMinValue
  else if NewValue > FMaxValue then
  Result := FMaxValue;
  end;
end;
可見沒有對MaxValue = MinValue 且MinValue <> 0 及 MaxValue < MinValue 進行處理。所以在使用SpinEdit控制元件時應該在中對上述兩種情況進行必要的處理。

我在發現這個問題的之前花費了不少時間程式,以為是程式碼的問題。結果發現是個。這個問題可能早就有人發現並提出來了,只不過我沒有看到而已。不過我還是把它貼出來,希望其他朋友不要在這個問題上浪費時間。呵呵,其實私底下還是想賺分的:)。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1001535/,如需轉載,請註明出處,否則將追究法律責任。

相關文章