* use setresuid() instead of setruid() if available

* if fix for the non-fp resampler


git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@314 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
Lennart Poettering 2004-11-26 00:07:24 +00:00
parent 758647868f
commit 9a9309f593
3 changed files with 18 additions and 8 deletions

View file

@ -96,6 +96,9 @@ AC_SUBST(CAP_LIBS)
AC_CHECK_HEADERS(sys/capability.h)
AC_CHECK_FUNCS(setresuid)
AC_CHECK_FUNCS(setreuid)
PKG_CHECK_MODULES(LIBSAMPLERATE, [ samplerate >= 0.1.0 ])
AC_SUBST(LIBSAMPLERATE_CFLAGS)
AC_SUBST(LIBSAMPLERATE_LIBS)

View file

@ -23,6 +23,9 @@
#include <config.h>
#endif
/* setresuid() is only available on GNU */
#define _GNU_SOURCE
#include <assert.h>
#include <unistd.h>
#include <errno.h>
@ -41,13 +44,17 @@ void pa_drop_root(void) {
if (uid == 0 || geteuid() != 0)
return;
/* pa_log(__FILE__": dropping root rights.\n"); */
setreuid(uid, uid);
/* setuid(uid);
seteuid(uid);*/
/* pa_log(__FILE__": dropping root rights.\n"); */
#if defined(HAVE_SETRESUID)
setresuid(uid, uid, uid);
#elif defined(HAVE_SETREUID)
setreuid(uid, uid);
#else
setuid(uid);
seteuid(uid);
#endif
}
#ifdef HAVE_SYS_CAPABILITY_H

View file

@ -342,8 +342,8 @@ static void trivial_run(struct pa_resampler *r, const struct pa_memchunk *in, st
unsigned j;
j = (i->o_counter * r->i_ss.rate / r->o_ss.rate);
assert(j >= i->i_counter);
j = j - i->i_counter;
j = j > i->i_counter ? j - i->i_counter : 0;
if (j >= nframes)
break;