3 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊
如果您允許考慮使用非CPU設(shè)備,那么一個(gè)潛在的不安全操作示例就是訪問PCI映射的內(nèi)存頁的越界區(qū)域。不能保證目標(biāo)設(shè)備使用與主內(nèi)存子系統(tǒng)相同的頁面大小或?qū)R方式。例如,[cpu page base]+0x800如果設(shè)備處于2KiB頁面模式,則嘗試訪問地址可能會(huì)觸發(fā)設(shè)備頁面錯(cuò)誤。這通常會(huì)導(dǎo)致系統(tǒng)錯(cuò)誤檢查。

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
uint32_t foo = *(uint32_t*)aligned_pointer
將編譯為32位負(fù)載。一次只測試一個(gè)字節(jié)并不重要foo
。如果代碼的行為取決于終止之后字節(jié)中的內(nèi)容0
,那是一個(gè)錯(cuò)誤,但是完全加載它們可能會(huì)導(dǎo)致問題。訪問檢查在加載/存儲(chǔ)上進(jìn)行;寄存器無法跟蹤有關(guān)數(shù)據(jù)來源的信息。glibc的出色實(shí)現(xiàn)甚至通過ALU饋入整個(gè)64B,從而將其組合成可以分支的一件事。
- 3 回答
- 0 關(guān)注
- 660 瀏覽
添加回答
舉報(bào)