[C 的那些眉角]陣列邊界檢查 — 緩衝區溢位的根源

緩衝區溢位(Buffer Overflow)是 C 語言最惡名昭彰的問題之一。

它不只是會讓程式 crash,
在某些情況下,它是駭客攻擊的入口。
歷史上很多嚴重的安全漏洞,
根源都是一個沒有做邊界檢查的陣列存取。

但在嵌入式開發,我更常遇到的不是安全問題,
而是「程式跑著跑著,某個全域變數的值莫名其妙被改掉」,
或是「UART 收到一個比預期長的封包,程式就 crash 了」。

追到最後,都是同一件事:
有人寫到了陣列邊界以外的地方。

閱讀全文