summaryrefslogtreecommitdiff
path: root/support/regression/tests/bug-2793.c
blob: c171a520e8330503c1844c1fe661bf3f09459889 (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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/* bug-2793.c
   A parameter changed from unsigned int to unsigned long in CSE.
 */

#include <testfwk.h>

typedef unsigned int	UINT;
typedef unsigned char	BYTE;
typedef unsigned short	WORD;
typedef unsigned long	DWORD;

BYTE global_buf[10];

static void mem_set (void* dst, int val, UINT cnt)
{
	ASSERT (dst == global_buf);
	ASSERT (val == 0);
	ASSERT (cnt == 1);
}

void f_mkfs (
	void* work,
	UINT len
)
{
	const UINT n_fats = 1;

	BYTE *buf;
	WORD ss = 1;
	DWORD szb_buf, sz_buf, sect, nsect, n;
	DWORD b_fat;
	DWORD sz_fat;
	UINT i;

	b_fat = 1;
	sz_fat = 0;

	{
		buf = (BYTE*)work;
		sz_buf = len / ss;
		szb_buf = sz_buf * ss;
	}

	{
		mem_set(buf, 0, (UINT)szb_buf);
		sect = b_fat;
		for (i = 0; i < n_fats; i++) {
			nsect = sz_fat;
			do {
				n = (nsect > sz_buf) ? sz_buf : nsect;	
				mem_set(buf, 0, ss);
				sect += n; nsect -= n;
			} while (nsect);
		}
	}
}

void testBug(void)
{
	f_mkfs (global_buf, 1);
}