【问题标题】:CertGetNameString throws heap corruptionCertGetNameString 引发堆损坏
【发布时间】:2021-06-21 06:12:12
【问题描述】:

CertGetNameString() 随机抛出堆损坏错误,使用函数 CertGetNameStringW() 也一样

LPCWSTR pszName = (LPCWSTR)malloc(cbSize * sizeof(TCHAR));
if (CertGetNameString( pCurrentCertContext, dwType, dwFlags, 空指针, psz名称, cb大小)) {}

【问题讨论】:

  • 不要混用 LPCWSTRTCHAR。您可能没有使用正确的 UNICODE_UNICODE 定义进行编译,这使得 TCHAR == char 而不是 wchar_t 并且您的 malloc 是预期大小的一半。始终使用LPCWSTRWCHARCertGetNameStringW

标签: unicode wincrypt


【解决方案1】:

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

【讨论】:

  • 或将CertGetNameStringWWCHARLPCWSTR 一起明确使用。
猜你喜欢
  • 2011-07-18
  • 2010-11-15
  • 2011-12-03
  • 2011-08-03
  • 1970-01-01
  • 2019-10-23
  • 2016-03-11
  • 2015-06-11
  • 2012-06-17
相关资源
最近更新 更多