From d3231b8a1534c27410bd6bd69e0dabaa3b3997ab Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Thu, 23 May 2013 17:51:06 +0300 Subject: [PATCH] user_data: introduce is_capped_user_data() I use this to check for integer underflows. is_user_data() returns false if the data has been capped. Signed-off-by: Dan Carpenter --- check_user_data.c | 12 ++++++++++++ smatch.h | 1 + 2 files changed, 13 insertions(+) diff --git a/check_user_data.c b/check_user_data.c index b9ea469d..6fa89c63 100644 --- a/check_user_data.c +++ b/check_user_data.c @@ -190,6 +190,18 @@ free: return user; } +int is_capped_user_data(struct expression *expr) +{ + struct sm_state *sm; + + sm = get_sm_state_expr(my_id, expr); + if (!sm) + return 0; + if (slist_has_state(sm->possible, &capped)) + return 1; + return 0; +} + void set_param_user_data(const char *name, struct symbol *sym, char *key, char *value) { char fullname[256]; diff --git a/smatch.h b/smatch.h index 24e6c3b9..a175c64f 100644 --- a/smatch.h +++ b/smatch.h @@ -587,6 +587,7 @@ int is_capped(struct expression *expr); /* check_user_data.c */ int is_user_data(struct expression *expr); +int is_capped_user_data(struct expression *expr); /* check_locking.c */ void print_held_locks(); -- 2.11.4.GIT