* Check for lchown.
This commit is contained in:
		
							parent
							
								
									c3286ec020
								
							
						
					
					
						commit
						d03f0d4117
					
				
					 2 changed files with 8 additions and 9 deletions
				
			
		
							
								
								
									
										10
									
								
								configure.ac
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								configure.ac
									
										
									
									
									
								
							|  | @ -237,15 +237,7 @@ AM_CONDITIONAL(INIT_STATE, test "$init_state" = "yes") | |||
| 
 | ||||
| 
 | ||||
| # Setuid installations. | ||||
| AC_CHECK_FUNC(setresuid, [HAVE_SETRESUID=1], [HAVE_SETRESUID=]) | ||||
| if test "$HAVE_SETRESUID" = "1"; then | ||||
|     AC_DEFINE(HAVE_SETRESUID, 1, [whether we have setresuid()]) | ||||
| fi | ||||
| 
 | ||||
| AC_CHECK_FUNC(setreuid, [HAVE_SETREUID=1], [HAVE_SETREUID=]) | ||||
| if test "$HAVE_SETREUID" = "1"; then | ||||
|     AC_DEFINE(HAVE_SETREUID, 1, [whether we have setreuid()]) | ||||
| fi | ||||
| AC_CHECK_FUNCS([setresuid setreuid lchown]) | ||||
| 
 | ||||
| 
 | ||||
| # This is needed if ATerm, Berkeley DB or bzip2 are static libraries, | ||||
|  |  | |||
|  | @ -10,6 +10,7 @@ | |||
| #include <iostream> | ||||
| #include <vector> | ||||
| 
 | ||||
| #include "config.h" | ||||
| #include "util.hh" | ||||
| 
 | ||||
| using namespace nix; | ||||
|  | @ -46,8 +47,14 @@ static void secureChown(uid_t uidFrom, gid_t gidFrom, | |||
| 
 | ||||
|     assert(uidTo != 0 && gidTo != 0); | ||||
| 
 | ||||
| #if HAVE_LCHOWN | ||||
|     if (lchown(path.c_str(), uidTo, gidTo) == -1) | ||||
|         throw Error(error); | ||||
| #else | ||||
|     if (!S_ISLNK(st.st_mode) && | ||||
|         chown(path.c_str(), uidTo, gidTo) == -1) | ||||
|         throw Error(error); | ||||
| #endif | ||||
| 
 | ||||
|     if (S_ISDIR(st.st_mode)) { | ||||
|         Strings names = readDirectory(path); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue