見出し画像

TWSNMP FC:SNMPv3暗号化TRAPを受信してパニック発生

今朝は4時に猫に起こしてもらいました。大好きな雨水を飲みたいと言っていたのでベランダと庭に出してあげました。
昨日、問い合わせのきていた復刻版TWSNMPとTWSNMP FCでSNMPv3の通信について調べました。
試しにSNMPv3の暗号化TRAPを送信してみると何とGO言語のパニックが発生しました。

panic: runtime error: slice bounds out of range [62:60]
goroutine 84 [running]:
github.com/twsnmp/gosnmp.(*UsmSecurityParameters).unmarshal(0xc002b13450, 0xc002b13403, 0xc0056e8000, 0xbf, 0x1000, 0x36, 0x10, 0x50721e0, 0x63acc78)
/Users/ymimacmini/go/pkg/mod/github.com/twsnmp/gosnmp@v1.28.4/v3_usm.go:880 +0x1557

どうやらGO言語のSNMPパッケージの問題のようです。問い合わせがあった問題も同じパッケージに関係しているようでした。
利用しているgosnmpパッケージは本家が開発を移譲する時期だったのとエージェントの機能を組み込みたかったので自分でforkしたパッケージを使っています。

久しぶりに本家

を確認するとパニックの発生部分がかなり修正されていることがわかりました。そこで本家の修正を取り込むことにしました。

を参考にしてマージしました。コンフリクトが多数あったので手作業で修正する必要がありましたが、VSCodeだとかなり親切に修正方法を教えてくれました。

画像1

修正する場所の選択肢が表示されるので選ぶだけで解決していきます。かなり便利です。
2時間かけてマージを終えて

パッケージを更新しました。
TWSNMP FCに組み込んで試してみましたが、最初同じようなパニックが発生しました。詳しくしらべようと思ってもう一度テストすると再現しなくなってしまいました。
これはちょっと厄介な問題の予感です。プログラマー探偵の出番かもしれません。助手の猫も「にゃー」と言っています。
でも、今朝は時間切れです。

明日に続く

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。