X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Foptions.c;h=c7c4b4ea5783bef908fbe21ec4a9bd3a46aeda69;hb=0f2a00893e822ae0b55a6355b1efef6c41d97e6e;hp=a8ded25a9bc90666c736075c25a8db747e5e8b8c;hpb=ba68145197d2cf11987325628a330ee0ca651787;p=ppp.git diff --git a/pppd/options.c b/pppd/options.c index a8ded25..c7c4b4e 100644 --- a/pppd/options.c +++ b/pppd/options.c @@ -18,7 +18,7 @@ */ #ifndef lint -static char rcsid[] = "$Id: options.c,v 1.9 1994/05/25 06:25:48 paulus Exp $"; +static char rcsid[] = "$Id: options.c,v 1.12 1994/08/22 00:36:38 paulus Exp $"; #endif #include @@ -44,6 +44,7 @@ static char rcsid[] = "$Id: options.c,v 1.9 1994/05/25 06:25:48 paulus Exp $"; #include "ipcp.h" #include "upap.h" #include "chap.h" +#include "ccp.h" #define FALSE 0 #define TRUE 1 @@ -53,7 +54,7 @@ char *strdup __ARGS((char *)); #endif #ifndef GIDSET_TYPE -#define GIDSET_TYPE int +#define GIDSET_TYPE gid_t #endif /* @@ -121,6 +122,8 @@ static int setipcpaccl __ARGS((void)); static int setipcpaccr __ARGS((void)); static int setlcpechointv __ARGS((char **)); static int setlcpechofails __ARGS((char **)); +static int setbsdcomp __ARGS((char **)); +static int setnobsdcomp __ARGS((void)); static int number_option __ARGS((char *, long *, int)); static int readable __ARGS((int fd)); @@ -138,7 +141,7 @@ extern int nodetach; extern char *connector; extern char *disconnector; extern int inspeed; -extern char devname[]; +extern char devnam[]; extern int default_device; extern u_long netmask; extern int detach; @@ -228,6 +231,8 @@ static struct cmd { {"chap-interval", 1, setchapintv}, /* Set interval for rechallenge */ {"ipcp-accept-local", 0, setipcpaccl}, /* Accept peer's address for us */ {"ipcp-accept-remote", 0, setipcpaccr}, /* Accept peer's address for it */ + {"bsdcomp", 1, setbsdcomp}, /* request BSD-Compress */ + {"-bsdcomp", 0, setnobsdcomp}, /* don't allow BSD-Compress */ {NULL, 0, NULL} }; @@ -425,9 +430,9 @@ options_for_tty() char *dev, *path; int ret; - dev = strrchr(devname, '/'); + dev = strrchr(devnam, '/'); if (dev == NULL) - dev = devname; + dev = devnam; else ++dev; if (strcmp(dev, "tty") == 0) @@ -835,6 +840,10 @@ setupapfile(argv) fprintf(stderr, "unable to open user login data file %s\n", *argv); return 0; } + if (!readable(fileno(ufile))) { + fprintf(stderr, "%s: access denied\n", *argv); + return 0; + } check_access(ufile, *argv); /* get username */ @@ -1060,8 +1069,8 @@ setdevname(cp) return -1; } - (void) strncpy(devname, cp, MAXPATHLEN); - devname[MAXPATHLEN-1] = 0; + (void) strncpy(devnam, cp, MAXPATHLEN); + devnam[MAXPATHLEN-1] = 0; default_device = FALSE; return 1; @@ -1446,3 +1455,20 @@ static int setchapintv(argv) { return int_option(*argv, &chap[0].chal_interval); } + +static int setbsdcomp(argv) + char **argv; +{ + int bits; + + if (!int_option(*argv, &bits)) + return 0; + ccp_wantoptions[0].bsd_compress = 1; + ccp_wantoptions[0].bsd_bits = bits; + return 1; +} + +static int setnobsdcomp() +{ + ccp_allowoptions[0].bsd_compress = 0; +}