1 /* Reduced from false positive in Linux kernel in
2 drivers/scsi/aacraid/aachba.c. */
4 /* { dg-do compile } */
5 /* { dg-options "-fanalyzer" } */
6 /* { dg-require-effective-target analyzer } */
8 typedef unsigned char u8
;
9 typedef unsigned int u32
;
12 copy_from_user(void* to
, const void* from
, unsigned long n
);
21 int maximum_num_containers
;
22 struct fsa_dev_info
* fsa_dev
;
24 struct aac_delete_disk
30 force_delete_disk(struct aac_dev
* dev
, void* arg
)
32 struct aac_delete_disk dd
;
33 struct fsa_dev_info
* fsa_dev_ptr
;
34 fsa_dev_ptr
= dev
->fsa_dev
;
37 if (copy_from_user(&dd
, arg
, sizeof(struct aac_delete_disk
)))
39 if (dd
.cnum
>= dev
->maximum_num_containers
)
41 fsa_dev_ptr
[dd
.cnum
].deleted
= 1;
42 fsa_dev_ptr
[dd
.cnum
].valid
= 0; /* { dg-bogus "use of attacker-controlled value as offset without upper-bounds checking" } */