summaryrefslogtreecommitdiff
path: root/src/pal/tests/palsuite/miscellaneous/IsBadWritePtr/test1/test.c
blob: 018d7beae0f2241a113a45d301006025aebca495 (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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

/*============================================================
**
** Source: test.c
**
** Purpose: IsBadWritePtr() function
**
**
**=========================================================*/

#include <palsuite.h>

#define MEMORY_AMOUNT 16

int __cdecl main(int argc, char *argv[]) {
    
    void * TestingPointer = NULL;
    BOOL ResultValue = 0;

    /*
     * Initialize the PAL and return FAILURE if this fails
     */

    if(0 != (PAL_Initialize(argc, argv)))
    {
        return FAIL;
    }
  
    TestingPointer = malloc(MEMORY_AMOUNT);
    if ( TestingPointer == NULL )
    {
	Fail("ERROR: Failed to allocate memory for TestingPointer pointer. "
             "Can't properly exec test case without this.\n");
    }


    /* This should be writeable, return 0 */
    ResultValue = IsBadWritePtr(TestingPointer,MEMORY_AMOUNT);

    if(ResultValue != 0) 
    {
	free(TestingPointer);

        Fail("ERROR: Returned %d when 0 should have been returned, checking "
             "to see if writable memory is unwriteable.\n",ResultValue);
    }

    free(TestingPointer);
  
    /* This should be !writeable, return nonezero */
    TestingPointer = (void*)0x08; /* non writeable address */
    ResultValue = IsBadWritePtr(TestingPointer,sizeof(int));
    
    if(ResultValue == 0) 
    {
        Fail("ERROR: Returned %d when nonezero should have been returned, "
             "checking to see if unwriteable memory  is writeable.\n",
             ResultValue);
    }
  
    /* This should be !writeable, return Nonezero */
    ResultValue = IsBadWritePtr(NULL,MEMORY_AMOUNT);

    if(ResultValue == 0) 
    {
        Fail("ERROR: Returned %d when nonezero should have been "
	     "returned,checking "
             "to see if a NULL pointer is writeable.\n",
             ResultValue);
    }
    
    PAL_Terminate();
    return PASS;
}