■
先日やらかしたC言語でのバグ。
char *ResultStr() { return ""; } int ReplacePrint(char *sz) { if (sz[0]=='\0') strcpy(sz, "0"); return printf(sz); } int main() { // Null文字が出力される printf( ResultStr() ); // Null文字列を変換して、文字列"0"が出力される ReplacePrint( ResultStr() ); // Null文字を出力したいはずなのに、文字列"0"が出力される printf( ResultStr() ); return 0; }
簡略化して書くとかなりタコい事をしてる。orz
しかし、「""」のポインタに対して保護無しで、普通に上書きできてしまうんだなぁ。
まぁ、必要なのにconstを付けなかったのが敗因という感じ。