1 #include "io/uid-checker.h"
2 #include "system/angband.h"
3 #if defined(SET_UID) && defined(SAFE_SETUID) && defined(SAFE_SETUID_POSIX)
4 #include "main-unix/unix-user-ids.h"
8 * @brief ファイルのドロップパーミッションチェック / Check drop permissions
10 void safe_setuid_drop()
12 #if defined(SET_UID) && defined(SAFE_SETUID)
13 #ifdef SAFE_SETUID_POSIX
14 if (auto ret = setuid(getuid()); ret != 0) {
15 auto msg = _("setuid(): 正しく許可が取れません! エラーコード:%d", "setuid(): cannot set permissions correctly! Error code: %d");
19 if (auto ret = setgid(getgid()); ret != 0) {
20 auto msg = _("setgid(): 正しく許可が取れません! エラーコード:%d", "setgid(): cannot set permissions correctly! Error code: %d");
24 if (auto ret = setreuid(geteuid(), getuid()); ret != 0) {
25 auto msg = _("setreuid(): 正しく許可が取れません! エラーコード:%d", "setreuid(): cannot set permissions correctly! Error code: %d");
29 if (auto ret = setregid(getegid(), getgid()); ret != 0) {
30 auto msg = _("setregid(): 正しく許可が取れません! エラーコード:%d", "setregid(): cannot set permissions correctly! Error code: %d");
38 * @brief ファイルのグラブパーミッションチェック / Check grab permissions
40 void safe_setuid_grab()
42 #if defined(SET_UID) && defined(SAFE_SETUID)
43 #ifdef SAFE_SETUID_POSIX
44 auto &ids = UnixUserIds::get_instance();
45 if (auto ret = setuid(ids.get_effective_user_id()); ret != 0) {
46 auto msg = _("setuid(): 正しく許可が取れません! エラーコード:%d", "setuid(): cannot set permissions correctly! Error code: %d");
50 if (auto ret = setgid(ids.get_effective_group_id()); ret != 0) {
51 auto msg = _("setgid(): 正しく許可が取れません! エラーコード:%d", "setgid(): cannot set permissions correctly! Error code: %d");
55 if (auto ret = setreuid(geteuid(), getuid()); ret != 0) {
56 auto msg = _("setreuid(): 正しく許可が取れません! エラーコード:%d", "setreuid(): cannot set permissions correctly! Error code: %d");
60 if (auto ret = setregid(getegid(), getgid()); ret != 0) {
61 auto msg = _("setregid(): 正しく許可が取れません! エラーコード:%d", "setregid(): cannot set permissions correctly! Error code: %d");