aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/analyzer/fread-pr108661.c
blob: b51cf41ec2ae7db5de1d0e351964e4bf00c76ec0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
typedef __SIZE_TYPE__ size_t;

extern size_t fread (void *, size_t, size_t, void *);

struct ring
{
  char buf[1024];
};

int
test_one_large_item (void *fp)
{
  struct ring ring;
  int ret;

  ret = fread(&ring, sizeof(ring), 1, fp);

  if (ret != 1)
    return 1;

  if (ring.buf[0] > 1) /* { dg-bogus "use of uninitialized value" } */
    return 2;
  return 3;
}

int
test_many_small_items (void *fp)
{
  struct ring ring;
  int ret;

  ret = fread(&ring, 1, sizeof(ring), fp);

  if (ret != sizeof(ring))
    return 1;

  if (ring.buf[0] > 1) /* { dg-bogus "use of uninitialized value" } */
    return 2;
  return 3;
}