ID |
Date |
Icon |
Author |
Author Email |
Category |
OS |
ELOG Version |
Subject |
66046
|
Fri Nov 14 08:48:05 2008 |
| Niklas | niklas@hoglund.pp.se | Bug report | Linux | 2.7.3 | Re: deadc0de |
Niklas wrote: |
Stefan Ritt wrote: |
Niklas wrote: |
my ELOG sometimes dies with "deadc0de", do I have too large ELOG config or logbook? Or is it simply a bug?
What can I do to solve this problem? "ulimit"? Or some trace output from elog?
|
This seems an internal memory allocation problem. Can you reproduce the error? Can you reproduce it with the minimal configuration file coming with the distribution? If you know how to run a program inside the debugger, you can send me a stack trace when the problem occurs and I can check it.
|
I can produce the problem, but it is related to the information in the logbook which I cannot share...
Configuration:
[global]
port = 8000
Main Tab = Home
Password file = elogpasswd.txt
Admin user = eniklas
Self register = 0
Welcome Title = <h3>ENIKLAS ELOG<h3>
Relative redirection = 1
Entries per page = 1000
Display mode = summary
Suppress Email to users = 1
Summary lines = 0
[General]
Theme = default
Attributes = Type, Subject
Options Type = Configuration, Information, Documents
Extendable Options = Type
Required Attributes = Type
Page Title = ELOG - $subject
Reverse sort = 0
Quick filter = Date, Type
[Testing]
Theme = default
Attributes = Type, Subject
Options Type = Configuration, Information, Documents
Extendable Options = Type
Required Attributes = Type
Page Title = ELOG - $subject
Reverse sort = 0
Quick filter = Date, Type
I know nothing about gdb. Here are my stumbling attempts of using it, please tell me how to use gdb:
niklas@bba:~$ gdb -d /home/eniklas/Project/Niho/elog/bin/elog-2.7.5 --args /home/eniklas/Project/Niho/elog/bin/installation/usr/local/sbin/elogd -c /home/eniklas/Project/Niho/elog/bin/installation/usr/local/elog/elogd.cfg
GNU gdb 6.6-debian
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
(gdb) run
Starting program: /home/eniklas/Project/Niho/elog/bin/installation/usr/local/sbin/elogd -c /home/eniklas/Project/Niho/elog/bin/installation/usr/local/elog/elogd.cfg
elogd 2.7.5 built Oct 22 2008, 13:37:35 revision 2130
FCKedit detected
Indexing logbooks ... done
Server listening on port 8000 ...
elogd: src/elogd.c:714: xfree: Assertion `*((unsigned int *) (temp + old_size)) == 0xdeadc0de' failed.
Program received signal SIGABRT, Aborted.
0xffffe410 in __kernel_vsyscall ()
(gdb) bt
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7e3e875 in raise () from /lib/tls/i686/cmov/libc.so.6
#2 0xb7e40201 in abort () from /lib/tls/i686/cmov/libc.so.6
#3 0xb7e37b6e in __assert_fail () from /lib/tls/i686/cmov/libc.so.6
#4 0x0804b0b6 in xfree (pointer=0x9176298) at src/elogd.c:714
#5 0x08058903 in el_submit (lbs=0x90f8090, message_id=5, bedit=1, date=0xbfbe054c "<keep>", attr_name=0x824e1e0,
attr_value=0xbfbb2db8, n_attr=2,
text=0x8211140 "<table height=\"694\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"674\" style=\"margin-left: 72pt; border-collapse: collapse;\" class=\"MsoNormalTable\">\r\n <tbody>\r\n <tr style=\"\">\r\n "...,
in_reply_to=0xbfbe04ac "<keep>", reply_to=0xbfbdf678 "<keep>", encoding=0xbfbe04fc "HTML", afilename=0xbfbd77a8,
mark_original=1, locked_by=0x0) at src/elogd.c:4819
#6 0x0809f721 in submit_elog (lbs=0x90f8090) at src/elogd.c:21934
#7 0x080b04e9 in interprete (lbook=0x90f8090 "Testing", path=0x80cdc60 "") at src/elogd.c:25816
#8 0x080b2a53 in decode_post (logbook=0xbfc0a1a0 "Testing", lbs=0x90f8090, string=0x9166614 "",
boundary=0xbfc0a3a0 '-' <repeats 27 times>, "196291262324084", length=134670) at src/elogd.c:26382
#9 0x080b54fa in process_http_request (
request=0x9145548 "POST /Testing/ HTTP/1.1\r\nHost: bba.eld.ki.sw.home.se:8000\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\r\nAccept: text/html,application/xht"..., i_conn=0)
at src/elogd.c:26936
#10 0x080b7f0f in server_loop () at src/elogd.c:27746
#11 0x080ba36b in main (argc=3, argv=0xbfc0b924) at src/elogd.c:28797
(gdb) bt 100
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7e3e875 in raise () from /lib/tls/i686/cmov/libc.so.6
#2 0xb7e40201 in abort () from /lib/tls/i686/cmov/libc.so.6
#3 0xb7e37b6e in __assert_fail () from /lib/tls/i686/cmov/libc.so.6
#4 0x0804b0b6 in xfree (pointer=0x9176298) at src/elogd.c:714
#5 0x08058903 in el_submit (lbs=0x90f8090, message_id=5, bedit=1, date=0xbfbe054c "<keep>", attr_name=0x824e1e0,
attr_value=0xbfbb2db8, n_attr=2,
text=0x8211140 "<table height=\"694\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"674\" style=\"margin-left: 72pt; border-collapse: collapse;\" class=\"MsoNormalTable\">\r\n <tbody>\r\n <tr style=\"\">\r\n "...,
in_reply_to=0xbfbe04ac "<keep>", reply_to=0xbfbdf678 "<keep>", encoding=0xbfbe04fc "HTML", afilename=0xbfbd77a8,
mark_original=1, locked_by=0x0) at src/elogd.c:4819
#6 0x0809f721 in submit_elog (lbs=0x90f8090) at src/elogd.c:21934
#7 0x080b04e9 in interprete (lbook=0x90f8090 "Testing", path=0x80cdc60 "") at src/elogd.c:25816
#8 0x080b2a53 in decode_post (logbook=0xbfc0a1a0 "Testing", lbs=0x90f8090, string=0x9166614 "",
boundary=0xbfc0a3a0 '-' <repeats 27 times>, "196291262324084", length=134670) at src/elogd.c:26382
#9 0x080b54fa in process_http_request (
request=0x9145548 "POST /Testing/ HTTP/1.1\r\nHost: bba.eld.ki.sw.home.se:8000\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\r\nAccept: text/html,application/xht"..., i_conn=0)
at src/elogd.c:26936
#10 0x080b7f0f in server_loop () at src/elogd.c:27746
#11 0x080ba36b in main (argc=3, argv=0xbfc0b924) at src/elogd.c:28797
(gdb) f 4
#4 0x0804b0b6 in xfree (pointer=0x9176298) at src/elogd.c:714
714 assert(*((unsigned int *) (temp + old_size)) == 0xdeadc0de);
(gdb) info 4
Undefined info command: "4". Try "help info".
(gdb) up
#5 0x08058903 in el_submit (lbs=0x90f8090, message_id=5, bedit=1, date=0xbfbe054c "<keep>", attr_name=0x824e1e0,
attr_value=0xbfbb2db8, n_attr=2,
text=0x8211140 "<table height=\"694\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"674\" style=\"margin-left: 72pt; border-collapse: collapse;\" class=\"MsoNormalTable\">\r\n <tbody>\r\n <tr style=\"\">\r\n "...,
in_reply_to=0xbfbe04ac "<keep>", reply_to=0xbfbdf678 "<keep>", encoding=0xbfbe04fc "HTML", afilename=0xbfbd77a8,
mark_original=1, locked_by=0x0) at src/elogd.c:4819
4819 xfree(message);
(gdb) info 4
Undefined info command: "4". Try "help info".
(gdb) info f
Stack level 5, frame at 0xbfb623c0:
eip = 0x8058903 in el_submit (src/elogd.c:4819); saved eip 0x809f721
called by frame at 0xbfbe05b0, caller of frame at 0xbfb135f0
source language c.
Arglist at 0xbfb135f8, args: lbs=0x90f8090, message_id=5, bedit=1, date=0xbfbe054c "<keep>", attr_name=0x824e1e0,
attr_value=0xbfbb2db8, n_attr=2,
text=0x8211140 "<table height=\"694\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"674\" style=\"margin-left: 72pt; border-collapse: collapse;\" class=\"MsoNormalTable\">\r\n <tbody>\r\n <tr style=\"\">\r\n "...,
in_reply_to=0xbfbe04ac "<keep>", reply_to=0xbfbdf678 "<keep>", encoding=0xbfbe04fc "HTML", afilename=0xbfbd77a8,
mark_original=1, locked_by=0x0
Locals at 0xbfb135f8, Previous frame's sp is 0xbfb623c0
Saved registers:
ebx at 0xbfb623b0, esi at 0xbfb623b4, edi at 0xbfb623b8, eip at 0xbfb623bc
(gdb) bt
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7e3e875 in raise () from /lib/tls/i686/cmov/libc.so.6
#2 0xb7e40201 in abort () from /lib/tls/i686/cmov/libc.so.6
#3 0xb7e37b6e in __assert_fail () from /lib/tls/i686/cmov/libc.so.6
#4 0x0804b0b6 in xfree (pointer=0x9176298) at src/elogd.c:714
#5 0x08058903 in el_submit (lbs=0x90f8090, message_id=5, bedit=1, date=0xbfbe054c "<keep>", attr_name=0x824e1e0,
attr_value=0xbfbb2db8, n_attr=2,
text=0x8211140 "<table height=\"694\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"674\" style=\"margin-left: 72pt; border-collapse: collapse;\" class=\"MsoNormalTable\">\r\n <tbody>\r\n <tr style=\"\">\r\n "...,
in_reply_to=0xbfbe04ac "<keep>", reply_to=0xbfbdf678 "<keep>", encoding=0xbfbe04fc "HTML", afilename=0xbfbd77a8,
mark_original=1, locked_by=0x0) at src/elogd.c:4819
#6 0x0809f721 in submit_elog (lbs=0x90f8090) at src/elogd.c:21934
#7 0x080b04e9 in interprete (lbook=0x90f8090 "Testing", path=0x80cdc60 "") at src/elogd.c:25816
#8 0x080b2a53 in decode_post (logbook=0xbfc0a1a0 "Testing", lbs=0x90f8090, string=0x9166614 "",
boundary=0xbfc0a3a0 '-' <repeats 27 times>, "196291262324084", length=134670) at src/elogd.c:26382
#9 0x080b54fa in process_http_request (
request=0x9145548 "POST /Testing/ HTTP/1.1\r\nHost: bba.eld.ki.sw.home.se:8000\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\r\nAccept: text/html,application/xht"..., i_conn=0)
at src/elogd.c:26936
#10 0x080b7f0f in server_loop () at src/elogd.c:27746
#11 0x080ba36b in main (argc=3, argv=0xbfc0b924) at src/elogd.c:28797
(gdb) info f 4
Stack frame at 0xbfb135f0:
eip = 0x804b0b6 in xfree (src/elogd.c:714); saved eip 0x8058903
called by frame at 0xbfb623c0, caller of frame at 0xbfb135c0
source language c.
Arglist at 0xbfb135bc, args: pointer=0x9176298
Locals at 0xbfb135bc, Previous frame's sp is 0xbfb135f0
Saved registers:
eip at 0xbfb135ec
(gdb) info f 5
Stack frame at 0xbfb623c0:
eip = 0x8058903 in el_submit (src/elogd.c:4819); saved eip 0x809f721
called by frame at 0xbfbe05b0, caller of frame at 0xbfb135f0
source language c.
Arglist at 0xbfb135f8, args: lbs=0x90f8090, message_id=5, bedit=1, date=0xbfbe054c "<keep>", attr_name=0x824e1e0,
attr_value=0xbfbb2db8, n_attr=2,
text=0x8211140 "<table height=\"694\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"674\" style=\"margin-left: 72pt; border-collapse: collapse;\" class=\"MsoNormalTable\">\r\n <tbody>\r\n <tr style=\"\">\r\n "...,
in_reply_to=0xbfbe04ac "<keep>", reply_to=0xbfbdf678 "<keep>", encoding=0xbfbe04fc "HTML", afilename=0xbfbd77a8,
mark_original=1, locked_by=0x0
Locals at 0xbfb135f8, Previous frame's sp is 0xbfb623c0
Saved registers:
ebx at 0xbfb623b0, esi at 0xbfb623b4, edi at 0xbfb623b8, eip at 0xbfb623bc
(gdb)
|
The above "deadc0de" came from when I submitted an entry.
Where is one (note that it is another elogd version), I search all logbook for "pure .* ring" in subject in "Mode: Raw".
root@bba:/var/log# gdb --args /usr/sbin/elogd -f /var/run/elogd.pid -c /etc/elog.conf
GNU gdb 6.6-debian
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
(gdb) run
Starting program: /usr/sbin/elogd -f /var/run/elogd.pid -c /etc/elog.conf
elogd 2.7.4 built Aug 1 2008, 14:09:57 revision 2111
File "/var/run/elogd.pid" exists, using "/var/run/elogd.pid.8080" instead.
Refuse to overwrite existing file "/var/run/elogd.pid.8080".
Program exited with code 01.
(gdb) run
Starting program: /usr/sbin/elogd -f /var/run/elogd.pid -c /etc/elog.conf
elogd 2.7.4 built Aug 1 2008, 14:09:57 revision 2111
File "/var/run/elogd.pid" exists, using "/var/run/elogd.pid.8080" instead.
Falling back to default group "elog"
Falling back to default user "elog"
FCKedit detected
Falling back to default group "elog"
Falling back to default user "elog"
Cannot restore original GID/UID.
Cannot remove pidfile "/var/run/elogd.pid.8080"
; Permission denied
Indexing logbooks ... done
Server listening on port 8080 ...
elogd: src/elogd.c:686: xrealloc: Assertion `*((unsigned int *) (temp + old_size)) == 0xdeadc0de' failed.
Program received signal SIGABRT, Aborted.
0xffffe410 in __kernel_vsyscall ()
(gdb) bt
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7dd0875 in raise () from /lib/tls/i686/cmov/libc.so.6
#2 0xb7dd2201 in abort () from /lib/tls/i686/cmov/libc.so.6
#3 0xb7dc9b6e in __assert_fail () from /lib/tls/i686/cmov/libc.so.6
#4 0x0804afbe in xrealloc (pointer=0x92a6788, bytes=400000) at src/elogd.c:686
#5 0x0805b72e in rsputs (str=0x80ccbf2 "\r\n") at src/elogd.c:5585
#6 0x0809702b in show_elog_list (lbs=0x916ca00, past_n=0, last_n=0, page_n=-1, default_page=1, info=0x0) at src/elogd.c:20256
#7 0x080b0cdb in interprete (lbook=0xbfa960d0 "MB2.0_Nk_resiliency_without_ro", path=0xbfa70774 "") at src/elogd.c:25955
#8 0x080b0f11 in decode_get (logbook=0xbfa960d0 "MB2.0_Nk_resiliency_without_ro", string=0xbfa95b0f "?mode")
at src/elogd.c:25995
#9 0x080b455e in process_http_request (
request=0x912c8e0 "GET /MB2.0_Nk_resiliency_without_ro/?mode=Raw&reverse=0&all=1&npp=1000&Subject=pure+.*+ring",
i_conn=0) at src/elogd.c:26752
#10 0x080b7244 in server_loop () at src/elogd.c:27584
#11 0x080b96a0 in main (argc=5, argv=0xbfa97854) at src/elogd.c:28635 |
66063
|
Fri Nov 21 09:12:31 2008 |
| Niklas | niklas@hoglund.pp.se | Question | | | Quick filter in this forum, how to do "Text" search? | Hi,
In this forum there is a quickfilter for text search. How do I get that into my elog?
When I add:
Quick filter = Date, Type, Text
into config file. I get:
Error: Attribute "Text" for quick filter not found
How do I add the quick filter text search box?
|
66065
|
Fri Nov 21 10:53:09 2008 |
| Niklas | niklas@hoglund.pp.se | Bug report | Linux | 2.7.5 2142 | Elogd crashes with: *** stack smashing detected *** | Hi,
elogd sometimes crashes when there are large cookies. Or I'd guess it has something to do with the cookies, elogd crashed over and over again until I cleaned out cookies and authenticated sessions in firefox, then it stopped.
When I run "elogd -v" in gdb, and someone does:
GET / HTTP/1.1
Host: bba.eld.ki.sw.home.se:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; sv-SE; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: urem=0; TWIKISID=ecaa5a39e8446a27ec5a34bcbb9d4bcb; unm=erirone; upwd=c3w5MTg1; ipplanNoAuth=yes; SMSESSION=oKvAAv/J9WoCo6KoVdEJkhxz44G10x7TXigffOaAjLrSf0iOFrRJq97oWl32/UBQMvFslc4BgxN/VCz2K7/IRaKdFgmU4CHq/1UUv2RvdHB2HUbYbph+JgKUpAG+kN6Cc4BTwRWhmemUNhONXMRJUCfa6Tq9/osID2AT1wBFInFNww2xVmJPDSi1oltxtT345RgdGQIZbHzG2HBi1GijpiaD+4FI3WLLRzJOj3Art92BLlVDWSaPxKSdSZgVNfRSw33SupUqwD0Is2pc+ufKn4cg0azyOTLNDFOl0U5RI7K9AVgYM0NBsfDoEyBfK8pYIZTMqFFQsnWAdwYz9M2RLDBKyfMXdfGb3rrnOdPH0zvvkkoT01pZObI7dSqHD7IXLbjN/8Pt0O4eo5/SSQ7uKRGpBip0pKe3mxZYI4hsJejYwVBFegovS4qSUiL8UGDhG+lB20WEmDwIQfTG2ZtpckLC6t1CNfa5eFLWCOm+yESU+3AmP4zdJLJSqbznEl2SQTePP5NzI1R5WTAvBbsgX+N9Ab1g0Yui/i042qWNQPLg3/5c/WCHqzImi45+ov42C4mj9OcjGcAf7kaWBMwfdwfChREWkSpMrC2RRndlw+iVbShSK7lVfoCvIqk4491uQBT3bz3S0e56Vin+Oj8qbmEA/5Hp1x9b80qTRy/8lj7KLgbhV60BBvX7ahOkrIFCSjTi8y87K/u4b3KQHesNZgA7SyWRuT+vY4XCb8ANVl8eIui7vK5NNSiFFqLZ1IoeFaVu+gS/hhDu3m/rmK2t5iR2YW/aKmnGTVQsPPy/POVY/zXWgf7c6ps/sSMwTk9sy5Yr8yGYBSUrtZkn1/gK0wpqlRCcjuG991sfgr/UKbhK1dU0rI9E9PBPhvLQpjUHT49AAHL9A9S3FOs66CAFsoVo00WNqKuZcmLpEgXdpbW+mj43tiNugCT98Ec8+Iq0rZYKhYdqFu9AUOdJVXk2udBx9VkOVcRYteFICtwz3fvR02KCU3Sn3a0HKZ4wWOujUnH4nThZGVlUNyg/Of+9GKXY4mxqv/5ocEkO4q8xmAP/OJHrvgJ42kTAjaVgjlSG3b5iJTcu4jvqfC/yKU88Sw==
*** stack smashing detected ***: /root/elogd_2.7.5_2142 terminated
*** stack smashing detected ***: /root/elogd_2.7.5_2142 terminated
Program received signal SIGABRT, Aborted.
0xffffe410 in __kernel_vsyscall ()
(gdb) bt
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7dad875 in raise () from /lib/tls/i686/cmov/libc.so.6
#2 0xb7daf201 in abort () from /lib/tls/i686/cmov/libc.so.6
#3 0xb7de4e5c in ?? () from /lib/tls/i686/cmov/libc.so.6
#4 0x00000000 in ?? ()
(gdb)
|
66068
|
Fri Nov 21 16:02:10 2008 |
| Niklas | niklas@hoglund.pp.se | Bug report | Linux | 2.7.5 2142 | Re: Elogd crashes with: *** stack smashing detected *** |
Niklas wrote: |
Hi,
elogd sometimes crashes when there are large cookies. Or I'd guess it has something to do with the cookies, elogd crashed over and over again until I cleaned out cookies and authenticated sessions in firefox, then it stopped.
When I run "elogd -v" in gdb, and someone does:
GET / HTTP/1.1
Host: bba.eld.ki.sw.home.se:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; sv-SE; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: urem=0; TWIKISID=ecaa5a39e8446a27ec5a34bcbb9d4bcb; unm=erirone; upwd=c3w5MTg1; ipplanNoAuth=yes; SMSESSION=oKvAAv/J9WoCo6KoVdEJkhxz44G10x7TXigffOaAjLrSf0iOFrRJq97oWl32/UBQMvFslc4BgxN/VCz2K7/IRaKdFgmU4CHq/1UUv2RvdHB2HUbYbph+JgKUpAG+kN6Cc4BTwRWhmemUNhONXMRJUCfa6Tq9/osID2AT1wBFInFNww2xVmJPDSi1oltxtT345RgdGQIZbHzG2HBi1GijpiaD+4FI3WLLRzJOj3Art92BLlVDWSaPxKSdSZgVNfRSw33SupUqwD0Is2pc+ufKn4cg0azyOTLNDFOl0U5RI7K9AVgYM0NBsfDoEyBfK8pYIZTMqFFQsnWAdwYz9M2RLDBKyfMXdfGb3rrnOdPH0zvvkkoT01pZObI7dSqHD7IXLbjN/8Pt0O4eo5/SSQ7uKRGpBip0pKe3mxZYI4hsJejYwVBFegovS4qSUiL8UGDhG+lB20WEmDwIQfTG2ZtpckLC6t1CNfa5eFLWCOm+yESU+3AmP4zdJLJSqbznEl2SQTePP5NzI1R5WTAvBbsgX+N9Ab1g0Yui/i042qWNQPLg3/5c/WCHqzImi45+ov42C4mj9OcjGcAf7kaWBMwfdwfChREWkSpMrC2RRndlw+iVbShSK7lVfoCvIqk4491uQBT3bz3S0e56Vin+Oj8qbmEA/5Hp1x9b80qTRy/8lj7KLgbhV60BBvX7ahOkrIFCSjTi8y87K/u4b3KQHesNZgA7SyWRuT+vY4XCb8ANVl8eIui7vK5NNSiFFqLZ1IoeFaVu+gS/hhDu3m/rmK2t5iR2YW/aKmnGTVQsPPy/POVY/zXWgf7c6ps/sSMwTk9sy5Yr8yGYBSUrtZkn1/gK0wpqlRCcjuG991sfgr/UKbhK1dU0rI9E9PBPhvLQpjUHT49AAHL9A9S3FOs66CAFsoVo00WNqKuZcmLpEgXdpbW+mj43tiNugCT98Ec8+Iq0rZYKhYdqFu9AUOdJVXk2udBx9VkOVcRYteFICtwz3fvR02KCU3Sn3a0HKZ4wWOujUnH4nThZGVlUNyg/Of+9GKXY4mxqv/5ocEkO4q8xmAP/OJHrvgJ42kTAjaVgjlSG3b5iJTcu4jvqfC/yKU88Sw==
*** stack smashing detected ***: /root/elogd_2.7.5_2142 terminated
*** stack smashing detected ***: /root/elogd_2.7.5_2142 terminated
Program received signal SIGABRT, Aborted.
0xffffe410 in __kernel_vsyscall ()
(gdb) bt
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7dad875 in raise () from /lib/tls/i686/cmov/libc.so.6
#2 0xb7daf201 in abort () from /lib/tls/i686/cmov/libc.so.6
#3 0xb7de4e5c in ?? () from /lib/tls/i686/cmov/libc.so.6
#4 0x00000000 in ?? ()
(gdb)
|
Stefan,
perhaps there should be something like the bold text below in elogd.c:
int process_http_request(const char *request, int i_conn)^M
...
/* extract cookies */^M
if ((p = strstr(request, "Cookie:")) != NULL) {^M
p += 6;^M
do {^M
p++;^M
while (*p && *p == ' ')^M
p++;^M
strlcpy(str, p, sizeof(str));^M
for (i = 0; i < (int) strlen(str); i++)^M
if (str[i] == '=' || str[i] == ';')^M
break;^M
if (str[i] == '=') {^M
str[i] = 0;^M
p += i + 1;^M
for (i = 0; *p && *p != ';' && *p != '\r' && *p != '\n' && i < (int) sizeof(cookie); i++)
cookie[i] = *p++;
... |
66086
|
Thu Nov 27 10:29:19 2008 |
| Niklas | niklas@hoglund.pp.se | Bug report | Linux | 2.7.5 2142 | Re: Elogd crashes with: *** stack smashing detected *** |
Stefan Ritt wrote: |
Niklas wrote: |
Stefan,
perhaps there should be something like the bold text below in elogd.c:
int process_http_request(const char *request, int i_conn)^M
...
/* extract cookies */^M
if ((p = strstr(request, "Cookie:")) != NULL) {^M
p += 6;^M
do {^M
p++;^M
while (*p && *p == ' ')^M
p++;^M
strlcpy(str, p, sizeof(str));^M
for (i = 0; i < (int) strlen(str); i++)^M
if (str[i] == '=' || str[i] == ';')^M
break;^M
if (str[i] == '=') {^M
str[i] = 0;^M
p += i + 1;^M
for (i = 0; *p && *p != ';' && *p != '\r' && *p != '\n' && i < (int) sizeof(cookie); i++)
cookie[i] = *p++;
...
|
Wow, where did you get that long cookie from? Certainly not from elogd. You must run elogd under Apache, and have some other service next to it on your server which distributes this long cookies, that's why other people did not experience this problem yet. I appreciate your fix. It's alwasy nice to see users not only complain about things, but try to fix them. Your fix is almost correct, you need a
i<(int) sizeof(cookie)-1
since there is the trailing zero for terminating the cookie string. I applied your fix to SVN revision #2146.
|
I the cookie is used for single-sign-on for multiple sites within company.com. So the cookie is issued for "company.com" i.e. all websites gets it even elog.company.com:8080..
I mostly fibble little bit in perl (dont need to bother with trailing zeros there ).
BR, Niklas
|
66137
|
Fri Jan 9 10:41:20 2009 |
| Niklas | niklas@hoglund.pp.se | Bug report | Linux | 2.7.5 2142 | Re: Elogd crashes with: *** stack smashing detected *** |
Stefan Ritt wrote: |
Niklas wrote: |
Stefan,
perhaps there should be something like the bold text below in elogd.c:
int process_http_request(const char *request, int i_conn)^M
...
/* extract cookies */^M
if ((p = strstr(request, "Cookie:")) != NULL) {^M
p += 6;^M
do {^M
p++;^M
while (*p && *p == ' ')^M
p++;^M
strlcpy(str, p, sizeof(str));^M
for (i = 0; i < (int) strlen(str); i++)^M
if (str[i] == '=' || str[i] == ';')^M
break;^M
if (str[i] == '=') {^M
str[i] = 0;^M
p += i + 1;^M
for (i = 0; *p && *p != ';' && *p != '\r' && *p != '\n' && i < (int) sizeof(cookie); i++)
cookie[i] = *p++;
...
|
Wow, where did you get that long cookie from? Certainly not from elogd. You must run elogd under Apache, and have some other service next to it on your server which distributes this long cookies, that's why other people did not experience this problem yet. I appreciate your fix. It's alwasy nice to see users not only complain about things, but try to fix them. Your fix is almost correct, you need a
i<(int) sizeof(cookie)-1
since there is the trailing zero for terminating the cookie string. I applied your fix to SVN revision #2146.
|
Just noticed that this fix does not work. Elog cookies e.g. "upwd" may be after other long cookies its not seen, as now it stops reading the cookie-string after 256 chars. There needs to be something that goes through the cookies and saves only elog cookies... Would probably be better if you code that, if you have time =D
BR, niklas |
66149
|
Tue Jan 13 14:30:37 2009 |
| Niklas | niklas@hoglund.pp.se | Bug report | Linux | 2.7.5 2142 | Re: Elogd crashes with: *** stack smashing detected *** |
Stefan,
To solve the problem I suggest following change to elogd.c (2.7.5 2159).
Create a list of elog cookies, and store only these as parameters. Example diff:
---
$ diff elog/src/elogd.c elogd_niho.c
26557a26558
> const char *cookie_list[] = { "upwd", "unm", "elmode", "urem", "wpwd", "apwd", "uname", NULL };
26603c26604,26610
< setparam(str, cookie);
---
> for(i=0; cookie_list[i]; i++) {
> if(strcmp(cookie_list[i], str) == 0) {
> setparam(str, cookie);
> break;
> }
> }
>
---
In a more readable fashion:
int process_http_request(const char *request, int i_conn)
{
...
const char *cookie_list[] = { "upwd", "unm", "elmode", "urem", "wpwd", "apwd", "uname", NULL };
...
...
...
/* store cookie as parameter */
for(i=0; cookie_list[i]; i++) {
if(strcmp(cookie_list[i], str) == 0) {
setparam(str, cookie);
break;
}
}
...
Not sure if I got all the cookies used by elog.
BR, niklas |
66234
|
Wed Mar 4 16:32:56 2009 |
| Niklas | niklas@hoglund.pp.se | Bug report | Linux | 2.7.5 2142 | Re: Elogd crashes with: *** stack smashing detected *** |
Stefan Ritt wrote: |
Niklas wrote: |
Create a list of elog cookies, and store only these as parameters. Examplef:
int process_http_request(const char *request, int i_conn)
{
...
const char *cookie_list[] = { "upwd", "unm", "elmode", "urem", "wpwd", "apwd", "uname", NULL };
...
...
...
/* store cookie as parameter */
for(i=0; cookie_list[i]; i++) {
if(strcmp(cookie_list[i], str) == 0) {
setparam(str, cookie);
break;
}
}
...
|
I'm not sure if this works, since your test
i < (int) sizeof(cookie)
still will stop parsing cookies if there is one which is too long. So I added your test plus changed the parsing to:
for (i = 0; *p && *p != ';' && *p != '\r' && *p != '\n' ; )
if (i < (int) sizeof(cookie)-1)
cookie[i++] = *p++;
cookie[i] = 0;
The modification is in the curren SVN revision (# 2162). So have a look and check that it works.
|
Tried 2178 and I seem to hit some endless loop when I have big cookies. The loop seems to be in this for-loop (from gdb).
I perhaps you should have:
for (i = 0; *p && *p != ';' && *p != '\r' && *p != '\n' ; )
if (i < (int) sizeof(cookie)-1)
cookie[i++] = *p++;
else
break;
cookie[i] = 0;
... Seems to be working for me =)
|
|