diff options
author | 2015-02-12 23:07:52 +0000 | |
---|---|---|
committer | 2015-02-12 23:07:52 +0000 | |
commit | ae231988d76177fca247173150ce86bf3e02674f (patch) | |
tree | 04b1c34c04204a1fb75ffa6277ecc323b2d9c072 | |
parent | For tar without -P, if a path in the archive has any ".." components then (diff) | |
download | wireguard-openbsd-ae231988d76177fca247173150ce86bf3e02674f.tar.xz wireguard-openbsd-ae231988d76177fca247173150ce86bf3e02674f.zip |
Allow constraints URL without leading path (eg. "https://www.openbsd.org").
Fixes segfault on configuration load time, as reported by Donovan Watteau.
-rw-r--r-- | usr.sbin/ntpd/parse.y | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/usr.sbin/ntpd/parse.y b/usr.sbin/ntpd/parse.y index e5b403b4f72..ba3d592a29e 100644 --- a/usr.sbin/ntpd/parse.y +++ b/usr.sbin/ntpd/parse.y @@ -1,4 +1,4 @@ -/* $OpenBSD: parse.y,v 1.60 2015/02/12 01:54:57 reyk Exp $ */ +/* $OpenBSD: parse.y,v 1.61 2015/02/12 23:07:52 reyk Exp $ */ /* * Copyright (c) 2002, 2003, 2004 Henning Brauer <henning@openbsd.org> @@ -316,21 +316,22 @@ url : STRING { strlen("https://")) != 0) { host($1, &$$->a); $$->name = $1; - if (($$->path = strdup("/")) == NULL) - fatal("strdup"); } else { hname = $1 + strlen("https://"); path = hname + strcspn(hname, "/\\"); - if (*path == '\0') - path = "/"; - if (($$->path = strdup(path)) == NULL) - fatal("strdup"); - *path = '\0'; + if (*path != '\0') { + if (($$->path = strdup(path)) == NULL) + fatal("strdup"); + *path = '\0'; + } host(hname, &$$->a); if (($$->name = strdup(hname)) == NULL) fatal("strdup"); } + if ($$->path == NULL && + ($$->path = strdup("/")) == NULL) + fatal("strdup"); } ; |