CertGetNameString 引发堆损坏

问题描述

CertGetNameString() 随机抛出堆损坏错误,使用函数 CertGetNameStringW() 做同样的事情

LPCWSTR pszName = (LPCWSTR)malloc(cbSize * sizeof(TCHAR));
如果(证书获取名称字符串( pCurrentCertContext, dw 类型, dwFlags,空指针, psz名称, cbSize)) {}

解决方法

涉及使用 CertGetNameString() cyrpt api 的代码需要使用预处理器指令 UNICODE 启用来构建代码。