🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.bash.bug
Article #448

bug in globbing

#448
From: Ray Nickson
Date: Tue, 08 Aug 1989 04:20
23 lines
1564 bytes
There is a bug in glob.c (bash version 1.02, gcc-compiled, on an hp300
running more/bsd) which causes the following behaviour.  Switch to a
directory containing only the files A and BC, then do echo *[^C]
I (usually) get both files listed.  (my understanding is that BC
shouldn't be listed).

The problem is (not surprisingly) in the glob_match function in
glob.c; when matching against *<something>, we try to see how much of
our text <something> matches, and make * match enough to make this
work.  So, we first attempt to match [^C] to BC; this fails because
[^C] must match exactly one character.  Matching [^C] to C fails,
because it cannot match a C.  But then, we try to match [^C] against
the null string; the code as written will test the first character of
the null string ('\0') against each element of the set (i.e. C); it
won't match, so we claim that "" matches [^C].

The easiest solution is probably to special-case the null string in
text being matched against a set, as we do when matching against ?.

-rgn
--
Ray Nickson, Dept. Comp. Sci., Victoria University of Wellington, New Zealand.
nickson@comp.vuw.ac.nz       ...!uunet!vuwcomp!nickson      + 64 4 721000x8593
Technical Details
Message-ID: <8908080422.AA28612@comp.vuw.ac.nz>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!watmath!uunet!tut.cis.ohio-state.edu!comp.vuw.ac.nz!nickson

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!watmath!uunet!tut.cis.ohio-state.edu!comp.vuw.ac.nz!nickson
From: nickson@comp.vuw.ac.nz (Ray Nickson)
Newsgroups: gnu.bash.bug
Subject: bug in globbing
Message-ID: <8908080422.AA28612@comp.vuw.ac.nz>
Date: 8 Aug 89 04:20:36 GMT
Sender: daemon@tut.cis.ohio-state.edu
Distribution: gnu
Organization: GNUs Not Usenet
Lines: 23