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 /sqwebmail/sqwebmail.c | |
| parent | 4d91075b1b90f68527304b45bb26637a17e1454d (diff) | |
| download | courier-libs-39ce29711f39afa228868f9b9cf2cc851fe6d3d7.tar.bz2 | |
Fix compiler warning, unchecked return values.
Diffstat (limited to 'sqwebmail/sqwebmail.c')
| -rw-r--r-- | sqwebmail/sqwebmail.c | 35 | 
1 files changed, 26 insertions, 9 deletions
| diff --git a/sqwebmail/sqwebmail.c b/sqwebmail/sqwebmail.c index 3604568..8c4cfe1 100644 --- a/sqwebmail/sqwebmail.c +++ b/sqwebmail/sqwebmail.c @@ -2190,7 +2190,7 @@ int main(int argc, char **argv)  static int setuidgid(uid_t u, gid_t g, const char *dir, void *dummy)  { -	if (setgid(g) || setuid(u)) +	if (setgid(g) < 0 || setuid(u) < 0)  	{  		fprintf(stderr,  			"CRIT: Cache - can't setuid/setgid to %u/%u\n", @@ -2275,8 +2275,12 @@ time_t	timeouthard=get_timeouthard();  		if (*pi_malloced == 0)  		{  			free(pi_malloced); -			setgid(getgid()); -			setuid(getuid()); +			if (setgid(getgid()) < 0 || +			    setuid(getuid()) < 0) +			{ +				perror("setuid/setgid"); +				exit(1); +			}  			output_form("printnocookie.html");  			return;  		} @@ -2360,8 +2364,12 @@ time_t	timeouthard=get_timeouthard();  			|| last_time + timeoutsoft < current_time)  		{ -			setgid(getgid()); -			setuid(getuid());	/* Drop root prevs */ +			if (setgid(getgid()) < 0 || +			    setuid(getuid()) < 0)	/* Drop root prevs */ +			{ +				perror("setuid/setgid"); +				exit(1); +			}  			if (chdir("/") < 0)  			{  				output_form("expired.html"); @@ -2599,14 +2607,23 @@ time_t	timeouthard=get_timeouthard();  			maildir_cache_cancel();  			free(ubuf); -			setgid(getgid()); -			setuid(getuid()); +			if (setgid(getgid()) < 0 || +			    setuid(getuid()) < 0)	/* Drop root prevs */ +			{ +				perror("setuid/setgid"); +				exit(1); +			}  			output_form("invalid.html");	/* Invalid login */  			return;  		} -		setgid(getgid()); -		setuid(getuid()); +		if (setgid(getgid()) < 0 || +		    setuid(getuid()) < 0)	/* Drop root prevs */ +		{ +			perror("setuid/setgid"); +			exit(1); +		} +  		if ( *(u=cgi("redirect")))  			/* Redirection request to hide the referral tag */  		{ | 
