OSDN Git Service

[Refactor] #38862 Changed header inclusion for uid-checker.h
[hengband/hengband.git] / src / io / uid-checker.c
1 #include "io/uid-checker.h"
2 #ifdef SET_UID
3 # ifdef SAFE_SETUID
4 #  ifdef SAFE_SETUID_POSIX
5 #   include "util.h"
6 #  endif
7 #  endif
8 #endif
9
10 /*!
11  * @brief ファイルのドロップパーミッションチェック / Hack -- drop permissions
12  */
13 void safe_setuid_drop(void)
14 {
15 #ifdef SET_UID
16 # ifdef SAFE_SETUID
17 #  ifdef SAFE_SETUID_POSIX
18
19         if (setuid(getuid()) != 0)
20         {
21                 quit(_("setuid(): 正しく許可が取れません!", "setuid(): cannot set permissions correctly!"));
22         }
23         if (setgid(getgid()) != 0)
24         {
25                 quit(_("setgid(): 正しく許可が取れません!", "setgid(): cannot set permissions correctly!"));
26         }
27 #   else
28         if (setreuid(geteuid(), getuid()) != 0)
29         {
30                 quit(_("setreuid(): 正しく許可が取れません!", "setreuid(): cannot set permissions correctly!"));
31         }
32         if (setregid(getegid(), getgid()) != 0)
33         {
34                 quit(_("setregid(): 正しく許可が取れません!", "setregid(): cannot set permissions correctly!"));
35         }
36 #  endif
37 # endif
38 #endif
39 }
40
41
42 /*!
43  * @brief ファイルのグラブパーミッションチェック / Hack -- grab permissions
44  */
45 void safe_setuid_grab(void)
46 {
47 #ifdef SET_UID
48 # ifdef SAFE_SETUID
49 #  ifdef SAFE_SETUID_POSIX
50
51         if (setuid(p_ptr->player_egid) != 0)
52         {
53                 quit(_("setuid(): 正しく許可が取れません!", "setuid(): cannot set permissions correctly!"));
54         }
55         if (setgid(p_ptr->player_egid) != 0)
56         {
57                 quit(_("setgid(): 正しく許可が取れません!", "setgid(): cannot set permissions correctly!"));
58         }
59 #  else
60         if (setreuid(geteuid(), getuid()) != 0)
61         {
62                 quit(_("setreuid(): 正しく許可が取れません!", "setreuid(): cannot set permissions correctly!"));
63         }
64         if (setregid(getegid(), getgid()) != 0)
65         {
66                 quit(_("setregid(): 正しく許可が取れません!", "setregid(): cannot set permissions correctly!"));
67         }
68 #  endif
69 # endif
70 #endif
71 }