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

猜你喜欢

转载自www.cnblogs.com/wenkyme/p/11988620.html