[BACK]Return to anoncvs.shar CVS log [TXT][DIR] Up to [local] / www

Diff for /www/anoncvs.shar between version 1.7 and 1.8

version 1.7, 1997/10/12 21:52:09 version 1.8, 1997/10/13 21:18:48
Line 489 
Line 489 
 X#define        CVSROOT         __CONCAT3(HOSTNAME,":",LOCALROOT)  X#define        CVSROOT         __CONCAT3(HOSTNAME,":",LOCALROOT)
 X#endif  X#endif
 X  X
   X/*
   X * We define PSERVER_SUPPORT to allow anoncvssh to spawn a "cvs pserver".
   X * You may undefine this if you aren't going to be running pserver.
   X */
   X#ifndef PSERVER_SUPPORT
   X#define PSERVER_SUPPORT
   X#endif
   X
   X/*
   X * Define USE_SYSLOG if you want anoncvssh to log pserver connections
   X * using syslog()
   X */
   X#define USE_SYSLOG
   X
   X#ifdef USE_SYSLOG
   X#include <string.h>
   X#include <syslog.h>
   X#include <netinet/in.h>
   X#include <sys/socket.h>
   X#include <arpa/inet.h>
   X#define LOG_FACILITY LOG_DAEMON
   X#define LOG_PRIO LOG_INFO
   X#endif
   X
   X/* Define ANONCVS_USER if you want anoncvssh to complain if invoked by
   X * anyone other than root or ANONCVS_USER.
   X */
   X/* #define ANONCVS_USER "anoncvs" */
   X
 Xint main __P((int, char *[]));  Xint main __P((int, char *[]));
 X  X
 Xchar * const env[] = {  Xchar * const env[] = {
Line 519 
Line 548 
 X               fprintf(stderr, "no directory\n");  X               fprintf(stderr, "no directory\n");
 X               exit(1);  X               exit(1);
 X       }  X       }
   X
   X#ifdef USE_SYSLOG
   X       openlog("anoncvssh", LOG_PID | LOG_NDELAY, LOG_FACILITY);
   X#endif /* USE_SYSLOG */
   X
   X#ifdef ANONCVS_USER
   X       /*
   X        * I love lusers who have to test every setuid binary on my machine.
   X        */
   X       if (getuid() != 0 && (strcmp (pw->pw_name, ANONCVS_USER) != 0)) {
   X               fprintf(stderr, "You're not supposed to be running me!\n");
   X#ifdef USE_SYSLOG
   X               syslog(LOG_NOTICE,
   X                      "User %s(%d) invoked anoncvssh - Possible twink?",
   X                      pw->pw_name, pw->pw_uid);
   X#endif /* USE_SYSLOG */
   X               exit(1);
   X       }
   X#endif /* ANONCVS_USER */
   X
   X
 X       seteuid(0);  X       seteuid(0);
 X       if (chroot(pw->pw_dir) == -1) {  X       if (chroot(pw->pw_dir) == -1) {
 X               perror("chroot");  X               perror("chroot");
Line 531 
Line 581 
 X        * program now "safe"  X        * program now "safe"
 X        */  X        */
 X  X
   X#ifdef PSERVER_SUPPORT
 X       /* If we want pserver functionality */  X       /* If we want pserver functionality */
 X       if (strcmp("pserver", argv[1])) {  X       if ((argc == 2) && (strcmp("pserver", argv[1]) == 0)) {
   X#ifdef USE_SYSLOG
   X               int slen;
   X               struct sockaddr_in my_sa, peer_sa;
   X               char *us, *them;
   X
   X               slen = sizeof(my_sa);
   X               if (getsockname(0, (struct sockaddr *) &my_sa, &slen)
   X                   != 0) {
   X                 perror("getsockname");
   X                 exit(1);
   X               }
   X               us = strdup(inet_ntoa(my_sa.sin_addr));
   X               if (us == NULL) {
   X                 fprintf(stderr, "malloc failed\n");
   X                 exit(1);
   X               }
   X               slen = sizeof(peer_sa);
   X               if (getpeername(0, (struct sockaddr *) &peer_sa, &slen)
   X                   != 0) {
   X                 perror("getpeername");
   X                 exit(1);
   X               }
   X               them=strdup(inet_ntoa(peer_sa.sin_addr));
   X               if (them == NULL) {
   X                 fprintf(stderr, "malloc failed\n");
   X                 exit(1);
   X               }
   X               syslog(LOG_PRIO,
   X                      "pserver connection from %s:%d to %s:%d\n",
   X                      them, ntohs(peer_sa.sin_port),
   X                      us, ntohs(my_sa.sin_port));
   X#endif /* USE_SYSLOG */
 X               execle("/usr/bin/cvs", "cvs", "pserver", NULL, env);  X               execle("/usr/bin/cvs", "cvs", "pserver", NULL, env);
 X               perror("execle: cvs");  X               perror("execle: cvs");
 X               fprintf(stderr, "unable to exec CVS pserver!\n");  X               fprintf(stderr, "unable to exec CVS pserver!\n");
 X               exit(1);  X               exit(1);
 X               /* NOTREACHED */  X               /* NOTREACHED */
 X       }  X       }
   X#endif
 X  X
 X       if (argc != 3 ||  X       if (argc != 3 ||
 X               strcmp("anoncvssh",  argv[0]) != 0 ||  X               strcmp("anoncvssh",  argv[0]) != 0 ||
 X               strcmp("-c",         argv[1]) != 0 ||  X               strcmp("-c",         argv[1]) != 0 ||
 X               (strcmp("cvs server", argv[2]) != 0 &&  X               (strcmp("cvs server", argv[2]) != 0 &&
 X                strcmp(__CONCAT3("cvs -d ",LOCALROOT," server"), argv[2]) != 0)) {  X                strcmp(__CONCAT3("cvs -d ",LOCALROOT," server"), argv[2]) != 0)) {
 X  
 X               fprintf(stderr, "\nTo use anonymous CVS install the latest ");  X               fprintf(stderr, "\nTo use anonymous CVS install the latest ");
 X               fprintf(stderr,"version of CVS on your local machine.\n");  X               fprintf(stderr,"version of CVS on your local machine.\n");
 X               fprintf(stderr,"Then set your CVSROOT environment variable ");  X               fprintf(stderr,"Then set your CVSROOT environment variable ");
Line 559 
Line 642 
 X               sleep(10);  X               sleep(10);
 X               exit(0);  X               exit(0);
 X       }  X       }
 X  
 X       execle("/usr/bin/cvs", "cvs", "server", NULL, env);  X       execle("/usr/bin/cvs", "cvs", "server", NULL, env);
 X       perror("execle: cvs");  X       perror("execle: cvs");
 X       fprintf(stderr, "unable to exec CVS server!\n");  X       fprintf(stderr, "unable to exec CVS server!\n");

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8