summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/cvs/src
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>1996-05-23 23:00:29 +0000
committerderaadt <deraadt@openbsd.org>1996-05-23 23:00:29 +0000
commitf6aacbe173f6154f2473ba335ebbc99b640367f7 (patch)
tree12f55a254b0fed0b1884440cce217dd31511eb52 /gnu/usr.bin/cvs/src
parentexecve changes (diff)
downloadwireguard-openbsd-f6aacbe173f6154f2473ba335ebbc99b640367f7.tar.xz
wireguard-openbsd-f6aacbe173f6154f2473ba335ebbc99b640367f7.zip
parseopts() may be called with CVSROOT still in client form
Diffstat (limited to 'gnu/usr.bin/cvs/src')
-rw-r--r--gnu/usr.bin/cvs/src/main.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/gnu/usr.bin/cvs/src/main.c b/gnu/usr.bin/cvs/src/main.c
index cac95441644..5808ca375cc 100644
--- a/gnu/usr.bin/cvs/src/main.c
+++ b/gnu/usr.bin/cvs/src/main.c
@@ -847,7 +847,20 @@ parseopts()
char *p;
FILE *fp;
- (void) sprintf (path, "%s/%s/%s", CVSroot, CVSROOTADM, CVSROOTADM_OPTIONS);
+ if (CVSroot == NULL) {
+ printf("no CVSROOT in parseopts\n");
+ return;
+ }
+ p = strchr (CVSroot, ':');
+ if (p)
+ p++;
+ else
+ p = CVSroot;
+ if (p == NULL) {
+ printf("mangled CVSROOT in parseopts\n");
+ return;
+ }
+ (void) sprintf (path, "%s/%s/%s", p, CVSROOTADM, CVSROOTADM_OPTIONS);
if ((fp = fopen(path, "r")) != NULL) {
while (fgets(buf, sizeof buf, fp) != NULL) {
if (buf[0] == '#')