HULFT-27216

ファイルトリガ情報で「正規表現使用(REGEX)」を“する(Y)” と指定し、監視対象のファイル名にマルチバイト文字を指定した場合、文字の一部が正規表現のメタキャラクターと誤認される

現象

ファイルトリガ情報で「正規表現使用(REGEX)」を“する(Y)” と指定し、「ファイル名(TARGETFILENAME)」に以下を含むマルチバイト文字を指定すると、その文字が正規表現のメタキャラクターと誤認されます。

  • ロケール固有の文字コードに0x5bを含むマルチバイト文字

  • ロケール固有の文字コードに0x5dを含むマルチバイト文字

 

この場合、以下のいずれかの事象が発生する場合があります。

事象1

ファイルトリガ情報の保存時にエラーが発生し保存できません。

「ファイル名(TARGETFILENAME)」のマルチバイト文字の文字コードに0x5b(例:"閏")が含まれる場合、正規表現のメタキャラクターと誤認され、正規表現パターンに間違いがあるとして以下のメッセージが出力されます。

 

  • 出力されるメッセージ

    ファイル名が不正です。正規表現パターンに間違いがあります。premature end of char-class

    または

    システムエラー。 (99) 詳細コード = W00973 ファイルトリガ情報の「ファイル名」が不正です。

 

事象2

正規表現の記述が誤っている場合であってもファイルトリガ情報を保存できてしまいます。

「ファイル名(TARGETFILENAME)」のマルチバイト文字の文字コードに0x5d(例:"云")が含まれる場合、正規表現のメタキャラクターとして誤認されることで、誤った正規表現が正しい正規表現と判断され保存できる場合があります。

この場合、ファイルトリガの動作時にエラーとなり、以下のメッセージがログに出力されます。

 

  • 出力されるメッセージ

    「Error -> hh:mm:ss E229053 トリガID(999999)の正規表現マッチング処理にエラーが発生しました:premature end of char-class。(スレッドID=999999)」

障害レベル

C: 中度

対象バージョン

Ver.8.1.0~Ver.8.5.2A

修正バージョン

Ver.10.2.0

発生条件

以下の条件をすべて満たすと発生する場合があります。

  • ファイルトリガ情報の「正規表現使用(REGEX)」に“する(Y)”を指定

  • ファイルトリガ情報の「ファイル名(TARGETFILENAME)」の指定に以下のいずれかの文字コードを含むマルチバイト文字を使用

    • ロケール固有の文字コードに0x5bを含むマルチバイト文字

    • ロケール固有の文字コードに0x5dを含むマルチバイト文字

代替方法

管理情報バッチ登録コマンド(utliupdt)を利用することにより、回避可能です。

修正後

上記条件を満たした場合でも、以下の事象のとおり「ファイル名(TARGETFILENAME)」に指定されたマルチバイト文字はマルチバイト文字として正しく認識されます。

 

事象1

マルチバイト文字として正しく認識されるため、ファイルトリガ情報は保存されます。

「ファイル名(TARGETFILENAME)」のマルチバイト文字のロケール固有の文字コードに0x5bが含まれる場合、正規表現のメタキャラクターではなくマルチバイト文字として正しく認識されます。このためファイルトリガ情報は保存されます。

 

事象2

マルチバイト文字として正しく認識されるため、正規表現の記述が誤っているとファイルトリガ情報は保存できません。

「ファイル名(TARGETFILENAME)」のマルチバイト文字のロケール固有の文字コードに0x5dが含まれる場合、正規表現のメタキャラクターではなくマルチバイト文字として認識されます。このため、誤った正規表現が正しい正規表現と判断されることはありません。

その結果、ファイルトリガ情報の登録時に以下のエラーが発生し保存できません。

 

  • 出力されるメッセージ

    ファイル名が不正です。正規表現パターンに間違いがあります。premature end of char-class