BRO との文字列比較をテストしていますが、実行時エラーが発生しました。ぜひご覧いただき、ヒントをいただければ幸いです。たとえば、str_A と str_B の 2 つの文字列があるとします。str_A は次のようなパターンのようなものです。str_A = "\x13\x02\xf0\x80";
str_B は、関数からのペイロード (コンテンツ) 文字列です。
event tcp_packet(c: connection, is_orig: bool, flags: string, seq: count, ack: count, len: count, contents: string)
2 つの文字列を : と比較すると、次のif(str_A in str_B)
ような実行時エラーが減少しました。
1467860547.182543 error: string with embedded NUL: "\x13\x00\xf0\x13"
1467860547.182543 error: string without NUL terminator: "\x13\x00\xf0\x13\x02\xf0\x80\x02\x00\x00\xc0\x01\x00\x00\x00\x00\x87\x02"
パターン文字列の途中にある「x00」がターミネータと見なされたようで、後者の場合、str_B の最後に NUL はありませんでした。
(ばかげた) 質問は、BRO 内の str_B の最後に NUL を追加する方法です。また、比較時に文字列の途中に埋め込まれた NUL を BRO に無視させる方法は? どうもありがとう。