On 2015/12/07 15:44, Theo de Raadt wrote:
> This bug report totally sucks.
>
> Have you ever heard of ktrace, and if you have, why did you not try
> to reproduce it?
>
> You want us to reproduce it? Why?
>
> > Hi,
> > I ran across an issue with httpd(8) on 5.8-RELEASE & -CURRENT (2/12/2015
> > snapshot) where fetching a .hidden file located on a CD through httpd
> > results in httpd crashing (no core file or error message logged).
> >
> > To reproduce, mount CD in a location which is served by httpd. eg CentOS
> > minimal install iso[1] has a hidden file in the root called .treeinfo
> >
> > Try to fetch http://myweb/.treeinfo
> >
> > Of course this is not a common scenario found in production, I happened
> > to run into it whist taking a shortcut to save time & disk space by
> > mounting the CentOS iso on a virtualbox guest which was running OpenBSD.
> >
> >
> > Sevan
> > [1]
> > http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1503-01.iso
> >
>
It's not that bad a report, it has everything necessary to reproduce,
tested on release and -current so it's obviously not pledge related.
There's one thing to add though, it looks like it happens for any file on
cd9660, not just dotfiles.
Here's ktrace, not that it seems particularly useful.
$ sudo kdump
26600 EMUL "native"
26600 httpd RET kevent 1
26600 httpd CALL clock_gettime(CLOCK_MONOTONIC,0x7f7ffffd9460)
26600 httpd STRU struct timespec { 190190<"Jan 3 05:49:50
1970">.634312834 }
26600 httpd RET clock_gettime 0
26600 httpd CALL kbind(0x7f7ffffd9208,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL getdtablecount()
26600 httpd RET getdtablecount 7
26600 httpd CALL kbind(0x7f7ffffd9208,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL getrlimit(RLIMIT_NOFILE,0x7f7ffffd9260)
26600 httpd STRU struct rlimit { cur=6000, max=6000 }
26600 httpd RET getrlimit 0
26600 httpd CALL kbind(0x7f7ffffd9208,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL
accept4(3,0x7f7ffffd9330,0x7f7ffffd9444,0x4000<SOCK_NONBLOCK>)
26600 httpd STRU struct sockaddr { AF_INET, 127.0.0.1:16821 }
26600 httpd RET accept4 5
26600 httpd CALL kbind(0x7f7ffffd9258,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL getpid()
26600 httpd RET getpid 26600/0x67e8
26600 httpd CALL kbind(0x7f7ffffd9258,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL getsockname(5,0xda798556020,0x7f7ffffd9444)
26600 httpd STRU struct sockaddr { AF_INET, 127.0.0.1:8223 }
26600 httpd RET getsockname 0
26600 httpd CALL kbind(0x7f7ffffd9228,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL clock_gettime(CLOCK_MONOTONIC,0x7f7ffffd92f0)
26600 httpd STRU struct timespec { 190190<"Jan 3 05:49:50
1970">.634549181 }
26600 httpd RET clock_gettime 0
26600 httpd CALL kbind(0x7f7ffffd9228,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL
getsockopt(5,SOL_SOCKET,SO_SNDBUF,0xda7985562d8,0x7f7ffffd92fc)
26600 httpd RET getsockopt 0
26600 httpd CALL kbind(0x7f7ffffd9228,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd91d8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd91d8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd91d8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9228,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9228,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9208,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9228,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd91e8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9228,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd91c8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9158,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kevent(9,0xda79855d000,3,0xda7a840b000,64,0x7f7ffffd9430)
26600 httpd STRU struct timespec { 600 }
26600 httpd RET kevent 2
26600 httpd CALL clock_gettime(CLOCK_MONOTONIC,0x7f7ffffd9460)
26600 httpd STRU struct timespec { 190190<"Jan 3 05:49:50
1970">.634743483 }
26600 httpd RET clock_gettime 0
26600 httpd CALL kbind(0x7f7ffffd9398,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9358,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL ioctl(5,FIONREAD,0x7f7ffffd942c)
26600 httpd RET ioctl 0
26600 httpd CALL kbind(0x7f7ffffd9358,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL
mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
26600 httpd RET mmap 15015959617536/0xda82cf06000
26600 httpd CALL kbind(0x7f7ffffd9358,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL read(5,0xda82cf06400,0x59)
26600 httpd GIO fd 5 read 89 bytes
"GET /z/.treeinfo HTTP/1.1\r
Host: localhost:8223\r
User-Agent: curl/7.45.0\r
Accept: */*\r
\r
"
26600 httpd RET read 89/0x59
26600 httpd CALL clock_gettime(CLOCK_MONOTONIC,0x7f7ffffd93f0)
26600 httpd STRU struct timespec { 190190<"Jan 3 05:49:50
1970">.634802011 }
26600 httpd RET clock_gettime 0
26600 httpd CALL kbind(0x7f7ffffd9358,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9308,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9308,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9308,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9358,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9358,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9358,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL
mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
26600 httpd RET mmap 15013927677952/0xda7b3d37000
26600 httpd CALL kbind(0x7f7ffffd8d28,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd8d68,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd8928,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd87e8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd87e8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL access(0x7f7ffffd89f0,0x4<R_OK>)
26600 httpd NAMI "/htdocs/z/.treeinfo"
26600 httpd RET access 0
26600 httpd CALL kbind(0x7f7ffffd87e8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL stat(0x7f7ffffd89f0,0x7f7ffffd88c0)
26600 httpd NAMI "/htdocs/z/.treeinfo"
26600 httpd STRU struct stat { dev=3586, ino=61240, mode=-rw-r--r-- ,
nlink=1, uid=0<"root">, gid=0<"wheel">, rdev=0, atime=1427843425<"Apr 1
00:10:25 2015">, mtime=1427495808<"Mar 27 22:36:48 2015">,
ctime=1427843425<"Apr 1 00:10:25 2015">, size=1109, blocks=2, blksize=2048,
flags=0x0, gen=0x0 }
26600 httpd RET stat 0
26600 httpd CALL kbind(0x7f7ffffd8798,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL open(0x7f7ffffd89f0,0<O_RDONLY>)
26600 httpd NAMI "/htdocs/z/.treeinfo"
26600 httpd RET open 6
26600 httpd CALL kbind(0x7f7ffffd8798,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL gettimeofday(0x7f7ffffd8830,0)
26600 httpd STRU struct timeval { 1449533415<"Dec 8 00:10:15
2015">.091706 }
26600 httpd RET gettimeofday 0
26600 httpd CALL gettimeofday(0x7f7ffffd8610,0)
26600 httpd STRU struct timeval { 1449533415<"Dec 8 00:10:15
2015">.091712 }
26600 httpd RET gettimeofday 0
26600 httpd CALL kbind(0x7f7ffffd8578,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd8558,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd8578,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd8548,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd8578,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd8578,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd8498,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd8428,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd8628,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL
mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
26600 httpd RET mmap 15015584440320/0xda81693a000
26600 httpd CALL
mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
26600 httpd RET mmap 15011937607680/0xda73d356000
26600 httpd CALL kbind(0x7f7ffffd86a8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL
mmap(0,0x5000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
26600 httpd RET mmap 15013230739456/0xda78a490000
26600 httpd CALL
mmap(0,0xb000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
26600 httpd RET mmap 15015425835008/0xda80d1f8000
26600 httpd CALL issetugid()
26600 httpd RET issetugid 0
26600 httpd CALL open(0x7f7ffffd82a0,0<O_RDONLY>)
26600 httpd NAMI "/usr/share/zoneinfo/GMT"
26600 httpd RET open -1 errno 2 No such file or directory
26600 httpd CALL issetugid()
26600 httpd RET issetugid 0
26600 httpd CALL open(0x7f7ffffd81f0,0<O_RDONLY>)
26600 httpd NAMI "/usr/share/zoneinfo/posixrules"
26600 httpd RET open -1 errno 2 No such file or directory
26600 httpd CALL gettimeofday(0x7f7ffffd87b0,0)
26600 httpd STRU struct timeval { 1449533415<"Dec 8 00:10:15
2015">.091925 }
26600 httpd RET gettimeofday 0
26600 httpd CALL kbind(0x7f7ffffd86e8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd86b8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd8798,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd84c8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd82e8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd93a8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9378,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL write(5,0xda79855b800,0xd3)
26600 httpd GIO fd 5 wrote 211 bytes
"HTTP/1.1 200 OK\r
Connection: keep-alive\r
Content-Length: 1109\r
Content-Type: application/octet-stream\r
Date: Tue, 08 Dec 2015 00:10:15 GMT\r
Last-Modified: Fri, 27 Mar 2015 22:36:48 GMT\r
Server: OpenBSD httpd\r
\r
"
26600 httpd RET write 211/0xd3
26600 httpd CALL clock_gettime(CLOCK_MONOTONIC,0x7f7ffffd9430)
26600 httpd STRU struct timespec { 190190<"Jan 3 05:49:50
1970">.635312700 }
26600 httpd RET clock_gettime 0
26600 httpd CALL kevent(9,0xda79855d000,7,0xda7a840b000,64,0x7f7ffffd9430)
26600 httpd STRU struct timespec { 600 }
26600 httpd RET kevent 1
26600 httpd CALL kbind(0x7f7ffffd9368,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL close(3)
26600 httpd RET close 0
26600 httpd CALL kbind(0x7f7ffffd9398,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9378,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9358,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9398,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL close(6)
26600 httpd RET close 0
26600 httpd CALL close(5)
26600 httpd RET close 0
26600 httpd CALL kbind(0x7f7ffffd9398,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd93c8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9448,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd9418,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL nanosleep(0x7f7ffffd94e0,0)
26600 httpd STRU struct timespec { 0.000200000 }
26600 httpd RET nanosleep 0
26600 httpd CALL kbind(0x7f7ffffd93f8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL kbind(0x7f7ffffd93d8,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd RET kbind 0
26600 httpd CALL close(4)
26600 httpd RET close 0
26600 httpd CALL close(7)
26600 httpd RET close 0
26600 httpd CALL getpid()
26600 httpd RET getpid 26600/0x67e8
26600 httpd CALL write(2,0x7f7ffffd8f00,0x1a)
26600 httpd GIO fd 2 wrote 26 bytes
"server exiting, pid 26600
"
26600 httpd RET write 26/0x1a
26600 httpd CALL kbind(0x7f7ffffd9448,0x18,0xd6de5e5b8cf9d5cf)
26600 httpd PSIG SIGTERM caught handler=0xda7c17a33e0 mask=0<>
26600 httpd RET kbind 0
26600 httpd CALL sigreturn(0x7f7ffffd8fa0)
26600 httpd RET sigreturn JUSTRETURN
26600 httpd CALL exit(0)