Bug 7292

Summary: ipsec-tools-0.8.2: racoon segfaults on x86_64 arch
Product: uClibc Reporter: Chris Frederick <cdf123>
Component: NetworkingAssignee: unassigned
Status: RESOLVED INVALID    
Severity: major CC: abhisheietk, uclibc-cvs
Priority: P5    
Version: 0.9.33.2   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Host: x64 Target: x64
Build: x64
Attachments: buildroot-2014-05 config file

Description Chris Frederick 2014-08-04 22:11:24 UTC
All other applications work fine, and I have a "2014-5" release running almost identical config on x86 that works fine.  It seems to die right after getting timezone info.  I've tried using the built-in time options in make menuconfig, manually setting, and even removing timezone config files (/etc/TZ and /etc/localtime).  It's always immediately after checking these files that the segfault occurs.

== Output of "strace racoon -d -d -d" ==
...
connect(3, {sa_family=AF_LOCAL, sun_path="/dev/log"}, 16) = 0
(a whole bunch of "brk(0x0x67d000)" to "brk(0x694000)")
brk(0x694000)                           = 0x694000
time([1407189506])                      = 1407189506
open("/etc/TZ", O_RDONLY)               = 4
read(4, "# America/Chicago\nCST6CDT,M3.2.0"..., 68) = 41
close(4)                                = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0} ---
+++ killed by SIGSEGV +++
Segmentation fault


== dmesg | tail ==
racoon[1588]: segfault at 0 ip 0000031fd77062d7 sp 000003ffd71c0be8 error 4 in libuClibc-0.9.34-git.so[31fd76dd000+52000]
grsec: From 192.168.100.2: Segmentation fault occurred at            (nil) in /usr/sbin/racoon[racoon:1588] uid/euid:0/0 gid/egid:0/0, parent /bin/bash[sh:1564] uid/euid:0/0 gid/egid:0/0
grsec: From 192.168.100.2: denied resource overstep by requesting 4096 for RLIMIT_CORE against limit 0 for /usr/sbin/racoon[racoon:1588] uid/euid:0/0 gid/egid:0/0, parent /bin/bash[sh:1564] uid/euid:0/0 gid/egid:0/0


I've tried rebuilding with 0.9.32.x, 0.9.33.x, and "daily snapshot", all three have the same segfault.
Comment 1 Bernhard Reutner-Fischer 2014-12-12 10:12:35 UTC
What is the exact content of your /etc/TZ?
Please attach your .config
Can you provide a smallish, standalone reproducer?
Comment 2 Chris Frederick 2014-12-12 20:50:27 UTC
Created attachment 5798 [details]
buildroot-2014-05 config file

Here's the config for the 64bit build.

How smallish do you need the reproducer to be?  I have a rootfs.cpio.xz of 12M.  Also I build the kernel outside of buildroot, usually grsecurity patched.  I can give you a patched and unpatched image, they are both around 4M.

I've moved on with a 32bit build, so the rootfs is a new build that doesn't have the /etc/TZ or /etc/localtime files in it, but it still produces the same error.  I would like to get a full 64bit build working.
Comment 3 Bernhard Reutner-Fischer 2014-12-15 13:02:46 UTC
ipsec-tools-0.8.2 racoon with the racoon.conf.sample works for me:
time([1418647653])                      = 1418647653
open("/etc/TZ", O_RDONLY)               = -1 ENOENT (No such file or directory)
open("/etc/localtime", O_RDONLY)        = 4
read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\6\0\0\0\0"..., 68) = 68
lseek(4, -68, SEEK_END)                 = 2143
read(4, "\t\0\0\34 \1\4\0\0\16\20\0\tLMT\0CEST\0CET\0\0\0\0\1\1\1"..., 68) = 68
close(4)                                = 0
sendto(3, "<30>Dec 15 13:47:33 racoon: INFO"..., 110, MSG_NOSIGNAL, NULL, 0) = 110
fork()                                  = 7571
exit_group(0)                           = ?

AFAICS the segfault you are seeing comes from your grsecurity patch and is not a uClibc bug.