Print this page
12724 update smatch to 0.6.1-rc1-il-5


 139         mtag_t arg_tag;
 140         mtag_t alias;
 141         int arg_offset;
 142 
 143         arg = get_argument_from_call_expr(expr->args, param);
 144         if (!arg)
 145                 return;
 146 
 147         gen_expr = gen_expression_from_key(arg, key);
 148         if (!gen_expr)
 149                 return;
 150 
 151         get_absolute_rl(gen_expr, &rl);
 152 
 153         if (!create_mtag_alias(tag, expr, &alias))
 154                 return;
 155 
 156 //      insert_mtag_data(alias, offset, rl);
 157 
 158         // FIXME:  is arg_offset handled correctly?
 159         if (expr_to_mtag_offset(gen_expr, &arg_tag, &arg_offset) && arg_offset == 0)
 160                 sql_insert_mtag_map(arg_tag, -offset, alias);

 161 }
 162 
 163 static void call_does_mtag_assign(struct expression *expr, int param, char *key, char *value)
 164 {
 165         char *p;
 166         mtag_t tag;
 167         int offset;
 168 
 169         while (expr->type == EXPR_ASSIGNMENT)
 170                 expr = strip_expr(expr->right);
 171         if (expr->type != EXPR_CALL)
 172                 return;
 173 
 174         tag = strtoul(value, NULL, 10);
 175         p = strchr(value, '+');
 176         if (!p)
 177                 return;
 178         offset = atoi(p + 1);
 179 
 180 //      save_mtag_to_map(expr, tag, offset, param, key, value);




 139         mtag_t arg_tag;
 140         mtag_t alias;
 141         int arg_offset;
 142 
 143         arg = get_argument_from_call_expr(expr->args, param);
 144         if (!arg)
 145                 return;
 146 
 147         gen_expr = gen_expression_from_key(arg, key);
 148         if (!gen_expr)
 149                 return;
 150 
 151         get_absolute_rl(gen_expr, &rl);
 152 
 153         if (!create_mtag_alias(tag, expr, &alias))
 154                 return;
 155 
 156 //      insert_mtag_data(alias, offset, rl);
 157 
 158         // FIXME:  is arg_offset handled correctly?
 159         if (expr_to_mtag_offset(gen_expr, &arg_tag, &arg_offset) &&
 160             arg_offset < MTAG_OFFSET_MASK)
 161                 sql_insert_mtag_map(alias, offset, arg_tag, arg_offset);
 162 }
 163 
 164 static void call_does_mtag_assign(struct expression *expr, int param, char *key, char *value)
 165 {
 166         char *p;
 167         mtag_t tag;
 168         int offset;
 169 
 170         while (expr->type == EXPR_ASSIGNMENT)
 171                 expr = strip_expr(expr->right);
 172         if (expr->type != EXPR_CALL)
 173                 return;
 174 
 175         tag = strtoul(value, NULL, 10);
 176         p = strchr(value, '+');
 177         if (!p)
 178                 return;
 179         offset = atoi(p + 1);
 180 
 181 //      save_mtag_to_map(expr, tag, offset, param, key, value);