[MPlayer-users] Gmplayer with -vo xvidix

P.L.Hayes paul at cityhall.uklinux.net
Sat Apr 5 05:41:51 CEST 2003

	I just subscribed to this mailing list and noticed Rob Berquist's gmplayer 
problem in the archives. I've had the same problem with other programs that 
use the gtk libraries. The gtk lib does not allow you to run it's code with 
the setuid bit on, you get a message telling you to create a helper program 
and a web page url; http://www.gtk.org/setuid.html for further details. 
Unfortunately that page does not tell you how to create the helper program.

	There are two solutions, the first being that you may already have such a 
helper program on your machine, look for progs with helper or wrapper in 
their names. If that doesn't work it is easy to knock one up like so;

Create a file bypassgtk.c with the following innards:

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>

int main(int argc , char **argv) {
	extern char **environ;
	if  (setuid((uid_t)0) == 0){
		printf("Executing mplayer ....\n");
		if (execve("/usr/local/bin/mplayer",argv,environ) != 0);
		perror("Can't exec mplayer");
	printf("Exec mplayer failed\n");
	return 1;

Then save it and compile it with "gcc -o gmplayer bypassgtk.c", remove the 
link /usr/local/bin/gmplayer and replace it with the new gmplayer you just 
compiled. Lastly you need to (as root) "chmod u+s /usr/local/bin/gmplayer".
Obviously you need to replace /usr/local/bin with the correct path if it is 
different -- especially in the code above ! 

	You can also copy the new gmplayer to e.g smplayer so that you 
don't need to be root when using xvidix\dga\/dev/rtc but not using the gui.
Finally you can improve security by making gmplayer/smplayer owned by some 
special group (e.g. "chown root.video [gs]mplayer") and executable only by 
members of that group ("chmod o-x,g+x [gs]mplayer"). Use whatever security 
tools you have to ensure that the mplayer binary or the libs it depends on 
aren't trojan'd and you should be ok. If your machine is single user you 
could just put gmplayer/smplayer in your own private bin.

More information about the MPlayer-users mailing list