mirror of
				https://gitlab.freedesktop.org/wayland/wayland.git
				synced 2025-11-03 09:01:42 -05:00 
			
		
		
		
	socket-test: don't try to be clever, fail if no XDG_RUNTIME_DIR is set
Not only setenv(), also putenv() allocates memory on my system (glibc 2.16.0). Just fail with a clear message if XDG_RUNTIME_DIR is not set. https://bugs.freedesktop.org/show_bug.cgi?id=52618
This commit is contained in:
		
							parent
							
								
									b57694ca0e
								
							
						
					
					
						commit
						0a633704e6
					
				
					 1 changed files with 10 additions and 11 deletions
				
			
		| 
						 | 
					@ -36,17 +36,20 @@ static const struct sockaddr_un example_sockaddr_un;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define TOO_LONG (1 + sizeof example_sockaddr_un.sun_path)
 | 
					#define TOO_LONG (1 + sizeof example_sockaddr_un.sun_path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Ensure the connection doesn't fail due to lack of XDG_RUNTIME_DIR. */
 | 
				
			||||||
 | 
					static void require_xdg_runtime_dir()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char *val = getenv("XDG_RUNTIME_DIR");
 | 
				
			||||||
 | 
						if (!val)
 | 
				
			||||||
 | 
							assert(0 && "set $XDG_RUNTIME_DIR to run this test");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEST(socket_path_overflow_client_connect)
 | 
					TEST(socket_path_overflow_client_connect)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	char path[TOO_LONG];
 | 
						char path[TOO_LONG];
 | 
				
			||||||
	struct wl_display *d;
 | 
						struct wl_display *d;
 | 
				
			||||||
	int ret;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Ensure the connection doesn't fail due to lack of
 | 
						require_xdg_runtime_dir();
 | 
				
			||||||
	   XDG_RUNTIME_DIR. Don't use setenv(), as that allocates
 | 
					 | 
				
			||||||
	   memory and creates a spurious memory leak failure. */
 | 
					 | 
				
			||||||
	ret = putenv("XDG_RUNTIME_DIR=.");
 | 
					 | 
				
			||||||
	assert(ret == 0);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memset(path, 'a', sizeof path);
 | 
						memset(path, 'a', sizeof path);
 | 
				
			||||||
	path[sizeof path - 1] = '\0';
 | 
						path[sizeof path - 1] = '\0';
 | 
				
			||||||
| 
						 | 
					@ -62,11 +65,7 @@ TEST(socket_path_overflow_server_create)
 | 
				
			||||||
	struct wl_display *d;
 | 
						struct wl_display *d;
 | 
				
			||||||
	int ret;
 | 
						int ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Ensure the connection doesn't fail due to lack of
 | 
						require_xdg_runtime_dir();
 | 
				
			||||||
	   XDG_RUNTIME_DIR. Don't use setenv(), as that allocates
 | 
					 | 
				
			||||||
	   memory and creates a spurious memory leak failure. */
 | 
					 | 
				
			||||||
	ret = putenv("XDG_RUNTIME_DIR=.");
 | 
					 | 
				
			||||||
	assert(ret == 0);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memset(path, 'a', sizeof path);
 | 
						memset(path, 'a', sizeof path);
 | 
				
			||||||
	path[sizeof path - 1] = '\0';
 | 
						path[sizeof path - 1] = '\0';
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue