diff options
| author | Karolin Seeger <kseeger@samba.org> | 2010-03-08 20:34:39 +0100 | 
|---|---|---|
| committer | Jeremy Allison <jra@samba.org> | 2010-03-08 16:55:07 -0800 | 
| commit | 56b13ee8edfa434cbca69af17aeea58cc5502b40 (patch) | |
| tree | eb44147ebc4b1881a847a03612d4cfc2ae84ac93 /source3/lib | |
| parent | 9113e14b291c10c824d2d8ea5cb28ffc0adcb63b (diff) | |
| download | samba-56b13ee8edfa434cbca69af17aeea58cc5502b40.tar.gz samba-56b13ee8edfa434cbca69af17aeea58cc5502b40.tar.bz2 samba-56b13ee8edfa434cbca69af17aeea58cc5502b40.zip  | |
Revert "Fix bug #7067 - Linux asynchronous IO (aio) can cause smbd to fail to respond to a read or write."
This reverts commit a6ae7a552f851a399991262377cc0e062e40ac20.
This fixes bug #7222 (All users have full rigths on all shares) (CVE-2010-0728).
(cherry picked from commit 1c9494c76cc9686c61e0966f38528d3318f3176f)
Diffstat (limited to 'source3/lib')
| -rw-r--r-- | source3/lib/system.c | 65 | 
1 files changed, 4 insertions, 61 deletions
diff --git a/source3/lib/system.c b/source3/lib/system.c index 58240a34a8..5aab4417a9 100644 --- a/source3/lib/system.c +++ b/source3/lib/system.c @@ -908,11 +908,6 @@ char *sys_getwd(char *s)  #if defined(HAVE_POSIX_CAPABILITIES) -/* This define hasn't made it into the glibc capabilities header yet. */ -#ifndef SECURE_NO_SETUID_FIXUP -#define SECURE_NO_SETUID_FIXUP          2 -#endif -  /**************************************************************************   Try and abstract process capabilities (for systems that have them).  ****************************************************************************/ @@ -943,32 +938,6 @@ static bool set_process_capability(enum smbd_capability capability,  	}  #endif -#if defined(HAVE_PRCTL) && defined(PR_SET_SECUREBITS) && defined(SECURE_NO_SETUID_FIXUP) -        /* New way of setting capabilities as "sticky". */ - -	/* -	 * Use PR_SET_SECUREBITS to prevent setresuid() -	 * atomically dropping effective capabilities on -	 * uid change. Only available in Linux kernels -	 * 2.6.26 and above. -	 * -	 * See here: -	 * http://www.kernel.org/doc/man-pages/online/pages/man7/capabilities.7.html -	 * for details. -	 * -	 * Specifically the CAP_KILL capability we need -	 * to allow Linux threads under different euids -	 * to send signals to each other. -	 */ - -	if (prctl(PR_SET_SECUREBITS, 1 << SECURE_NO_SETUID_FIXUP)) { -		DEBUG(0,("set_process_capability: " -			"prctl PR_SET_SECUREBITS failed with error %s\n", -			strerror(errno) )); -		return false; -	} -#endif -  	cap = cap_get_proc();  	if (cap == NULL) {  		DEBUG(0,("set_process_capability: cap_get_proc failed: %s\n", @@ -997,11 +966,6 @@ static bool set_process_capability(enum smbd_capability capability,  			cap_vals[num_cap_vals++] = CAP_LEASE;  #endif  			break; -		case KILL_CAPABILITY: -#ifdef CAP_KILL -			cap_vals[num_cap_vals++] = CAP_KILL; -#endif -			break;  	}  	SMB_ASSERT(num_cap_vals <= ARRAY_SIZE(cap_vals)); @@ -1011,37 +975,16 @@ static bool set_process_capability(enum smbd_capability capability,  		return True;  	} -	/* -	 * Ensure the capability is effective. We assume that as a root -	 * process it's always permitted. -	 */ - -	if (cap_set_flag(cap, CAP_EFFECTIVE, num_cap_vals, cap_vals, -			enable ? CAP_SET : CAP_CLEAR) == -1) { -		DEBUG(0, ("set_process_capability: cap_set_flag effective " -			"failed (%d): %s\n", -			(int)capability, -			strerror(errno))); -		cap_free(cap); -		return false; -	} +	cap_set_flag(cap, CAP_EFFECTIVE, num_cap_vals, cap_vals, +		enable ? CAP_SET : CAP_CLEAR);  	/* We never want to pass capabilities down to our children, so make  	 * sure they are not inherited.  	 */ -	if (cap_set_flag(cap, CAP_INHERITABLE, num_cap_vals, -			cap_vals, CAP_CLEAR) == -1) { -		DEBUG(0, ("set_process_capability: cap_set_flag inheritable " -			"failed (%d): %s\n", -			(int)capability, -			strerror(errno))); -		cap_free(cap); -		return false; -	} +	cap_set_flag(cap, CAP_INHERITABLE, num_cap_vals, cap_vals, CAP_CLEAR);  	if (cap_set_proc(cap) == -1) { -		DEBUG(0, ("set_process_capability: cap_set_flag (%d) failed: %s\n", -			(int)capability, +		DEBUG(0, ("set_process_capability: cap_set_proc failed: %s\n",  			strerror(errno)));  		cap_free(cap);  		return False;  | 
