Blame config/util/chownxterm.c

Packit b099d7
/* $TOG: chownxterm.c /main/4 1998/02/06 11:23:10 kaleb $ */
Packit b099d7
/*
Packit b099d7
Packit b099d7
 * Motif
Packit b099d7
 *
Packit b099d7
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are free software; you can
Packit b099d7
 * redistribute them and/or modify them under the terms of the GNU
Packit b099d7
 * Lesser General Public License as published by the Free Software
Packit b099d7
 * Foundation; either version 2 of the License, or (at your option)
Packit b099d7
 * any later version.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are distributed in the hope that
Packit b099d7
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
Packit b099d7
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit b099d7
 * PURPOSE. See the GNU Lesser General Public License for more
Packit b099d7
 * details.
Packit b099d7
 *
Packit b099d7
 * You should have received a copy of the GNU Lesser General Public
Packit b099d7
 * License along with these librararies and programs; if not, write
Packit b099d7
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Packit b099d7
 * Floor, Boston, MA 02110-1301 USA
Packit b099d7
Packit b099d7
*/
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * chownxterm --- make xterm suid root
Packit b099d7
 *
Packit b099d7
 * By Stephen Gildea, December 1993
Packit b099d7
 */
Packit b099d7
Packit b099d7
Packit b099d7
#ifdef HAVE_CONFIG_H
Packit b099d7
#include <config.h>
Packit b099d7
#endif
Packit b099d7
Packit b099d7
Packit b099d7
#define XTERM_PATH "/x11/programs/xterm/xterm"
Packit b099d7
Packit b099d7
#include <stdio.h>
Packit b099d7
#include <errno.h>
Packit b099d7
Packit b099d7
char *prog_name;
Packit b099d7
Packit b099d7
void help()
Packit b099d7
{
Packit b099d7
    setgid(getgid());
Packit b099d7
    setuid(getuid());
Packit b099d7
    printf("chown-xterm makes %s suid root\n", XTERM_PATH);
Packit b099d7
    printf("This is necessary on Ultrix for /dev/tty operation.\n");
Packit b099d7
    exit(0);
Packit b099d7
}
Packit b099d7
Packit b099d7
void print_error(err_string)
Packit b099d7
    char *err_string;
Packit b099d7
{
Packit b099d7
    setgid(getgid());
Packit b099d7
    setuid(getuid());
Packit b099d7
    fprintf(stderr, "%s: \"%s\"", prog_name, err_string);
Packit b099d7
    perror(" failed");
Packit b099d7
    exit(1);
Packit b099d7
}
Packit b099d7
Packit b099d7
main(argc, argv)
Packit b099d7
    int argc;
Packit b099d7
    char **argv;
Packit b099d7
{
Packit b099d7
    prog_name = argv[0];
Packit b099d7
    if (argc >= 2 && strcmp(argv[1], "-help") == 0) {
Packit b099d7
	help();
Packit b099d7
    } else {
Packit b099d7
	if (chown(XTERM_PATH, 0, -1) != 0)
Packit b099d7
	    print_error("chown root " XTERM_PATH);
Packit b099d7
	if (chmod(XTERM_PATH, 04555) != 0)
Packit b099d7
	    print_error("chmod 4555 " XTERM_PATH);
Packit b099d7
    }
Packit b099d7
    exit(0);
Packit b099d7
}