当前位置: 首页 > article >正文

error: conflicting types for ‘SSL_SESSION_get_master_key’

$ make
make all-am
make[1]: Entering directory ‘/home/linuxuser/tor’
CC src/lib/tls/libtor_tls_a-tortls_openssl.o
In file included from src/lib/tls/tortls_openssl.c:61:
./src/lib/tls/tortls_internal.h:55:8: error: conflicting types for ‘SSL_SESSION_get_master_key’
55 | size_t SSL_SESSION_get_master_key(struct ssl_session_st *s,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from src/lib/tls/tortls_openssl.c:48:
/usr/local/ssl/include/openssl/ssl.h:2017:15: note: previous declaration of ‘SSL_SESSION_get_master_key’ was here
2017 | __owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
src/lib/tls/tortls_openssl.c: In function ‘find_cipher_by_id’:
src/lib/tls/tortls_openssl.c:780:21: error: unused variable ‘c’ [-Werror=unused-variable]
780 | const SSL_CIPHER *c;
| ^
src/lib/tls/tortls_openssl.c: In function ‘tor_tls_client_is_using_v2_ciphers’:
src/lib/tls/tortls_openssl.c:957:20: error: invalid use of incomplete typedef ‘SSL_SESSION’ {aka ‘struct ssl_session_st’}
957 | ciphers = session->ciphers;
| ^~
src/lib/tls/tortls_openssl.c: At top level:
src/lib/tls/tortls_openssl.c:1592:1: error: conflicting types for ‘SSL_get_client_random’
1592 | SSL_get_client_random(SSL *s, uint8_t *out, size_t len)
| ^~~~~~~~~~~~~~~~~~~~~

I was encountering OpenSSL-related type conflicts while compiling Tor. This is likely caused by an incompatibility between Tor’s code and the OpenSSL version installed on your system. Here’s how you can approach fixing this:

1. Check OpenSSL Version

Run:

openssl version

Tor expects OpenSSL 1.1.1 or 3.x, but if you’re using an incompatible version (e.g., OpenSSL 3.x with an older Tor version), it can cause these conflicts.

2. Verify OpenSSL Headers

Since you installed OpenSSL manually in /usr/local/ssl, double-check that you’re using the correct headers:

ls -l /usr/local/ssl/include/openssl/

Ensure that the ssl.h file matches the installed OpenSSL version.

3. Force Correct OpenSSL Paths in Compilation

Reconfigure Tor to use the correct OpenSSL paths by running:

export TOR_OPENSSL_CFLAGS='-I/usr/local/ssl/include'
export TOR_OPENSSL_LIBS='-L/usr/local/ssl/lib64 -lssl -lcrypto'
./configure --with-openssl-dir=/usr/local/ssl

Then, try compiling again:

make clean && make -j$(nproc)

4. Check for OpenSSL API Changes

The errors suggest that the SSL_SESSION_get_master_key function has different signatures in OpenSSL versions. If Tor is using an outdated declaration, you might need to patch it or use an older OpenSSL version.

You can check the function prototype in your OpenSSL headers:

grep -r "SSL_SESSION_get_master_key" /usr/local/ssl/include/openssl/

If it has changed, you may need to modify Tor’s source code (tortls_internal.h and tortls_openssl.c) to match the correct function signature.

5. Try an Older OpenSSL Version

If Tor is not yet compatible with your OpenSSL version, consider downgrading to OpenSSL 1.1.1:

cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar xvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl
make -j$(nproc)
make install

Then, recompile Tor with the updated OpenSSL.


http://www.kler.cn/a/546351.html

相关文章:

  • jmeter--参数化
  • vue2和vue3储存组件
  • 学习笔记-人脸识别相关编程基础
  • 14、deepseek视觉大模型Janus Pro本地部署及实战
  • WSL Ubuntu 安装 CUDA 教程
  • 【NLP251】命名实体识别常用模块(基于Transformer分类)
  • 从驾驶员到智能驾驶:汽车智能化进程中的控制与仿真技术
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter12-BOM
  • HBASE面试技巧
  • 洛谷 acwing刷题 有关图的存储形式和djstra算法的例题
  • C语言进阶习题(4结构体)【1】通讯录的实现
  • 从无序到有序:上北智信通过深度数据分析改善会议室资源配置
  • 企业网站设计HTML源码模板
  • 【认证授权FAQ】HP Anyware LLS服务器常用命令
  • minio在上传pdf文件时设置Content-Type: application/pdf有什么作用
  • 硬件-电源-隔离与非隔离的区别
  • 如何评估云原生GenAI应用开发中的安全风险(上)
  • 寻找两个有序数组的中位数
  • 【OJ项目】深入剖析 JudgeServiceImpl 类:题目的判题逻辑详解
  • 基于javaweb的SpringBootoa办公自动化系统设计和实现(源码+文档+部署讲解)