From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/11349 Path: news.gmane.org!.POSTED!not-for-mail From: Julien Ramseier Newsgroups: gmane.linux.lib.musl.general Subject: [PATCH] glob: fix / matching Date: Fri, 19 May 2017 16:59:13 +0200 Message-ID: Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Content-Type: multipart/mixed; boundary="Apple-Mail=_67FC8397-C4AF-4D28-A7FF-847B8D61CFDE" X-Trace: blaine.gmane.org 1495205971 21127 195.159.176.226 (19 May 2017 14:59:31 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 19 May 2017 14:59:31 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-11364-gllmg-musl=m.gmane.org@lists.openwall.com Fri May 19 16:59:27 2017 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.84_2) (envelope-from ) id 1dBjNH-0005O9-IQ for gllmg-musl@m.gmane.org; Fri, 19 May 2017 16:59:27 +0200 Original-Received: (qmail 3895 invoked by uid 550); 19 May 2017 14:59:30 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 3846 invoked from network); 19 May 2017 14:59:28 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:subject:message-id:date:to:mime-version; bh=uqPJXR2rXmlQemyzwKq2Xq741gVHfQ8ZuAwbG+tQ0ow=; b=CI/dc5mD0orKKtL32R/G2W7iVqxMsNR9PIRfCmAO1epWfHqKkbo0idn1oEsnYXUyE8 tWpr/bhjDQ1M8AXP5jS19gJ3/Y8Xla8p2GOWCunNIHVoKh/BKM/zhHGR56jlyWDT3Y9b OlYf71E0pS8A1a00AkBWBypxBwcKG1ZFi8eBN9kjBED9yO+pPy1wyLt6fIWA1Yfd+reO LIezpkoWYDoiVaIbG5s1sGgBIBUhr4Ss0UpdYF50unAEqW0S3T5ylhY2G4u7Irq3Ujw2 MJvFt5NUDJN4ENEAmTKIzvaaVvz9qFO6SQ+wa/bVh4xUaovNK5SeHkWN/jvAHXV97FX1 hM+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:message-id:date:to:mime-version; bh=uqPJXR2rXmlQemyzwKq2Xq741gVHfQ8ZuAwbG+tQ0ow=; b=depFtYvF+TwlxBGN2d6HayktUjNkwjCXrxKfhoVHw+yKsyCAKTtGePdCKryKVY3a6U 040C4vLSv0ZPxjQ+F/q4K09KEbZlXRbaMBUS7KkzprLQ9Iny0TrgHfZ8MBnF1aOoHYit vmW8Kt06+LWnztIpjGOMML5a3/aViTqyaxBNrRvb2SJ0D54Tw8e1l/7XzZ5Ya0eyDIFT LdbLXQ4Pw1md15cSxvDoyLVqEL5GYQ6akxvHX3Su3KaMmATJ1aRCAqiKGFXw8FkXfYaT ntE/l66NbJVhcZ4tqxQMpAzlS2C6XhD+MK51iq5D6K/tQNKseLwKsWEQcVvmXMN6tp7V hTGw== X-Gm-Message-State: AODbwcB4pwuFGhuZ/XnBwzrytZoD44zr89LdAMzPqhbo4b3905BH8zSI VD9Lal4JDEig8NR6zKA= X-Received: by 10.80.167.4 with SMTP id h4mr7570507edc.142.1495205955844; Fri, 19 May 2017 07:59:15 -0700 (PDT) X-Mailer: Apple Mail (2.3124) Xref: news.gmane.org gmane.linux.lib.musl.general:11349 Archived-At: --Apple-Mail=_67FC8397-C4AF-4D28-A7FF-847B8D61CFDE Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii glob(3) currently fails matching "/", due to any '/' being removed from the start of the pattern before checking if it's empty. --Apple-Mail=_67FC8397-C4AF-4D28-A7FF-847B8D61CFDE Content-Disposition: attachment; filename=glob.patch Content-Type: application/octet-stream; name="glob.patch" Content-Transfer-Encoding: 7bit diff --git a/src/regex/glob.c b/src/regex/glob.c index 5b6ff12..53f3a4e 100644 --- a/src/regex/glob.c +++ b/src/regex/glob.c @@ -156,18 +156,11 @@ static int sort(const void *a, const void *b) int glob(const char *restrict pat, int flags, int (*errfunc)(const char *path, int err), glob_t *restrict g) { - const char *p=pat, *d; + const char *p = pat; struct match head = { .next = NULL }, *tail = &head; size_t cnt, i; size_t offs = (flags & GLOB_DOOFFS) ? g->gl_offs : 0; int error = 0; - - if (*p == '/') { - for (; *p == '/'; p++); - d = "/"; - } else { - d = ""; - } if (!errfunc) errfunc = ignore_err; @@ -179,12 +172,19 @@ int glob(const char *restrict pat, int flags, int (*errfunc)(const char *path, i if (strnlen(p, PATH_MAX+1) > PATH_MAX) return GLOB_NOSPACE; - if (*p) error = match_in_dir(d, p, flags, errfunc, &tail); + if (*p) { + const char *d = ""; + if (*p == '/') { + for (; *p == '/'; p++); + d = "/"; + } + error = match_in_dir(d, p, flags, errfunc, &tail); + } if (error == GLOB_NOSPACE) { freelist(&head); return error; } - + for (cnt=0, tail=head.next; tail; tail=tail->next, cnt++); if (!cnt) { if (flags & GLOB_NOCHECK) { @@ -220,7 +220,7 @@ int glob(const char *restrict pat, int flags, int (*errfunc)(const char *path, i if (!(flags & GLOB_NOSORT)) qsort(g->gl_pathv+offs, cnt, sizeof(char *), sort); - + return error; } --Apple-Mail=_67FC8397-C4AF-4D28-A7FF-847B8D61CFDE Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii Also, any feedback concerning http://www.openwall.com/lists/musl/2017/01/12/5 ? Thanks, Julien --Apple-Mail=_67FC8397-C4AF-4D28-A7FF-847B8D61CFDE--