Summary: | sys-libs/uclibc-0.9.28.3 performs fnmatch(..., ..., FNM_PATHNAME) incorrectly when slash only in string and not pattern | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Aurélien Francillon <aurelien.francillon> |
Component: | Current packages | Assignee: | Embedded Gentoo Team <embedded> |
Status: | RESOLVED WONTFIX | ||
Severity: | normal | CC: | embedded, ferdy, jstein, robbat2 |
Priority: | High | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: |
build.log
emerge.info git-1.5.2.5_error_log.txt uclibc-fnmatch.c git_1.5.3.7-r1_error_log.txt |
Description
Aurélien Francillon
2007-06-08 06:37:52 UTC
Created attachment 121470 [details]
build.log
complete build log
Created attachment 121471 [details]
emerge.info
emerge --info
Hi, If you unpack the tarball yourself, edit t/Makefile and UNcomment the line that reads: #GIT_TEST_OPTS=--verbose --debug Then run 'make -C t t3001-ls-files-others-exclude.sh' and paste that result here. Thanks. - ferdy Please test a newer version and provide the info needed to track this issue down. Reopen with the result. Thanks. - ferdy Created attachment 132079 [details]
git-1.5.2.5_error_log.txt
test suite error log with git-1.5.2.5
sorry for the slackiness, I hope you can see the problem with the verbose logging ... Cheers Aurélien Looks like a bug in uclibc's fnmatch. Care to run the attached test? Thanks. - ferdy Created attachment 133872 [details]
uclibc-fnmatch.c
Desired output:
--- 8< ---
$ ./uclibc-fnmatch && echo $?
fnmatch(*.foo, a.foo, 1) = 0 -> Ok
fnmatch(*.foo, a.foo, 0) = 0 -> Ok
fnmatch(*.foo, bar/a.foo, 1) = FNM_NOMATCH -> Ok
fnmatch(*.foo, bar/a.foo, 0) = 0 -> Ok
0
--- 8< ---
(In reply to comment #7) > Looks like a bug in uclibc's fnmatch. Care to run the attached test? Thanks. well it fails ... ./a.out fnmatch(*.foo, a.foo, 1) = 0 -> Ok fnmatch(*.foo, a.foo, 0) = 0 -> Ok fnmatch(*.foo, bar/a.foo, 1) = 0 -> FAIL fnmatch(*.foo, bar/a.foo, 0) = 0 -> Ok and the fnmatch is the one of sys-libs/uclibc-0.9.28.3 ldd a.out libc.so.0 => /lib/libc.so.0 (0x4ccd7000) ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x4cd31000) ll /lib/libc.so.0 /lib/libc.so.0 -> libuClibc-0.9.28.so nm a.out | grep fnmatch U fnmatch and sys-libs/uclibc-0.9.28.3 was built with : -build -debug hardened -iconv ipv6 -minimal -nls -pregen -savedconfig uclibc-compat -userlocales wordexp thanks, Aurélien Unless my understanding of POSIX's entry for fnmatch is wrong, this is a bug in uclibc: "If the FNM_PATHNAME flag is set in flags, then a slash character ( '/' ) in string shall be explicitly matched by a slash in pattern; it shall not be matched by either the asterisk or question-mark special characters, nor by a bracket expression" So '*.foo' shouldn't have matched 'bar/a.foo'. Reassigning to embedded since they maintain uclibc. - ferdy submitter: can you please retest with 1.5.3.7-r1? But I do agree with ferdy's assessment that it's a bug in uclibc. Created attachment 139677 [details]
git_1.5.3.7-r1_error_log.txt
hi ,
this is the error message with git 1.5.3.7-r1:
*** t3001-ls-files-others-exclude.sh ***
* FAIL 1: git ls-files --others with various exclude options.
git ls-files --others \
--exclude=\*.6 \
--exclude-per-directory=.gitignore \
--exclude-from=.git/ignore \
>output &&
git diff expect output
* FAIL 2: git ls-files --others with \r\n line endings.
git ls-files --others \
--exclude=\*.6 \
--exclude-per-directory=.gitignore \
--exclude-from=.git/ignore \
>output &&
git diff expect output
* ok 3: git-status honours core.excludesfile
* failed 2 among 3 test(s)
verbose log attached
Cheers
Aurélien
thx. So yeah, uclibc bug I'd say. I'm changing the summary to reflect the actual problem rather than just say git. package was treecleaned long ago |