C and C++ Binaries


MISC.PATHLENGTH : MAX_PATH Exceeded

Summary

A path manipulation function is passed an input parameter whose size exceeds the MAX_PATH upper bound specified for that parameter by the Windows API.

Properties

Class Name MAX_PATH Exceeded
Significance security
Mnemonic MISC.PATHLENGTH
Categories
MisraC2023 MisraC2023:D.4.11 The validity of values passed to library functions shall be checked
Misra2012 Misra2012:D.4.11 The validity of values passed to library functions shall be checked
Misra2004 Misra2004:20.3 The validity of values passed to library functions shall be checked
CWE CWE:687 Function Call With Incorrectly Specified Argument Value
Availability Available for C and C++.
Enabling Checks for this warning class are enabled by default. To disable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += discard class="MAX_PATH Exceeded"

Example

#include <shlwapi.h>
#include <string.h>

void f()
{
    char buf[1024], buf2[1024];
    memset( buf, 'a', 512 );
    memset( buf2, 'a', 512 );
    buf[512] = 0;
    buf2[512] = 0;
    PathAppendA( buf, buf2 );
}

Triggering Functions

CodeSonar ships with library models that allow it to recognize functions such as Win32 PathMakeUniqueName() that take one or more arguments whose length should not exceed MAX_PATH. If one of these functions is called with a path argument longer than MAX_PATH, a warning will be issued.

If you have created a custom library model for some function f() in terms of one of these existing models, calls to f() will also be capable of triggering MAX_PATH Exceeded warnings.

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.