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