Make it possible to suppress, and auto-generate suppressions for,
"User" errors; that is, errors resulting from client requests (check
memory range is addressible / defined).
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6374 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/memcheck/mc_main.c b/memcheck/mc_main.c
index fb6706c..f9ccd03 100644
--- a/memcheck/mc_main.c
+++ b/memcheck/mc_main.c
@@ -2648,6 +2648,7 @@
typedef
enum {
ParamSupp, // Bad syscall params
+ UserSupp, // Errors arising from client-request checks
CoreMemSupp, // Memory errors in core (pthread ops, signal handling)
// Use of invalid values of given size (MemCheck only)
@@ -3357,6 +3358,7 @@
SuppKind skind;
if (VG_STREQ(name, "Param")) skind = ParamSupp;
+ else if (VG_STREQ(name, "User")) skind = UserSupp;
else if (VG_STREQ(name, "CoreMem")) skind = CoreMemSupp;
else if (VG_STREQ(name, "Addr1")) skind = Addr1Supp;
else if (VG_STREQ(name, "Addr2")) skind = Addr2Supp;
@@ -3406,6 +3408,9 @@
&& VG_STREQ(VG_(get_error_string)(err),
VG_(get_supp_string)(su)));
+ case UserSupp:
+ return (ekind == UserErr);
+
case CoreMemSupp:
return (ekind == CoreMemErr
&& VG_STREQ(VG_(get_error_string)(err),
@@ -3454,7 +3459,7 @@
Char* s;
switch (VG_(get_error_kind)(err)) {
case ParamErr: return "Param";
- case UserErr: return NULL; /* Can't suppress User errors */
+ case UserErr: return "User";
case FreeMismatchErr: return "Free";
case IllegalMempoolErr: return "Mempool";
case FreeErr: return "Free";