網路上介紹 strcpy strcmp 這些相關function有些風險,就是可能會造成 memory
越界問題。所以使用 strncpy strncmp 這些來替代。
原因是strcmp(a,b),b若沒有空字元結尾,他會一直比下去,會有存取到未知memory
風險。所以用strncmp代替。
現在我開發nRF5 BLE 相關系列。BLE底層callback回來有 uint8_t *p_data 和長度。
我從APP傳過去是一個 device name,callback接收到後只會是hex byte由 p_data指向
請問你們把它存成字串會是怎樣的安全作法?
1 在BLE內先宣告長度20的陣列。array[0]= p_data
array[1]= p_data+1
..
array[18] = p_data+18
array[19] = '\0'
2 memcpy(array, p_data, sizeof(array));
第二種我不確定安不安全。假設p_data沒有到20那麼長,不就也會把p_data指向的
memory越界了嗎?
請多多指教QQ