diff options
| author | Sam Varshavchik | 2013-11-24 21:12:06 -0500 | 
|---|---|---|
| committer | Sam Varshavchik | 2013-11-24 21:12:06 -0500 | 
| commit | 39ce29711f39afa228868f9b9cf2cc851fe6d3d7 (patch) | |
| tree | 6020aca2c90683bb5023a69a8e963caa47d3d730 /maildrop/main.C | |
| parent | 4d91075b1b90f68527304b45bb26637a17e1454d (diff) | |
| download | courier-libs-39ce29711f39afa228868f9b9cf2cc851fe6d3d7.tar.bz2 | |
Fix compiler warning, unchecked return values.
Diffstat (limited to 'maildrop/main.C')
| -rw-r--r-- | maildrop/main.C | 42 | 
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)  	{ | 
