diff options
author | LAN-TW <lantw44@gmail.com> | 2012-10-11 01:29:19 +0800 |
---|---|---|
committer | LAN-TW <lantw44@gmail.com> | 2012-10-11 01:29:19 +0800 |
commit | 1a686de4cb7406a66cea06aa736f0aefa39a5fc6 (patch) | |
tree | 38a66c9537ee2d77a24a3b9d4dca282349e5f7d0 | |
parent | aa1a59d06b9f77cd542d413a978b137f5f59331f (diff) | |
download | sctjudge-1a686de4cb7406a66cea06aa736f0aefa39a5fc6.tar.gz sctjudge-1a686de4cb7406a66cea06aa736f0aefa39a5fc6.tar.zst sctjudge-1a686de4cb7406a66cea06aa736f0aefa39a5fc6.zip |
修改檢查 UID/GID 是否合理的部分 - 第二次修改
預設將不允許 root 在無變更 UID 的狀況下執行。(-f 仍可強制執行)
-rw-r--r-- | src/main.c | 23 |
1 files changed, 16 insertions, 7 deletions
@@ -326,16 +326,25 @@ int main(int argc, char* argv[]){ fputs("執行時間限制為必要參數,不可為空白!\n", stderr); exit(SCTEXIT_TOOFEW); } - if((mcopt.flags & SCTMC_SETUID) && (mcopt.uid == 0)){ - if(!force){ - fputs("將 UID 設為 0 並不安全!(加上 -f 來強制執行)\n", stderr); - exit(SCTEXIT_BADID); - }else{ - if(getuid() != 0){ - fputs("只有 root 可以將 UID 設定 0\n", stderr); + if((mcopt.flags & SCTMC_SETUID)){ + if(mcopt.uid == 0){ + if(!force){ + fputs("將 UID 設為 0 並不安全!(加上 -f 來強制執行)\n", + stderr); exit(SCTEXIT_BADID); + }else{ + if(getuid() != 0){ + fputs("只有 root 可以將 UID 設定 0\n", stderr); + exit(SCTEXIT_BADID); + } } } + }else{ + if(getuid() == 0 && !force){ + fputs("不允許以 root 身份執行本程式(加上 -f 來強制執行)\n", + stderr); + exit(SCTEXIT_BADID); + } } /* 現在開始建立 thread 了!*/ |