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);

 

 

posted @ 2019-12-05 13:03  wenky_me  阅读(12158)  评论(0编辑  收藏  举报