HandleManager 'No such file or directory', segmentation fault

オープン
#773 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
38/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
cpp
領域
backend

調査の方向性

The report points to src/lib/handle_mgr/HandleManager.cpp, line 75, where HandleManager::getSession segfaults because this is null during a SoftHSMv2 signing operation through OpenSSL and pkcs11-provider. Start by reading that function and the related discussion in issue #635, then trace how the session's HandleManager is obtained. Done means the failing signing flow no longer segfaults; the issue does not identify a test.

索引モデルが issue の本文から書いたものです。

説明

I'm trying to use SoftHSMv2 in OpenSSL via pkcs11-provider. I'm building SoftHSMv2 from source, https://github.com/softhsm/SoftHSMv2/commit/a181dae9d3bfe270d81f29c7a799ee36daa5242a. When I try to sign something I get a seg fault.

root@d9a3a7531a3c:/# echo "test" > test.txt
   openssl pkeyutl -provider softhsm -sign -inkey "pkcs11:object=test;type=private" -in test.txt -out signature.bin
Enter pass phrase for PKCS#11 Token (Slot 479520929 - SoftHSM slot ID 0x1c94e8a1):
Segmentation fault (core dumped)

Running it under gdb, It looks like it's this line that is failing. (gdb output below.)

https://github.com/softhsm/SoftHSMv2/blob/a181dae9d3bfe270d81f29c7a799ee36daa5242a/src/lib/handle_mgr/HandleManager.cpp#L75

This may be related, https://github.com/softhsm/SoftHSMv2/issues/635#issuecomment-1699242624.

Stack trace
root@d9a3a7531a3c:/# gdb openssl
GNU gdb (Debian 13.1-3) 13.1
[...]
(gdb) run pkeyutl -provider softhsm -sign -inkey "pkcs11:object=test;type=private" -in test.txt -out signature.bin
Starting program: /usr/local/bin/openssl pkeyutl -provider softhsm -sign -inkey "pkcs11:object=test;type=private" -in test.txt -out signature.bin
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
Enter pass phrase for PKCS#11 Token (Slot 479520929 - SoftHSM slot ID 0x1c94e8a1):

Program received signal SIGSEGV, Segmentation fault.
0x0000fffff77018c8 in HandleManager::getSession (this=0x0, hSession=hSession@entry=1) at HandleManager.cpp:75
75      HandleManager.cpp: No such file or directory.
主要言語
C++
スター
1.1k
フォーク
434
平均マージ
12日 14時間
マージ済み PR(30日)
2

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

softhsm/SoftHSMv2 のほかの issue

softhsm/SoftHSMv2 の issue をすべて見る

似ている issue

C++ の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。