Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
CheckerCERT-CCERT-CPPDescriptionarithOperationsOnVoidPointerAPI04-C. Provide a consistent and usable error-checking mechanismFully implementedarrayIndexOutOfBoundsCondARR30-C. Do not form or use out-of-bounds pointers or array subscripts Fully implementedassignmentInAssertARR30-C. Do not form or use out-of-bounds pointers or array subscripts Fully implementedautoVariablesARR30-C. Do not form or use out-of-bounds pointers or array subscriptsFully implementedautovarInvalidDeallocationARR30-C. Do not form or use out-of-bounds pointers or array subscriptsFully implementedC01ARR30-C. Do not form or use out-of-bounds pointers or array subscriptsCTR52-CPP. Guarantee that library functions do not overflowFully implementedC02ARR30-C. Do not form or use out-of-bounds pointers or array subscripts Fully implementedC03ARR30-C. Do not form or use out-of-bounds pointers or array subscripts Fully implementedC04ARR30-C. Do not form or use out-of-bounds pointers or array subscriptsCTR52-CPP. Guarantee that library functions do not overflowFully implementedC05ARR30-C. Do not form or use out-of-bounds pointers or array subscriptsFully implementedC06ARR30-C. Do not form or use out-of-bounds pointers or array subscripts Fully implementedC07ARR30-C. Do not form or use out-of-bounds pointers or array subscriptsFully implementedC08ARR30-C. Do not form or use out-of-bounds pointers or array subscripts Fully implementedC08ARR30-C. Do not form or use out-of-bounds pointers or array subscripts Fully implementedC09ARR30-C. Do not form or use out-of-bounds pointers or array subscriptsFully implementedC10ARR30-C. Do not form or use out-of-bounds pointers or array subscriptsFully implementedC101ARR32-C. Ensure size arguments for variable length arrays are in a valid range Fully implementedC107ARR36-C. Do not subtract or compare two pointers that do not refer to the same array Fully implementedC109ARR38-C. Guarantee that library functions do not form invalid pointersFully implementedC11CON02-C. Do not use volatile as a synchronization primitiveFully implementedC12CON05-C. Do not perform operations that can block while holding a lockFully implementedC122CON40-C. Do not refer to an atomic variable twice in an expressionFully implementedC123CON40-C. Do not refer to an atomic variable twice in an expressionFully implementedC126DCL01-C. Do not reuse variable names in subscopesFully implementedC127DCL01-C. Do not reuse variable names in subscopesFully implementedC129DCL03-C. Use a static assertion to test the value of a constant expressionFully implementedC13DCL03-C. Use a static assertion to test the value of a constant expressionFully implementedC130DCL03-C. Use a static assertion to test the value of a constant expressionFully implementedC132DCL03-C. Use a static assertion to test the value of a constant expressionFully implementedC133DCL03-C. Use a static assertion to test the value of a constant expressionFully implementedC135DCL03-C. Use a static assertion to test the value of a constant expressionFully implementedC14DCL03-C. Use a static assertion to test the value of a constant expressionFully implementedC15DCL03-C. Use a static assertion to test the value of a constant expressionFully implementedC154DCL03-C. Use a static assertion to test the value of a constant expressionFully implementedC155DCL03-C. Use a static assertion to test the value of a constant expressionFully implementedC16DCL13-C. Declare function parameters that are pointers to values not changed by the function as constFully implementedC17FIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning callFIO50-CPP. Do not alternately input and output from a file stream without an intervening positioning callFully implementedC176DCL30-C. Declare objects with appropriate storage durations Fully implementedC177DCL30-C. Declare objects with appropriate storage durations Fully implementedC178DCL30-C. Declare objects with appropriate storage durations Fully implementedC179DCL30-C. Declare objects with appropriate storage durations Fully implementedC18DCL30-C. Declare objects with appropriate storage durations Fully implementedC19DCL31-C. Declare identifiers before using themFully implementedC20DCL39-C. Avoid information leakage when passing a structure across a trust boundaryFully implementedC21DCL39-C. Avoid information leakage when passing a structure across a trust boundaryFully implementedC22DCL39-C. Avoid information leakage when passing a structure across a trust boundaryFully implementedC23DCL39-C. Avoid information leakage when passing a structure across a trust boundaryFully implementedC24ARR36-C. Do not subtract or compare two pointers that do not refer to the same arraySTR52-CPP. Use valid references, pointers, and iterators to reference elements of a basic_stringFully implementedC25DCL39-C. Avoid information leakage when passing a structure across a trust boundaryFully implementedC26DCL40-C. Do not create incompatible declarations of the same function or objectFully implementedC27ENV30-C. Do not modify the object referenced by the return value of certain functionsFully implementedC28ENV30-C. Do not modify the object referenced by the return value of certain functionsFully implementedC29ENV30-C. Do not modify the object referenced by the return value of certain functionsFully implementedC31ERR04-C. Choose an appropriate termination strategyFully implementedC32ERR05-C. Application-independent code should provide error detection without dictating error handlingFully implementedC32ERR05-C. Application-independent code should provide error detection without dictating error handlingFully implementedC33ERR05-C. Application-independent code should provide error detection without dictating error handlingFully implementedC33ERR05-C. Application-independent code should provide error detection without dictating error handlingFully implementedC34ERR32-C. Do not rely on indeterminate values of errnoFully implementedC35ERR51-CPP. Handle all exceptionsFully implementedC36EXP00-C. Use parentheses for precedence of operationFully implementedC37EXP08-C. Ensure pointer arithmetic is used correctlyFully implementedC38EXP09-C. Use sizeof to determine the size of a type or variableFully implementedC39EXP09-C. Use sizeof to determine the size of a type or variableFully implementedC40EXP09-C. Use sizeof to determine the size of a type or variableFully implementedC42EXP09-C. Use sizeof to determine the size of a type or variableFully implementedC44EXP09-C. Use sizeof to determine the size of a type or variableFully implementedC45EXP09-C. Use sizeof to determine the size of a type or variableFully implementedC46EXP09-C. Use sizeof to determine the size of a type or variableFully implementedC46EXP09-C. Use sizeof to determine the size of a type or variableFully implementedC47EXP12-C. Do not ignore values returned by functions Fully implementedC48EXP12-C. Do not ignore values returned by functions Fully implementedC49ARR30-C. Do not form or use out-of-bounds pointers or array subscriptsFully implementedC50EXP14-C. Beware of integer promotion when performing bitwise operations on integer types smaller than intFully implementedC51EXP19-C. Use braces for the body of an if, for, or while statementFully implementedC52DCL03-C. Use a static assertion to test the value of a constant expressionFully implementedC53EXP30-C. Do not depend on the order of evaluation for side effectsEXP50-CPP. Do not depend on the order of evaluation for side effectsFully implementedC54EXP33-C. Do not read uninitialized memoryEXP53-CPP. Do not read uninitialized memoryFully implementedC55EXP33-C. Do not read uninitialized memoryEXP53-CPP. Do not read uninitialized memoryFully implementedC56EXP33-C. Do not read uninitialized memoryEXP53-CPP. Do not read uninitialized memoryFully implementedC57EXP33-C. Do not read uninitialized memoryEXP53-CPP. Do not read uninitialized memoryFully implementedC58EXP33-C. Do not read uninitialized memoryEXP53-CPP. Do not read uninitialized memoryFully implementedC59EXP33-C. Do not read uninitialized memoryEXP53-CPP. Do not read uninitialized memoryFully implementedC60EXP33-C. Do not read uninitialized memoryEXP53-CPP. Do not read uninitialized memoryFully implementedC61EXP33-C. Do not read uninitialized memoryEXP53-CPP. Do not read uninitialized memoryFully implementedC62EXP33-C. Do not read uninitialized memoryEXP53-CPP. Do not read uninitialized memoryFully implementedC63EXP33-C. Do not read uninitialized memoryEXP53-CPP. Do not read uninitialized memoryFully implementedC64EXP34-C. Do not dereference null pointers Fully implementedC64EXP34-C. Do not dereference null pointersFully implementedC65EXP34-C. Do not dereference null pointersFully implementedC65EXP34-C. Do not dereference null pointersFully implementedC66EXP34-C. Do not dereference null pointers Fully implementedC67EXP36-C. Do not cast pointers into more strictly aligned pointer typesFully implementedC68EXP36-C. Do not cast pointers into more strictly aligned pointer typesFully implementedC69EXP36-C. Do not cast pointers into more strictly aligned pointer typesFully implementedC70EXP36-C. Do not cast pointers into more strictly aligned pointer typesFully implementedC71EXP37-C. Call functions with the correct number and type of argumentsFully implementedC73EXP40-C. Do not modify constant objectsFully implementedC73EXP46-C. Do not use a bitwise operator with a Boolean-like operand Fully implementedC74EXP46-C. Do not use a bitwise operator with a Boolean-like operandFully implementedC75EXP47-C. Do not call va_arg with an argument of the incorrect typeFully implementedC76FIO21-C. Do not create temporary files in shared directoriesFully implementedC77FIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning call Fully implementedC78FIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning call Fully implementedC79FIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning callFully implementedC80FIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning call Fully implementedC80FIO42-C. Close files when they are no longer neededFIO51-CPP. Close files when they are no longer neededFully implementedC81FIO47-C. Use valid format strings Fully implementedC82FIO47-C. Use valid format strings Fully implementedC83FIO47-C. Use valid format strings Fully implementedC83FIO47-C. Use valid format strings Fully implementedC84FIO47-C. Use valid format strings Fully implementedC85FIO47-C. Use valid format strings Fully implementedC86FIO47-C. Use valid format strings Fully implementedC86FIO47-C. Use valid format stringsFully implementedC87FLP03-C. Detect and handle floating-point errorsFully implementedc88FLP34-C. Ensure that floating-point conversions are within range of the new type Fully implementedC92FLP34-C. Ensure that floating-point conversions are within range of the new type Fully implementedC999INT01-C. Use size_t or rsize_t for all integer values representing the size of an objectFully implementedCbOBINT02-C. Understand integer conversion rulesFully implementedCconstVariableINT02-C. Understand integer conversion rulesFully implementedCdLTINT02-C. Understand integer conversion rulesFully implementedCdoubleFreeINT02-C. Understand integer conversion rulesFully implementedCduplicateConditionINT02-C. Understand integer conversion rulesFully implementedCE8MSC25-C. Do not use insecure or weak cryptographic algorithmsFully implementedCE11INT02-C. Understand integer conversion rulesFully implementedCE12INT02-C. Understand integer conversion rulesFully implementedCE13INT02-C. Understand integer conversion rulesFully implementedCE256INT02-C. Understand integer conversion rulesFully implementedCE6INT02-C. Understand integer conversion rulesFully implementedCE6_SINT02-C. Understand integer conversion rulesFully implementedCE7INT02-C. Understand integer conversion rulesFully implementedCfCOINT02-C. Understand integer conversion rulesFully implementedCinvalidLifetimeINT02-C. Understand integer conversion rulesFully implementedCinvalidScanfArgType_intINT02-C. Understand integer conversion rulesFully implementedCiRVINT02-C. Understand integer conversion rulesFully implementedCiSFWINT02-C. Understand integer conversion rulesFully implementedCknownConditionTrueFalseINT02-C. Understand integer conversion rulesFully implementedclarifyCalculationINT08-C. Verify that all integer values are in rangeFully implementedClRVNUINT31-C. Ensure that integer conversions do not result in lost or misinterpreted dataFully implementedCmADINT31-C. Ensure that integer conversions do not result in lost or misinterpreted dataFully implementedCmemleakOnReallocINT31-C. Ensure that integer conversions do not result in lost or misinterpreted dataFully implementedCmissingReturnINT31-C. Ensure that integer conversions do not result in lost or misinterpreted dataFully implementedCMRINT31-C. Ensure that integer conversions do not result in lost or misinterpreted dataFully implementedCmVOORINT31-C. Ensure that integer conversions do not result in lost or misinterpreted data Fully implementedCnASINT31-C. Ensure that integer conversions do not result in lost or misinterpreted data Fully implementedCNIINT32-C. Ensure that operations on signed integers do not result in overflowFully implementedCnPDAINT32-C. Ensure that operations on signed integers do not result in overflowFully implementedConfigurationNotCheckedINT32-C. Ensure that operations on signed integers do not result in overflowFully implementedconstParameterINT33-C. Ensure that division and remainder operations do not result in divide-by-zero errorsFully implementedCoOBINT33-C. Ensure that division and remainder operations do not result in divide-by-zero errorsFully implementedCPP_01INT33-C. Ensure that division and remainder operations do not result in divide-by-zero errors Fully implementedCPP_02INT33-C. Ensure that division and remainder operations do not result in divide-by-zero errorsFully implementedCPP_03INT34-C. Do not shift an expression by a negative number of bits or by greater than or equal to the number of bits that exist in the operand Fully implementedCPP_04INT34-C. Do not shift an expression by a negative number of bits or by greater than or equal to the number of bits that exist in the operand Fully implementedCPP_05INT36-C. Converting a pointer to integer or integer to pointerFully implementedCPP_06INT36-C. Converting a pointer to integer or integer to pointerFully implementedCPP_07MEM03-C. Clear sensitive information stored in reusable resourcesFully implementedCPP_08MEM04-C. Beware of zero-length allocationsFully implementedCPP_09MEM04-C. Beware of zero-length allocationsFully implementedCPP_10MEM05-C. Avoid large stack allocationsFully implementedCPP_11MEM10-C. Define and use a pointer validation functionFully implementedCPP_12MEM30-C. Do not access freed memoryMEM50-CPP. Do not access freed memoryFully implementedCPP_14MEM30-C. Do not access freed memoryMEM50-CPP. Do not access freed memoryFully implementedCPP_15MEM30-C. Do not access freed memoryMEM50-CPP. Do not access freed memoryFully implementedCPP_17MEM31-C. Free dynamically allocated memory when no longer needed Fully implementedCPP_18MEM31-C. Free dynamically allocated memory when no longer needed Fully implementedCPP_22MEM31-C. Free dynamically allocated memory when no longer neededFully implementedCPP_23MEM31-C. Free dynamically allocated memory when no longer neededFully implementedCPP_24MEM31-C. Free dynamically allocated memory when no longer needed Fully implementedCPP_25MEM31-C. Free dynamically allocated memory when no longer needed Fully implementedCPP_26MEM31-C. Free dynamically allocated memory when no longer needed Fully implementedCPP_27MEM31-C. Free dynamically allocated memory when no longer needed Fully implementedCPP_28MEM33-C. Allocate and copy structures containing a flexible array member dynamicallyMEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetimeFully implementedCPP_29MEM33-C. Allocate and copy structures containing a flexible array member dynamicallyMEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetimeFully implementedCPP_31MEM34-C. Only free memory allocated dynamically Fully implementedCPP_32MEM34-C. Only free memory allocated dynamicallyFully implementedCPP_33MEM34-C. Only free memory allocated dynamicallyFully implementedCPP_34MEM34-C. Only free memory allocated dynamically Fully implementedCPP_35MEM34-C. Only free memory allocated dynamicallyFully implementedCPP_36MEM34-C. Only free memory allocated dynamicallyFully implementedCPP_39MEM35-C. Allocate sufficient memory for an objectFully implementedCPP_40MEM35-C. Allocate sufficient memory for an objectFully implementedCPP_41MEM35-C. Allocate sufficient memory for an objectFully implementedCPP_42MEM50-CPP. Do not access freed memoryFully implementedCPP_43MEM50-CPP. Do not access freed memoryFully implementedCPP_44MSC01-C. Strive for logical completenessFully implementedCPP_45MSC01-C. Strive for logical completenessFully implementedCPP_46MSC01-C. Strive for logical completenessFully implementedCPP_47MSC01-C. Strive for logical completenessFully implementedCPP_48MEM12-C. Consider using a goto chain when leaving a function on error when using and releasing resourcesFully implementedCPP_55MEM12-C. Consider using a goto chain when leaving a function on error when using and releasing resourcesFully implementedCPP_56MEM12-C. Consider using a goto chain when leaving a function on error when using and releasing resourcesFully implementedCPP_57MSC07-C. Detect and remove dead codeFully implementedCPP_58MSC07-C. Detect and remove dead codeFully implementedCPP_59MSC07-C. Detect and remove dead codeFully implementedCPP_60MSC07-C. Detect and remove dead codeFully implementedCPP_61MSC07-C. Detect and remove dead codeFully implementedCPP_62MSC07-C. Detect and remove dead codeFully implementedCPP_uninitvarMSC07-C. Detect and remove dead codeFully implementedCPPCryptMSC07-C. Detect and remove dead codeFully implementedCPPDSLHardcodedMSC07-C. Detect and remove dead codeFully implementedCPPDSLRANDMSC07-C. Detect and remove dead codeFully implementedCPPDSLWESMSC07-C. Detect and remove dead codeFully implementedCpPEDMSC07-C. Detect and remove dead codeFully implementedCPPEnterCriticalSectionMSC07-C. Detect and remove dead codeFully implementedCPPIsBadWritePtrMSC07-C. Detect and remove dead codeFully implementedCPPLoadLibraryMSC07-C. Detect and remove dead codeFully implementedCPPLoopMSC07-C. Detect and remove dead codeFully implementedCPPOftenMisusedMSC09-C. Character encoding: Use subset of ASCII for safetyFully implementedCPPPBEMSC11-C. Incorporate diagnostic tests using assertionsFully implementedCPPStackBasedMSC11-C. Incorporate diagnostic tests using assertionsFully implementedCPtrMSC12-C. Detect and remove code that has no effect or is never executedFully implementedCredundantInitializationMSC12-C. Detect and remove code that has no effect or is never executedFully implementedCreturnDanglingLifetimeMSC12-C. Detect and remove code that has no effect or is never executedFully implementedCsFPCMSC18-C. Be careful while handling sensitive data, such as passwords, in program codeFully implementedCsTMBMSC18-C. Be careful while handling sensitive data, such as passwords, in program codeFully implementedCstrdupCalledMSC18-C. Be careful while handling sensitive data, such as passwords, in program codeFully implementedctuArrayIndexMSC18-C. Be careful while handling sensitive data, such as passwords, in program codeFully implementedctuNullPointerMSC20-C. Do not use a switch statement to transfer control into a complex blockFully implementedctuOneDefinitionRuleViolationMSC21-C. Use robust loop termination conditionsFully implementedCuEVMSC24-C. Do not use deprecated or obsolescent functionsFully implementedCvariableScopeMSC24-C. Do not use deprecated or obsolescent functionsFully implementedCWE395TEST_2_CPPMSC24-C. Do not use deprecated or obsolescent functionsFully implementedCWE561P25MSC24-C. Do not use deprecated or obsolescent functionsFully implementedCwPSPPEMSC24-C. Do not use deprecated or obsolescent functionsFully implementedCzDCMSC24-C. Do not use deprecated or obsolescent functionsFully implementeddeallocretMSC24-C. Do not use deprecated or obsolescent functionsFully implementedintegerOverflowCondMSC24-C. Do not use deprecated or obsolescent functionsFully implementedinvalidContainerMSC24-C. Do not use deprecated or obsolescent functionsFully implementedinvalidFunctionArgMSC24-C. Do not use deprecated or obsolescent functionsFully implementedleakUnsafeArgAllocMSC24-C. Do not use deprecated or obsolescent functionsFully implementedmemleakMSC24-C. Do not use deprecated or obsolescent functionsFully implementedmemleakOnReallocMSC24-C. Do not use deprecated or obsolescent functionsFully implementednoCopyConstructorMSC24-C. Do not use deprecated or obsolescent functionsFully implementednoOperatorEqMSC24-C. Do not use deprecated or obsolescent functionsFully implementednullPointerRedundantCheckMSC24-C. Do not use deprecated or obsolescent functionsFully implementedoppositeExpressionMSC25-C. Do not use insecure or weak cryptographic algorithmsFully implementedredundantPointerOpMSC25-C. Do not use insecure or weak cryptographic algorithmsFully implementedRTOS_01MSC25-C. Do not use insecure or weak cryptographic algorithmsFully implementedRTOS_02MSC25-C. Do not use insecure or weak cryptographic algorithmsFully implementedRTOS_03MSC25-C. Do not use insecure or weak cryptographic algorithmsFully implementedRTOS_04MSC25-C. Do not use insecure or weak cryptographic algorithmsFully implementedRTOS_05MSC25-C. Do not use insecure or weak cryptographic algorithmsFully implementedRTOS_06MSC25-C. Do not use insecure or weak cryptographic algorithmsFully implementedRTOS_07MSC30-C. Do not use the rand() function for generating pseudorandom numbersMSC50-CPP. Do not use std::rand() for generating pseudorandom numbersFully implementedRTOS_08MSC32-C. Properly seed pseudorandom number generatorsMSC51-CPP. Ensure your random number generator is properly seededFully implementedRTOS_09MSC37-C. Ensure that control never reaches the end of a non-void functionMSC52-CPP. Value-returning functions must return a value from all exit pathsFully implementedRTOS_10MSC37-C. Ensure that control never reaches the end of a non-void functionMSC52-CPP. Value-returning functions must return a value from all exit pathsFully implementedRTOS_11MSC37-C. Ensure that control never reaches the end of a non-void functionMSC52-CPP. Value-returning functions must return a value from all exit pathsFully implementedRTOS_12MSC37-C. Ensure that control never reaches the end of a non-void functionMSC52-CPP. Value-returning functions must return a value from all exit pathsFully implementedRTOS_13MSC39-C. Do not call va_arg() on a va_list that has an indeterminate valueFully implementedRTOS_14MSC41-C. Never hard code sensitive informationFully implementedRTOS_15MSC41-C. Never hard code sensitive informationFully implementedRTOS_16MSC41-C. Never hard code sensitive informationFully implementedRTOS_17MSC41-C. Never hard code sensitive informationFully implementedRTOS_18MSC25-C. Do not use insecure or weak cryptographic algorithmsFully implementedRTOS_19POS01-C. Check for the existence of links when dealing with filesFully implementedRTOS_20POS52-C. Do not perform operations that can block while holding a POSIX lockFully implementedRTOS_22PRE04-C. Do not reuse a standard header file nameFully implementedRTOS_23PRE04-C. Do not reuse a standard header file nameFully implementedRTOS_24PRE04-C. Do not reuse a standard header file nameFully implementedRTOS_25PRE04-C. Do not reuse a standard header file nameFully implementedRTOS_26PRE13-C. Use the Standard predefined macros to test for versions and features.Fully implementedRTOS_27PRE30-C. Do not create a universal character name through concatenation Fully implementedRTOS_28PRE31-C. Avoid side effects in arguments to unsafe macrosFully implementedRTOS_29PRE31-C. Avoid side effects in arguments to unsafe macrosFully implementedRTOS_30PRE31-C. Avoid side effects in arguments to unsafe macrosFully implementedRTOS_31STR05-C. Use pointers to const when referring to string literalsFully implementedRTOS_33STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminatorSTR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminatorFully implementedRTOS_34STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminatorSTR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminatorFully implementedshadowVariableSTR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminatorSTR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminatorFully implementedshiftTooManyBitsSTR32-C. Do not pass a non-null-terminated character sequence to a library function that expects a stringSTR51-CPP. Do not attempt to create a std::string from a null pointerFully implementedUNSAFE_01STR37-C. Arguments to character-handling functions must be representable as an unsigned charFully implementedUNSAFE_02STR38-C. Do not confuse narrow and wide character strings and functionsFully implementedUNSAFE_03STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminatorSTR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminatorFully implementedUNSAFE_04STR31-C. Guarantee that storage for strings has sufficient space for character data and the null terminatorSTR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminatorFully implementedUNSAFE_05WIN02-C. Restrict privileges when spawning child processesFully implementedUNSAFE_06OOP52-CPP. Do not delete a polymorphic object without a virtual destructorFully implementedUNSAFE_07OOP50-CPP. Do not invoke virtual functions from constructors or destructorsFully implementedUNSAFE_08CON53-CPP. Avoid deadlock by locking in a predefined orderFully implementedUNSAFE_09DCL50-CPP. Do not define a C-style variadic functionFully implementedva_end_missingERR59-CPP. Do not throw an exception across execution boundariesFully implementedva_start_subsequentCallsMEM56-CPP. Do not store an already-owned pointer value in an unrelated smart pointerFully implementedwcsdupCalledMEM51-CPP. Properly deallocate dynamically allocated resourcesFully implementedzerodivFully implemented