stack smashing detected解决过程

旧城冷巷雨未停 提交于 2019-12-06 14:09:57

在执行程序结束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);

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!