-2

関数 parse_consol(definition1); を呼び出しています。ここで、定義、つまり渡される引数は char* 型であり、xml ファイルの絶対パスです。(デバッグによって)チェックすると、渡される値は絶対に正しいですが、関数の定義を制御すると、取得する値の最後にランダムな文字が追加され、失敗します。

関数の定義で、これらの文字が実際の引数の最後にどのように追加されたかを知る必要があります。

以下のコメントからのコード:

definition_state1 = (char*)malloc(((int) strlen(((char*)definition_path)+1))); 
strcpy(definition_state1 ,(char*)definition_path); 
definition_state2 = (char*)malloc(((int) strlen(((char*)value[1])+1))); 
strcpy(definition_state2 ,(char*)value[1]); 
strcat(definition_state1,definition_state2); 
get_license_properties("D:\\Automation\\InputFiles\\current_state\\c2v1.c2v"); // parser for decoded c2v 
parse_consolidated(definition_state1); // parser for consolidated xm
4

1 に答える 1

4

definition_state1ほとんどの場合、バッファがオーバーフローしています。バッファを割り当て、definition_path+1バッファにコピーdefinition_pathしました。次に、このバッファに追加definition_state2すると、バッファが確実にオーバーフローしdefinition_state1ます。

于 2013-05-23T06:29:25.513 に答える