1/*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * SPDX-License-Identifier: GPL-2.0
4 *
5 * Unless required by applicable law or agreed to in writing, software
6 * distributed under the License is distributed on an "AS IS" BASIS,
7 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8 * See the License for the specific language governing permissions and
9 * limitations under the License.
10 */
11
12#ifndef ACCESSTOKENIDCOMMON_H
13#define ACCESSTOKENIDCOMMON_H
14#include <cstddef>
15#include <cstdint>
16
17#define FUZZ_PROJECT_NAME "accesstokenidcommon"
18
19namespace OHOS {
20namespace Kernel {
21namespace AccessToken {
22#define ACCESS_TOKEN_ID_IOCTL_BASE    'A'
23
24#ifdef CMDERROR
25#define GET_TOKEN_ID    0
26#define SET_TOKEN_ID    0
27#define GET_GTOKEN_ID   0
28#define SET_GTOKEN_ID   0
29#else
30#define GET_TOKEN_ID    1
31#define SET_TOKEN_ID    2
32#define GET_GTOKEN_ID   3
33#define SET_GTOKEN_ID   4
34#endif
35
36#define ACCESS_TOKENID_GET_TOKENID \
37        _IOR(ACCESS_TOKEN_ID_IOCTL_BASE, GET_TOKEN_ID, unsigned long long)
38#define ACCESS_TOKENID_SET_TOKENID \
39        _IOW(ACCESS_TOKEN_ID_IOCTL_BASE, SET_TOKEN_ID, unsigned long long)
40#define ACCESS_TOKENID_GET_FTOKENID \
41        _IOR(ACCESS_TOKEN_ID_IOCTL_BASE, GET_GTOKEN_ID, unsigned long long)
42#define ACCESS_TOKENID_SET_FTOKENID \
43        _IOW(ACCESS_TOKEN_ID_IOCTL_BASE, SET_GTOKEN_ID, unsigned long long)
44
45#define LIST_NUM_1    1
46#define LIST_NUM_2    2
47#define TEST_VALUE    123
48#define CHILDREN_NUM    3
49#define WAIT_FOR_SHELL_OP_TIME    1
50#define FATHER_WAIT_TIME    (WAIT_FOR_SHELL_OP_TIME * (CHILDREN_NUM + 1))
51
52#define ACCESS_TOKEN_UID    3020
53#define ACCESS_TOKEN_GRPID  3020
54
55#define ACCESS_TOKEN_OTHER_UID      1234
56#define ACCESS_TOKEN_OTHER_GRPID    1234
57
58#define INVAL_TOKEN    0xffffffffffffffff
59
60int GetTokenid(unsigned long long *token);
61int SetTokenid(unsigned long long *token);
62int GetfTokenid(unsigned long long *ftoken);
63int SetfTokenid(unsigned long long *ftoken);
64
65void SetUidAndGrp();
66void SetUidAndGrpOther();
67void GetCurToken(unsigned long long *token);
68void SetRandTokenAndCheck(const unsigned long long *dataToken);
69void TokenTest(unsigned long long *dataToken);
70void ThreadTest(unsigned long long *dataToken);
71int AccessTokenidThreadTest(uint8_t *dataToken);
72int AccessTokenidGrpTest(uint8_t *dataToken);
73int AccessTokenidGrpTestOther(uint8_t *dataToken);
74
75void GetCurfToken(unsigned long long *ftoken);
76void SetRandfTokenAndCheck(const unsigned long long *dataFtoken);
77void FTokenTest(unsigned long long *dataFtoken);
78void ThreadTest(unsigned long long *dataFtoken);
79int AccessfTokenidThreadTest(uint8_t *dataFtoken);
80int AccessfTokenidGrpTest(uint8_t *dataFtoken);
81int AccessfTokenidGrpTestOther(uint8_t *dataFtoken);
82bool SetfTokenidCmdFuzzTest(const uint8_t *data, size_t size);
83bool GetfTokenidCmdFuzzTest(const uint8_t *data, size_t size);
84bool SetTokenidCmdFuzzTest(const uint8_t *data, size_t size);
85bool GetTokenidCmdFuzzTest(const uint8_t *data, size_t size);
86} // namespace AccessToken
87} // namespace Kernel
88} // namespace OHOS
89
90#endif // ACCESSTOKENIDCOMMON_H
91