/* good1() uses if(GLOBAL_CONST_FIVE!=5) instead of if(GLOBAL_CONST_FIVE==5) */ static void good1() { if(GLOBAL_CONST_FIVE!=5) { /* INCIDENTAL: CWE 561 Dead Code, the code below will never run */ printLine("Benign, fixed string"); } else { { char * filename; char tmpl[] = "goodXXXXXX"; FILE *pFile; /* Establish that this is a temporary file and that it should be deleted */ filename = MKTEMP(tmpl); if (filename != NULL) { pFile = FOPEN(filename, "w"); if (pFile != NULL) { fprintf(pFile, "Temporary file"); fclose(pFile); /* FIX: Unlink the temporary file */ UNLINK(filename); /* EXPECTED INCIDENTAL: CWE367 TOCTOU - This POSIX API is essentially insecure by design */ } } } } }
/* good1() uses if(5!=5) instead of if(5==5) */ static void good1() { if(5!=5) { /* INCIDENTAL: CWE 561 Dead Code, the code below will never run */ printLine("Benign, fixed string"); } else { { wchar_t * filename; wchar_t tmpl[] = L"fnXXXXXX"; int fileDesc; filename = MKTEMP(tmpl); if (filename == NULL) { exit(1); } printWLine(filename); /* FIX: Open a temporary file using open() and the O_CREAT and O_EXCL flags * NOTE: This is not a perfect solution, but it is the base case scenario */ fileDesc = OPEN(filename, O_RDWR|O_CREAT|O_EXCL, S_IREAD|S_IWRITE); if (fileDesc != -1) { printLine("Temporary file was opened...now closing file"); CLOSE(fileDesc); } } } }
/* good1() uses the GoodSinkBody in the while loop */ static void good1() { while(1) { { char * filename; char tmpl[] = "goodXXXXXX"; FILE *pFile; /* Establish that this is a temporary file and that it should be deleted */ filename = MKTEMP(tmpl); if (filename != NULL) { pFile = FOPEN(filename, "w"); if (pFile != NULL) { fprintf(pFile, "Temporary file"); fclose(pFile); /* FIX: Unlink the temporary file */ UNLINK(filename); /* EXPECTED INCIDENTAL: CWE367 TOCTOU - This POSIX API is essentially insecure by design */ } } } break; } }
/* good2() reverses the bodies in the if statement */ static void good2() { if(5==5) { { wchar_t * filename; wchar_t tmpl[] = L"fnXXXXXX"; int fileDesc; filename = MKTEMP(tmpl); if (filename == NULL) { exit(1); } printWLine(filename); /* FIX: Open a temporary file using open() and the O_CREAT and O_EXCL flags * NOTE: This is not a perfect solution, but it is the base case scenario */ fileDesc = OPEN(filename, O_RDWR|O_CREAT|O_EXCL, S_IREAD|S_IWRITE); if (fileDesc != -1) { printLine("Temporary file was opened...now closing file"); CLOSE(fileDesc); } } } }
void CWE377_Insecure_Temporary_File__char_mktemp_15_bad() { switch(6) { case 6: { char * filename; char tmpl[] = "fnXXXXXX"; int fileDesc; filename = MKTEMP(tmpl); if (filename == NULL) { exit(1); } printLine(filename); /* FLAW: Open a temporary file using open() and flags that do not prevent a race condition */ fileDesc = OPEN(filename, O_RDWR|O_CREAT, S_IREAD|S_IWRITE); if (fileDesc != -1) { printLine("Temporary file was opened...now closing file"); CLOSE(fileDesc); } } break; default: /* INCIDENTAL: CWE 561 Dead Code, the code below will never run */ printLine("Benign, fixed string"); break; } }
void CWE377_Insecure_Temporary_File__char_mktemp_12_bad() { if(globalReturnsTrueOrFalse()) { { char * filename; char tmpl[] = "fnXXXXXX"; int fileDesc; filename = MKTEMP(tmpl); if (filename == NULL) { exit(1); } printLine(filename); /* FLAW: Open a temporary file using open() and flags that do not prevent a race condition */ fileDesc = OPEN(filename, O_RDWR|O_CREAT, S_IREAD|S_IWRITE); if (fileDesc != -1) { printLine("Temporary file was opened...now closing file"); CLOSE(fileDesc); } } } else { { char * filename; char tmpl[] = "fnXXXXXX"; int fileDesc; filename = MKTEMP(tmpl); if (filename == NULL) { exit(1); } printLine(filename); /* FIX: Open a temporary file using open() and the O_CREAT and O_EXCL flags * NOTE: This is not a perfect solution, but it is the base case scenario */ fileDesc = OPEN(filename, O_RDWR|O_CREAT|O_EXCL, S_IREAD|S_IWRITE); if (fileDesc != -1) { printLine("Temporary file was opened...now closing file"); CLOSE(fileDesc); } } } }
void CWE459_Incomplete_Cleanup__wchar_t_01_bad() { { wchar_t * filename; wchar_t tmpl[] = L"badXXXXXX"; FILE *pFile; /* Establish that this is a temporary file and that it should be deleted */ filename = MKTEMP(tmpl); if (filename != NULL) { pFile = FOPEN(filename, L"w"); if (pFile != NULL) { fprintf(pFile, "Temporary file"); fclose(pFile); /* FLAW: We don't unlink */ } } } }
void CWE459_Incomplete_Cleanup__char_13_bad() { if(GLOBAL_CONST_FIVE==5) { { char * filename; char tmpl[] = "badXXXXXX"; FILE *pFile; /* Establish that this is a temporary file and that it should be deleted */ filename = MKTEMP(tmpl); if (filename != NULL) { pFile = FOPEN(filename, "w"); if (pFile != NULL) { fprintf(pFile, "Temporary file"); fclose(pFile); /* FLAW: We don't unlink */ } } } } }
void CWE377_Insecure_Temporary_File__wchar_t_mktemp_03_bad() { if(5==5) { { wchar_t * filename; wchar_t tmpl[] = L"fnXXXXXX"; int fileDesc; filename = MKTEMP(tmpl); if (filename == NULL) { exit(1); } printWLine(filename); /* FLAW: Open a temporary file using open() and flags that do not prevent a race condition */ fileDesc = OPEN(filename, O_RDWR|O_CREAT, S_IREAD|S_IWRITE); if (fileDesc != -1) { printLine("Temporary file was opened...now closing file"); CLOSE(fileDesc); } } } }
/* good2() reverses the bodies in the if statement */ static void good2() { if(STATIC_CONST_FIVE==5) { { wchar_t * filename; wchar_t tmpl[] = L"goodXXXXXX"; FILE *pFile; /* Establish that this is a temporary file and that it should be deleted */ filename = MKTEMP(tmpl); if (filename != NULL) { pFile = FOPEN(filename, L"w"); if (pFile != NULL) { fprintf(pFile, "Temporary file"); fclose(pFile); /* FIX: Unlink the temporary file */ UNLINK(filename); /* EXPECTED INCIDENTAL: CWE367 TOCTOU - This POSIX API is essentially insecure by design */ } } } } }