stack smashing detected解決過程


在執行程序結束return 0 之后出現上圖問題。主要原因是在程序中存在數組越界。

解決方法:

1. 查看定義的結構體內buffer大小,為4096字節

 typedef struct
    {
        UINT32 len;
        BYTE buf[4096];
    } ctrust_tpm2_combuf_t
 

2. 查看要存儲的結構體TPMS_CONTEXT大小為5208字節

  
  sizeof(TPMS_CONTEXT)

 

3. 在memcpy拷貝時,要添加字節大小限制條件

     
   if (sizeof(TPMS_CONTEXT) > 4096)
        {
            sub_context->len = 4096;
        }
        else
        {
            sub_context->len = sizeof(TPMS_CONTEXT);
        }
  memcpy(&sub_context->buf, (BYTE *)&context, sub_context->len);

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM