我有一个从服务器获取多个X.509
证书的函数。我希望它在OpenSSL的X509 *
结构中“返回”这些证书的数组。但由于我的界面返回错误代码,我想使用一个out参数。带有指向Out参数中对象的动态数组
如果我没有误导,这将需要我使用带3(!)*
(例如X509 ***certs
)的指针。我在这里是因为我个人觉得非常混乱。以下是我打算做,我想知道如果我是完全错误的轨道上(在我看来):
int get_certs(X509 ***certs)
{
X509 **local_certs;
int i;
local_certs = malloc(no_of_certs * sizeof(X509 *));
// fetch certs
for(i=0; i < no_of_certs; ++i)
{
// load single cert into variable "cert"
local_certs[i] = cert
}
*certs = local_certs;
}
的调用会再看看大概是这个样子:
X509 **certs;
get_certs(&certs);
这是正确的方法吗?因为对我来说这个三重指针看起来很奇怪。
注意:我不知道会有多少证书,所以它必须是一个动态数组。
1.额外的malloc不是必需的,因为'cert'是由源正确分配的。 2.返回不是一个选项,必须是错误代码。 – javex
不够公平......然后在我的回答的第一段中给出你的问题的答案,其余的是多余的。 –