我正在使用以下代碼獲取分段錯誤。我很確定這是因爲函數試圖使用變量的地址而不是它的值。我有點新的指針,所以任何幫助將不勝感激!傳遞指向函數的指針會導致嘗試檢索值時發生segementation故障
int main(int argc, char *argv[])
{
EVP_PKEY priv_key_p;
X509_REQ req_p;
X509 cert;
PKCS7 pkcs7;
/*Need to store value in req_p and priv_key_p*/
makecsr(&req_p, &priv_key_p, passphrase);
/*Need to use value of req_p and priv_key_p*/
create_cert(&req_p, &cert, &priv_key_p, passphrase);
}
int create_cert(X509_REQ *req_p, X509 *cert, EVP_PKEY *priv_key_p, char *passphrase)
{
int i;
long serial = 1;
EVP_PKEY *pkey;
const EVP_MD *digest;
X509_NAME *name;
X509V3_CTX ctx;
/* verify signature on the request */
if (!(pkey = X509_REQ_get_pubkey (req_p))) <--- Segementation fault here!
int_error ("Error getting public key from request");
....
}
使用GDB,makecsr執行後,我可以打印priv_key_p和req_p的值沒問題。
然而,create_cert功能裏面,我只能通過寫P * priv_key_p/* req_p
錯誤
Program received signal SIGSEGV, Segmentation fault.
0xb7ebb747 in X509_REQ_get_pubkey()
from /lib/i386-linux-gnu/libcrypto.so.1.0.0
打印值
能否請你解釋你的代碼,我的意思是什麼類型的變量。在目前的狀態下,很難回答這個問題。 – Arpit
'X509_REQ_get_pubkey(&req_p)'試試這個(在黑暗中拍攝) – Arpit
這些類型來自[OpenSSL library](http://www.openssl.org/docs/ssl/ssl.html),沒有運氣&req_p要麼 – TomSelleck