使用安全整數函式

將安全性問題降到最低的方法之一,就是防止整數溢位和下溢。 當算數運算的結果大於要接收之資料類型的記憶體空間時,就會發生整數溢位。 這會導致整數截斷和不正確的結果。 當作業通常減去時,就會發生下溢,因此會產生不正確的結果。 由於截斷不符合新記憶體空間的結果,兩種資料類型之間的轉換也可能會導致不正確的結果。

ntintsafe 程式庫提供一組 C 函式,可執行安全整數算數運算,並檢查界限,以防止核心模式程式碼中的溢位和下溢。 這些函式會對應至應用程式程式碼所使用的 Windows IntSafe 函式。 您可以使用這些函式來計算索引或緩衝區大小,或計算某種形式的界限檢查。 函式已針對速度優化。

安全整數函式提供下列優點:

  • 目的地緩衝區的大小一律會提供給 函式,以確保函式不會寫入緩衝區結尾。

  • 即使作業截斷預定的結果,緩衝區仍保證為 Null 終止。

  • 所有函式都會傳回 NTSTATUS,其中只有一個可能的成功碼 (STATUS_SUCCESS) 和一個可能的錯誤狀況 (STATUS_INTEGER_OVERFLOW) 。

ntintsafe 程式庫有兩種函式類別:

  • 轉換函式—這些函式會執行兩種資料類型之間的轉換。

  • 算術函數— 這些函式會針對每個資料類型執行加法、減法和乘法運算。

Kernel-Mode 安全整數函式的摘要

匯入安全整數函式 Kernel-Mode