Warning: DOMDocument::loadXML() [function.DOMDocument-loadXML]: PCDATA invalid Char value 12 in Entity, line: 32 in /srv/lkml.org/scripts/getmail.php on line 216
Warning: XSLTProcessor::transformToXml() expects parameter 1 to be object, boolean given in /srv/lkml.org/scripts/getmail.php on line 219
This message generated a parse failure. Raw output follows here. Please use 'back' to navigate.
From devnull@lkml.org Fri Jan 9 23:10:57 2009
Received: from nic.funet.fi (nic.funet.fi [128.214.248.6]) by herbie.ucs.indiana.edu (8.7.5/8.6.12) with ESMTP id FAA19934 for ; Thu, 27 Feb 1997 05:07:54 -0500 (EST)
Received: from vger.rutgers.edu ([128.6.190.2]) by nic.funet.fi with ESMTP id <56340-20341>; Thu, 27 Feb 1997 12:14:09 +0200
Received: by vger.rutgers.edu id <213022-267>; Thu, 27 Feb 1997 05:06:51 -0500
To: Linux kernel
Subject: GPF with getdents on UMSDOS directory (2.0.27)
Date: Thu, 27 Feb 1997 10:07:02 +0000
From: Giuliano Procida
Message-Id:
Sender: owner-linux-kernel@vger.rutgers.edu
Precedence: bulk
Hi.
I managed to generate a rather broken umsdos directory, a copy of the
files are in ftp://pootle.magd.cam.ac.uk/archive/baddir.zip . This
directory caused any process scanning the directory 'BAD' to segfault,
on a Cyrix 6x86 PCI machine and on a ISA 486 machine, both running
versions of 2.0.27.
This is my first 'oops' post. I hope this problem will be repeatable
on other machines and I haven't left out any important information. It
may be that getdents is not validating its input carefully enough, but
I don't have much of a clue about checking this.
Giuliano Procida.
Trace follows.
Here is a strace of 'ls BAD':
execve("/bin/ls", ["ls", "BAD"], [/* 16 vars */]) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40007000
mprotect(0x40000000, 20301, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mprotect(0x8048000, 47055, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
stat("/etc/ld.so.cache", {st_mode=S_IFREG|0644, st_size=4065, ...}) = 0
mprotect(0x40009000, 528099, PROT_READ|PROT_EXEC) = 0
mprotect(0x40000000, 20301, PROT_READ|PROT_EXEC) = 0
personality(PER_LINUX) = 0
geteuid() = 0
getuid() = 0
getgid() = 0
getegid() = 0
brk(0x8054cd4) = 0x8054cd4
brk(0x8055000) = 0x8055000
time(NULL) = 856982493
ioctl(1, TCGETS, 0xbffffd58) = -1 EINVAL (Invalid argument)
ioctl(1, TIOCGWINSZ, 0xbffffd90) = -1 EINVAL (Invalid argument)
brk(0x8058000) = 0x8058000
lstat("BAD", {st_mode=S_IFDIR|0755, st_size=10240, ...}) = 0
stat("BAD", {st_mode=S_IFDIR|0755, st_size=10240, ...}) = 0
open("BAD", O_RDONLY) = 3
fcntl(3, F_SETFD, FD_CLOEXEC) = 0
getdents(3, /* 103 entries */, 2048) = 2044
brk(0x805d000) = 0x805d000
getdents(3,
+++ killed by SIGSEGV +++
the gpf details (from another failure):
general protection: 0000
CPU: 0
EIP: 0010:[<018296b9>]
EFLAGS: 00010206
eax: a02dfa2d ebx: 00a76c20 ecx: 0000000c edx: 00a76c18
esi: 00a76c1c edi: 00004c80 ebp: 0045e9c0 esp: 00a76bc8
ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
Process ls (pid: 5124, process nr: 38, stackpage=00a76000)
Stack: a02dfa2d 0182828a a02dfa2d 00a76c20 0000000c 00a76c18 00a76c1c 00a76d60
000000dc 00a76c1c 0000000e 0045e9c0 00214d90 bffffdb4 00a76d3c 00a76c1c
00004800 003628b8 00000000 002da8b8 00c2caa8 00000000 5f232323 237d2379
Trace: 182828a
Trace: 123e8a <__brelse+22/44>
Trace: 181603e
Trace: 1819a4e
Trace: 1819d40
Trace: 182be00
Trace: 123f58
Trace: 123e8a <__brelse+22/44>
Trace: 12bec4
Trace: 12bfff
Trace: 12bec4
Trace: 10a630
Code: incw 0x7c(%eax)
Code: pushl %edx
Code: pushl %ecx
Code: pushl %ebx
Code: pushl %eax
Code: call ffff3deb <_EIP+ffff3deb>
Code: addl $0x10,%esp
Code: popl %ebx
Code: ret
Code: nop
Code: pushl %ebx