C and C++ Binaries


MISC.MEM.OR : オーバラップするメモリ領域

要旨

オーバラップされたメモリ領域に対応していない関数にオーバーラップ領域が渡されています。

プロパティ

クラス名 Overlapping Memory Regions
日本語クラス名 オーバラップするメモリ領域
クラス分類 セキュリティ (security)
ニーモニック MISC.MEM.OR
カテゴリー
MisraC2023 MisraC2023:19.1 An object shall not be assigned or copied to an overlapping object
Misra2012 Misra2012:19.1 An object shall not be assigned or copied to an overlapping object
Misra2004 Misra2004:18.2 An object shall not be assigned to an overlapping object
AUTOSARC++14 AUTOSARC++14:M0-2-1 An object shall not be assigned to an overlapping object.
MisraC++2008 MisraC++2008:0-2-1 An object shall not be assigned to an overlapping object.
MisraC++2023 MisraC++2023:8.18.1 An object or sub-object must not be copied to an overlapping object
CWE CWE:475 Undefined Behavior for Input to API
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで有効になっています。チェックを無効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += discard class="Overlapping Memory Regions"

#include <stdlib.h>

void f(char *p)
{
    memcpy(p, p, 10); // Warning issued here
}

ワーニングを引き起こす関数

CodeSonar ships with library models that allow it to a large number of functions that take multiple memory region arguments that should not overlap. If one of these functions is called with overlapping memory region arguments, 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 Overlapping Memory Regions warnings.

Functions that can trigger warnings include...
Apache Portable Runtime (APR) apr_cpystrn()
gcc Builtins __builtin___memcpy_chk(), __builtin___strcat_chk()
libc memcpy(), strcat()
Linux Kernel copy_from_user()
Mac OS X copyin()copyin()
ODBC SQLNativeSqlA(), SQLNativeSqlUNIX(), SQLNativeSqlW()
OpenSSL RYPTO_strdup()
Qt qMemCopy()
Win32 StrCatA(), StrCatW(), wcsncpy()

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。