OSDN Git Service

[Refactor] #1974 Included error code into the error message of setuid(), setgid(...
authorHourier <66951241+Hourier@users.noreply.github.com>
Mon, 10 Jan 2022 08:33:39 +0000 (17:33 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sun, 30 Jan 2022 01:27:36 +0000 (10:27 +0900)
src/io/uid-checker.cpp

index fc51cce..e28ce3a 100644 (file)
@@ -2,53 +2,62 @@
 #include "system/player-type-definition.h"
 
 /*!
- * @brief ファイルのドロップパーミッションチェック / Hack -- drop permissions
+ * @brief ファイルのドロップパーミッションチェック / Check drop permissions
  */
 void safe_setuid_drop(void)
 {
-#ifdef SET_UID && SAFE_SETUID
+#if defined(SET_UID) && defined(SAFE_SETUID)
 #ifdef SAFE_SETUID_POSIX
-    if (setuid(getuid()) != 0) {
-        quit(_("setuid(): 正しく許可が取れません!", "setuid(): cannot set permissions correctly!"));
+    if (auto ret = setuid(getuid()); ret != 0) {
+        auto msg = _("setuid(): 正しく許可が取れません! エラーコード:%d", "setuid(): cannot set permissions correctly! Error code: %d");
+        quit(format(msg, ret));
     }
 
-    if (setgid(getgid()) != 0) {
-        quit(_("setgid(): 正しく許可が取れません!", "setgid(): cannot set permissions correctly!"));
+    if (auto ret = setgid(getgid()); ret != 0) {
+        auto msg = _("setgid(): 正しく許可が取れません! エラーコード:%d", "setgid(): cannot set permissions correctly! Error code: %d");
+        quit(format(msg, ret));
     }
 #else
-    if (setreuid(geteuid(), getuid()) != 0) {
-        quit(_("setreuid(): 正しく許可が取れません!", "setreuid(): cannot set permissions correctly!"));
+    if (auto ret = setreuid(geteuid(), getuid()); ret != 0) {
+        auto msg = _("setreuid(): 正しく許可が取れません! エラーコード:%d", "setreuid(): cannot set permissions correctly! Error code: %d");
+        quit(format(msg, ret));
     }
 
-    if (setregid(getegid(), getgid()) != 0) {
-        quit(_("setregid(): 正しく許可が取れません!", "setregid(): cannot set permissions correctly!"));
+    if (auto ret = setregid(getegid(), getgid()); ret != 0) {
+        auto msg = _("setregid(): 正しく許可が取れません! エラーコード:%d", "setregid(): cannot set permissions correctly! Error code: %d");
+        quit(format(msg, ret));
     }
 #endif
 #endif
 }
 
 /*!
- * @brief ファイルのグラブパーミッションチェック / Hack -- grab permissions
+ * @brief ファイルのグラブパーミッションチェック / Check grab permissions
+ * @param プレイヤーへの参照ポインタ
  */
 void safe_setuid_grab(PlayerType *player_ptr)
 {
-#ifdef SET_UID && SAFE_SETUID
+#if defined(SET_UID) && defined(SAFE_SETUID)
 #ifdef SAFE_SETUID_POSIX
-    if (setuid(player_ptr->player_euid) != 0) {
-        quit(_("setuid(): 正しく許可が取れません!", "setuid(): cannot set permissions correctly!"));
+    if (auto ret = setuid(player_ptr->player_euid); ret != 0) {
+        auto msg = _("setuid(): 正しく許可が取れません! エラーコード:%d", "setuid(): cannot set permissions correctly! Error code: %d");
+        quit(format(msg, ret));
     }
 
-    if (setgid(player_ptr->player_egid) != 0) {
-        quit(_("setgid(): 正しく許可が取れません!", "setgid(): cannot set permissions correctly!"));
+    if (auto ret = setgid(player_ptr->player_egid); ret != 0) {
+        auto msg = _("setgid(): 正しく許可が取れません! エラーコード:%d", "setgid(): cannot set permissions correctly! Error code: %d");
+        quit(format(msg, ret));
     }
 #else
     (void)player_ptr;
-    if (setreuid(geteuid(), getuid()) != 0) {
-        quit(_("setreuid(): 正しく許可が取れません!", "setreuid(): cannot set permissions correctly!"));
+    if (auto ret = setreuid(geteuid(), getuid()); ret != 0) {
+        auto msg = _("setreuid(): 正しく許可が取れません! エラーコード:%d", "setreuid(): cannot set permissions correctly! Error code: %d");
+        quit(format(msg, ret));
     }
 
-    if (setregid(getegid(), getgid()) != 0) {
-        quit(_("setregid(): 正しく許可が取れません!", "setregid(): cannot set permissions correctly!"));
+    if (auto ret = setregid(getegid(), getgid()); ret != 0) {
+        auto msg = _("setregid(): 正しく許可が取れません! エラーコード:%d", "setregid(): cannot set permissions correctly! Error code: %d");
+        quit(format(msg, ret));
     }
 #endif
 #else