mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	NetBSD doesn't know getgrnam_r()/getpwnam_r()
Signed-off-by: Lennart Poettering <lennart@poettering.net>
This commit is contained in:
		
							parent
							
								
									61075a78f7
								
							
						
					
					
						commit
						c0e4e5a868
					
				
					 2 changed files with 41 additions and 11 deletions
				
			
		| 
						 | 
					@ -367,8 +367,8 @@ AC_CHECK_FUNCS([lrintf strtof])
 | 
				
			||||||
AC_FUNC_FORK
 | 
					AC_FUNC_FORK
 | 
				
			||||||
AC_FUNC_GETGROUPS
 | 
					AC_FUNC_GETGROUPS
 | 
				
			||||||
AC_FUNC_SELECT_ARGTYPES
 | 
					AC_FUNC_SELECT_ARGTYPES
 | 
				
			||||||
AC_CHECK_FUNCS([chmod chown clock_gettime getaddrinfo getgrgid_r \
 | 
					AC_CHECK_FUNCS([chmod chown clock_gettime getaddrinfo getgrgid_r getgrnam_r \
 | 
				
			||||||
    getpwuid_r gettimeofday getuid inet_ntop inet_pton mlock nanosleep \
 | 
					    getpwnam_r getpwuid_r gettimeofday getuid inet_ntop inet_pton mlock nanosleep \
 | 
				
			||||||
    pipe posix_fadvise posix_madvise posix_memalign setpgid setsid shm_open \
 | 
					    pipe posix_fadvise posix_madvise posix_memalign setpgid setsid shm_open \
 | 
				
			||||||
    sigaction sleep sysconf])
 | 
					    sigaction sleep sysconf])
 | 
				
			||||||
AC_CHECK_FUNCS([mkfifo], [HAVE_MKFIFO=1], [HAVE_MKFIFO=0])
 | 
					AC_CHECK_FUNCS([mkfifo], [HAVE_MKFIFO=1], [HAVE_MKFIFO=0])
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -935,7 +935,7 @@ static int is_group(gid_t gid, const char *name) {
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
    n = -1;
 | 
					    n = -1;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    if (n < 0)
 | 
					    if (n <= 0)
 | 
				
			||||||
        n = 512;
 | 
					        n = 512;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    data = pa_xmalloc((size_t) n);
 | 
					    data = pa_xmalloc((size_t) n);
 | 
				
			||||||
| 
						 | 
					@ -959,7 +959,7 @@ finish:
 | 
				
			||||||
     * support getgrgid_r. */
 | 
					     * support getgrgid_r. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    errno = 0;
 | 
					    errno = 0;
 | 
				
			||||||
    if ((result = getgrgid(gid)) == NULL) {
 | 
					    if (!(result = getgrgid(gid))) {
 | 
				
			||||||
        pa_log("getgrgid(%u): %s", gid, pa_cstrerror(errno));
 | 
					        pa_log("getgrgid(%u): %s", gid, pa_cstrerror(errno));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!errno)
 | 
					        if (!errno)
 | 
				
			||||||
| 
						 | 
					@ -1026,18 +1026,35 @@ int pa_uid_in_group(uid_t uid, const char *name) {
 | 
				
			||||||
    char **i;
 | 
					    char **i;
 | 
				
			||||||
    int r = -1;
 | 
					    int r = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef _SC_GETGR_R_SIZE_MAX
 | 
				
			||||||
    g_n = sysconf(_SC_GETGR_R_SIZE_MAX);
 | 
					    g_n = sysconf(_SC_GETGR_R_SIZE_MAX);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    g_n = -1;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    if (g_n <= 0)
 | 
				
			||||||
 | 
					        g_n = 512;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_buf = pa_xmalloc((size_t) g_n);
 | 
					    g_buf = pa_xmalloc((size_t) g_n);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef _SC_GETPW_R_SIZE_MAX
 | 
				
			||||||
    p_n = sysconf(_SC_GETPW_R_SIZE_MAX);
 | 
					    p_n = sysconf(_SC_GETPW_R_SIZE_MAX);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    p_n = -1;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    if (p_n <= 0)
 | 
				
			||||||
 | 
					        p_n = 512;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    p_buf = pa_xmalloc((size_t) p_n);
 | 
					    p_buf = pa_xmalloc((size_t) p_n);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    errno = 0;
 | 
					    errno = 0;
 | 
				
			||||||
    if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr) {
 | 
					#ifdef HAVE_GETGRNAM_R
 | 
				
			||||||
 | 
					    if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr)
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    if (!(gr = getgrnam(name)))
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
        if (!errno)
 | 
					        if (!errno)
 | 
				
			||||||
            errno = ENOENT;
 | 
					            errno = ENOENT;
 | 
				
			||||||
 | 
					 | 
				
			||||||
        goto finish;
 | 
					        goto finish;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1045,8 +1062,11 @@ int pa_uid_in_group(uid_t uid, const char *name) {
 | 
				
			||||||
    for (i = gr->gr_mem; *i; i++) {
 | 
					    for (i = gr->gr_mem; *i; i++) {
 | 
				
			||||||
        struct passwd pwbuf, *pw;
 | 
					        struct passwd pwbuf, *pw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        errno = 0;
 | 
					#ifdef HAVE_GETPWNAM_R
 | 
				
			||||||
        if (getpwnam_r(*i, &pwbuf, p_buf, (size_t) p_n, &pw) != 0 || !pw)
 | 
					        if (getpwnam_r(*i, &pwbuf, p_buf, (size_t) p_n, &pw) != 0 || !pw)
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        if (!(pw = getpwnam(*i)))
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
            continue;
 | 
					            continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (pw->pw_uid == uid) {
 | 
					        if (pw->pw_uid == uid) {
 | 
				
			||||||
| 
						 | 
					@ -1069,15 +1089,25 @@ gid_t pa_get_gid_of_group(const char *name) {
 | 
				
			||||||
    long g_n;
 | 
					    long g_n;
 | 
				
			||||||
    struct group grbuf, *gr;
 | 
					    struct group grbuf, *gr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef _SC_GETGR_R_SIZE_MAX
 | 
				
			||||||
    g_n = sysconf(_SC_GETGR_R_SIZE_MAX);
 | 
					    g_n = sysconf(_SC_GETGR_R_SIZE_MAX);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    g_n = -1;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    if (g_n <= 0)
 | 
				
			||||||
 | 
					        g_n = 512;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_buf = pa_xmalloc((size_t) g_n);
 | 
					    g_buf = pa_xmalloc((size_t) g_n);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    errno = 0;
 | 
					    errno = 0;
 | 
				
			||||||
    if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr) {
 | 
					#ifdef HAVE_GETGRNAM_R
 | 
				
			||||||
 | 
					    if (getgrnam_r(name, &grbuf, g_buf, (size_t) g_n, &gr) != 0 || !gr)
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    if (!(gr = getgrnam(name)))
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
        if (!errno)
 | 
					        if (!errno)
 | 
				
			||||||
            errno = ENOENT;
 | 
					            errno = ENOENT;
 | 
				
			||||||
 | 
					 | 
				
			||||||
        goto finish;
 | 
					        goto finish;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue