summaryrefslogtreecommitdiffstats
path: root/maildrop/main.C
diff options
context:
space:
mode:
authorSam Varshavchik2013-11-24 21:12:06 -0500
committerSam Varshavchik2013-11-24 21:12:06 -0500
commit39ce29711f39afa228868f9b9cf2cc851fe6d3d7 (patch)
tree6020aca2c90683bb5023a69a8e963caa47d3d730 /maildrop/main.C
parent4d91075b1b90f68527304b45bb26637a17e1454d (diff)
downloadcourier-libs-39ce29711f39afa228868f9b9cf2cc851fe6d3d7.tar.bz2
Fix compiler warning, unchecked return values.
Diffstat (limited to 'maildrop/main.C')
-rw-r--r--maildrop/main.C42
1 files changed, 31 insertions, 11 deletions
diff --git a/maildrop/main.C b/maildrop/main.C
index d144263..2311aab 100644
--- a/maildrop/main.C
+++ b/maildrop/main.C
@@ -259,7 +259,11 @@ static int callback_authlib(struct authinfo *auth,
<< b << "\n";
}
- setgroupid(auth->sysgroupid);
+ if (setgroupid(auth->sysgroupid) < 0)
+ {
+ perror("setgid");
+ exit(1);
+ }
uid_t u;
if (auth->sysusername)
@@ -291,9 +295,8 @@ static int callback_authlib(struct authinfo *auth,
<< b << "\n";
}
- setuid(u);
-
- if ( getuid() != u)
+ if (setuid(u) < 0 ||
+ getuid() != u)
nochangeuidgid();
if (VerboseLevel() > 1)
@@ -479,12 +482,17 @@ const char *numuidgid=0;
my_pw=getpwnam(deliverymode);
if (!my_pw)
nouser();
+ if (
#if RESET_GID
- setgroupid(my_pw->pw_gid);
+ setgroupid(my_pw->pw_gid) < 0
#else
- setgroupid(getegid());
+ setgroupid(getegid()) < 0
#endif
- setuid(my_pw->pw_uid);
+ ||
+ setuid(my_pw->pw_uid) < 0)
+ {
+ nochangeuidgid();
+ }
if (getuid() != my_pw->pw_uid)
nochangeuidgid(); // Security violation.
@@ -560,8 +568,12 @@ const char *numuidgid=0;
throw "Invalid -D option.";
}
}
- setgroupid(gn);
- setuid(un);
+ if (setgroupid(gn) < 0 ||
+ setuid(un) < 0)
+ {
+ perror("setuid/setgid");
+ exit(1);
+ }
deliverymode="";
orig_uid=un; /* See below for another Courier hook */
}
@@ -570,12 +582,20 @@ const char *numuidgid=0;
#if RESET_GID
- setgroupid(getgid());
+ if (setgroupid(getgid()) < 0)
+ {
+ perror("setgid");
+ exit(1);
+ }
#endif
uid_t my_u=getuid();
- setuid(my_u); // Drop any setuid privileges.
+ if (setuid(my_u) < 0) // Drop any setuid privileges.
+ {
+ perror("setuid");
+ exit(1);
+ }
if (!found)
{