首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用boringssl库时出现分段错误

使用boringssl库时出现分段错误
EN

Stack Overflow用户
提问于 2018-12-06 19:29:00
回答 2查看 331关注 0票数 0

当我在我的终端上运行以下代码时,它给出了分段错误。我使用的是boringssl库。

代码语言:javascript
复制
#include <bits/stdc++.h>
#include <openssl/evp.h>
using namespace std;

// #include <openssl/digest.h>
int main(){
    EVP_MD_CTX* ctx = EVP_MD_CTX_new();
    EVP_MD_CTX_init(ctx);

    const EVP_MD* sha256 = EVP_sha256();
    EVP_DigestInit(ctx,sha256);

    char str[]="ANIKET GUPTA";
    EVP_DigestUpdate(ctx,str,strlen(str));

    unsigned char hash[EVP_MAX_MD_SIZE];
    unsigned int* hash_size;
    EVP_DigestFinal(ctx,hash,hash_size);

    cout <<"SUCCESS";
    EVP_MD_CTX_free(ctx);
}

我使用以下命令运行此代码:g++ -I~/src/boringssl/include sign.cpp ~/src/boringssl/build/crypto/libcrypto.a -lpthread导致分段错误的错误是什么?

EN

回答 2

Stack Overflow用户

发布于 2018-12-06 23:22:23

在队伍中

代码语言:javascript
复制
unsigned int* hash_size;
EVP_DigestFinal(ctx, hash, hash_size);

您正在使用未初始化的hash_size,并且EVP_DigestFinal()将尝试将hash_size结果写入未知位置,从而导致段故障。相反,您可以这样做

代码语言:javascript
复制
unsigned int hash_size;
EVP_DigestFinal(ctx, hash, &hash_size);

你的编译器应该已经给出了这个问题的指示,它通常能够检测到像这样的未初始化的变量。

票数 0
EN

Stack Overflow用户

发布于 2018-12-06 23:26:19

解决了!我们必须使用malloc hash和hash_size

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53650438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档