mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-28 23:34:53 +03:00 
			
		
		
		
	nss_db allows for getpwent et al to be called without a set*ent, but it only works once. After the last get*ent a set*ent is required to restart, because the end*ent did not properly reset the module. Resetting it to NULL allows for a proper restart. If the database doesn't exist, however, end*ent erroniously called munmap which set errno. The test case runs "makedb" inside the testroot, so needs selinux DSOs installed.
		
			
				
	
	
		
			29 lines
		
	
	
		
			788 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			788 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <iostream>
 | |
| 
 | |
| /* makedb needs selinux dso's.  */
 | |
| #ifdef HAVE_SELINUX
 | |
| # include <selinux/selinux.h>
 | |
| #endif
 | |
| 
 | |
| using namespace std;
 | |
| 
 | |
| /* The purpose of this file is to indicate to the build system which
 | |
|    shared objects need to be copied into the testroot, such as gcc or
 | |
|    selinux support libraries.  This program is never executed, only
 | |
|    scanned for dependencies on shared objects, so the code below may
 | |
|    seem weird - it's written to survive gcc optimization and force
 | |
|    such dependencies.
 | |
| */
 | |
| 
 | |
| int
 | |
| main (int argc, char **argv)
 | |
| {
 | |
|   /* Complexity to keep gcc from optimizing this away.  */
 | |
|   cout << (argc > 1 ? argv[1] : "null");
 | |
| #ifdef HAVE_SELINUX
 | |
|   /* This exists to force libselinux.so to be required.  */
 | |
|   cout << "selinux " << is_selinux_enabled ();
 | |
| #endif
 | |
|   return 0;
 | |
| }
 |