aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLAN-TW <lantw44@gmail.com>2012-10-11 01:29:19 +0800
committerLAN-TW <lantw44@gmail.com>2012-10-11 01:29:19 +0800
commit1a686de4cb7406a66cea06aa736f0aefa39a5fc6 (patch)
tree38a66c9537ee2d77a24a3b9d4dca282349e5f7d0
parentaa1a59d06b9f77cd542d413a978b137f5f59331f (diff)
downloadsctjudge-1a686de4cb7406a66cea06aa736f0aefa39a5fc6.tar.gz
sctjudge-1a686de4cb7406a66cea06aa736f0aefa39a5fc6.tar.zst
sctjudge-1a686de4cb7406a66cea06aa736f0aefa39a5fc6.zip
修改檢查 UID/GID 是否合理的部分 - 第二次修改
預設將不允許 root 在無變更 UID 的狀況下執行。(-f 仍可強制執行)
-rw-r--r--src/main.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/main.c b/src/main.c
index feea840..3ecfbc3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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 了!*/