mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	have make_random_dir respect $TMPDIR
with the attached patch, make_random_dir first tries to use $TMPDIR, then $TMP finally defaulting to "/tmp" Signed-off-by: Lennart Poettering <lennart@poettering.net>
This commit is contained in:
		
							parent
							
								
									f5c301d9f4
								
							
						
					
					
						commit
						564ef2b71f
					
				
					 1 changed files with 19 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -1315,31 +1315,43 @@ static char* make_random_dir(mode_t m) {
 | 
			
		|||
        "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 | 
			
		||||
        "0123456789";
 | 
			
		||||
 | 
			
		||||
    char fn[24] = "/tmp/pulse-";
 | 
			
		||||
    const char *tmpdir;
 | 
			
		||||
    char *fn;
 | 
			
		||||
    size_t pathlen;
 | 
			
		||||
 | 
			
		||||
    fn[sizeof(fn)-1] = 0;
 | 
			
		||||
    if (!(tmpdir = getenv("TMPDIR")))
 | 
			
		||||
        if (!(tmpdir = getenv("TMP")))
 | 
			
		||||
            if (!(tmpdir = getenv("TEMP")))
 | 
			
		||||
                tmpdir = getenv("TEMPDIR");
 | 
			
		||||
 | 
			
		||||
    if (!tmpdir || !pa_is_path_absolute(tmpdir))
 | 
			
		||||
        tmpdir = "/tmp";
 | 
			
		||||
 | 
			
		||||
    fn = pa_sprintf_malloc("%s/pulse-XXXXXXXXXXXX", tmpdir);
 | 
			
		||||
    pathlen = strlen(fn);
 | 
			
		||||
 | 
			
		||||
    for (;;) {
 | 
			
		||||
        unsigned i;
 | 
			
		||||
        size_t i;
 | 
			
		||||
        int r;
 | 
			
		||||
        mode_t u;
 | 
			
		||||
        int saved_errno;
 | 
			
		||||
 | 
			
		||||
        for (i = 11; i < sizeof(fn)-1; i++)
 | 
			
		||||
        for (i = pathlen - 12; i < pathlen; i++)
 | 
			
		||||
            fn[i] = table[rand() % (sizeof(table)-1)];
 | 
			
		||||
 | 
			
		||||
        u = umask((~m) & 0777);
 | 
			
		||||
        r = mkdir(fn, m);
 | 
			
		||||
 | 
			
		||||
        saved_errno = errno;
 | 
			
		||||
        umask(u);
 | 
			
		||||
        errno = saved_errno;
 | 
			
		||||
 | 
			
		||||
        if (r >= 0)
 | 
			
		||||
            return pa_xstrdup(fn);
 | 
			
		||||
 | 
			
		||||
        errno = saved_errno;
 | 
			
		||||
            return fn;
 | 
			
		||||
 | 
			
		||||
        if (errno != EEXIST) {
 | 
			
		||||
            pa_log_error("Failed to create random directory %s: %s", fn, pa_cstrerror(errno));
 | 
			
		||||
            pa_xfree(fn);
 | 
			
		||||
            return NULL;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue