【C言語】
fclose()忘れた!
デバッグ関数がバグってる

warning: leak of FILE ‘fp’
[CWE-775]

警告: fclose忘れ
[-Wanalyzer-file-leak]


■デバッグ関数のバグ

#include <stdio.h>
#include <string.h>
void DEBUG_log(char *str){
    FILE *fp = fopen("DEBUG.log","a");
    fprintf(fp,"%s",str);
    //fclose(fp);   忘れた!
}
int main(void){
    for(int i = 0; i<100;i++){
        char log[256];
        sprintf(log,"%s:%d id=%d\n",
            __func__,__LINE__,i);
        DEBUG_log(log);
    }
}

何度もfopen()を実行して
fclose()していないので
リソース不足でシステム異常を起こす
可能性があります。


参考:CWE-775