COBOL プログラムで CICS を使用していますが、CICS メモリからデータが書き出されることがあることに気付きました。データが破損し、アプリケーションが停止します。どこに追加されるのかわからないので、Cobol コードを分析して、CICS が使用する COMMAREA の破損の可能性を探すためのパーサーを作成しています。今、私は次のステートメントをチェックしました:
EXEC CICS XCTL
EXEC CICS LINK
EXEC CICS RETURN TRANSID
それぞれについて、送信された長さ (パラメーターで宣言されてLENGTH
いる) が sent より大きくないかどうかを確認しますCOMMAREA
。次にDFHCOMMAREA
、受信プログラムの が送信されたものよりも大きくないかどうかを確認しますCOMMAREA
(このドキュメントhttp://publib.boulder.ibm.com/infocenter/cicsts/v3r1/index.jsp?topic=%2Fcom.ibm.cics によると)。 ts31.doc%2Fdfhp3%2Fdfhp37t.htm ) :
受信データ域は、元の通信域と同じ長さである必要はありません。データの最初の部分のみにアクセスする必要がある場合は、新しいデータ領域を短くすることができます。ただし、通過する通信領域の長さを超えてはなりません。そうである場合、トランザクションは渡された領域外のデータを誤って読み取ろうとする可能性があります。また、領域外のデータを上書きする可能性があり、CICS が異常終了する可能性があります。
さて、メモリの上書きを検出するために他に何を解析すればよいのでしょうか?