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