[PATCH] test-squeue: trigger y2038 bug

Support forum for Nagios Core, Nagios Plugins, NCPA, NRPE, NSCA, NDOUtils and more. Engage with the community of users including those using the open source solutions.
Locked
Guest

[PATCH] test-squeue: trigger y2038 bug

Post by Guest »

--001a11c1f442b4bfa504d998381d
Content-Type: text/plain; charset=ISO-8859-1

For the record, the following patch identically triggers the faults on my
x86_64 Arch installation (where time_t normally is a quad word).

Subject: [PATCH] test-squeue: trigger y2038 bug

Signed-off-by: Anton Lofgren
---
lib/test-squeue.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/test-squeue.c b/lib/test-squeue.c
index 556952d..faf0b5d 100644
--- a/lib/test-squeue.c
+++ b/lib/test-squeue.c
@@ -11,6 +11,7 @@
#include
#include "squeue.c"
#include "t-utils.h"
+#include

static void squeue_foreach(squeue_t *q, int (*walker)(squeue_event *, void
*), void *arg)
{
@@ -116,7 +117,7 @@ int main(int argc, char **argv)
sq_test_random(sq);
t(squeue_size(sq) == 0, "Size should be 0 after first
sq_test_random");

- t((a.evt = squeue_add(sq, time(NULL) + 9, &a)) != NULL);
+ t((a.evt = squeue_add(sq, (int32_t)(time(NULL) * 2), &a)) != NULL);
t(squeue_size(sq) == 1);
t((b.evt = squeue_add(sq, time(NULL) + 3, &b)) != NULL);
t(squeue_size(sq) == 2);
--
1.8.2




test-squeue:
### squeue tests
FAIL max id == b.id @test-squeue.c:135
FAIL x == &c @test-squeue.c:142
about to fail pretty fucking hard...
ea: 0x7fffe6dd1e50; &b: 0x7fffe6dd1e60; &c: 0x7fffe6dd1e70; ed:
0x7fffe6dd1e80; x: 0x7fffe6d83de0
FAIL x == &b @test-squeue.c:153
FAIL x->id == b.id @test-squeue.c:154
FAIL x == &b @test-squeue.c:161
FAIL x->id == b.id @test-squeue.c:162
FAIL x == &c @test-squeue.c:167
FAIL x->id == c.id @test-squeue.c:168
Test results: 390637 passed, 10 failed
make[1]: *** [test] Error 1


/Anton

On Thu, Apr 4, 2013 at 11:55 PM, Andreas Ericsson wrote:

> On 04/04/2013 06:32 PM, Ton Voon wrote:
> > Hi!
> >
> > We've come across a problem in an upgrade of Nagios 3 to Nagios 4 which
> we can't work out where the fix is. It occurs when an event is scheduled in
> the future beyond 2038.
> >
>
> Why on earth would you want to schedule something to end beyond 2038?
> It sounds like you're using a patch on a workaround for something that
> was the wrong solution in the first place.
>
> > Recreation steps:
> > * Set a downtime on a service to end next day
> > * Stop Nagios
> > * Edit the retention.dat so that the end_date=4514791088 (some other
> values seem to work)
> > * Start Nagios
> >
> > When Nagios starts, it will not run any scheduled events in the events
> queue.
> >
>
> Ouch. That's pretty bad.
>
> > This fails on CentOS 5 64bit, though appears to work on Debian Squeeze
> 32bit, so it maybe a 64 bit only issue.
> >
> > We think this is an issue when the event is scheduled via squeue_add().
> We've managed to get the test-squeue to fail by changing the time value to
> be greater than 2038 with the following:
> >
> > Index: test-squeue.c
> > ===================================================================
> > --- test-squeue.c (revision 2716)
> > +++ test-squeue.c (working copy)
> > @@ -116,7 +116,7 @@
> > sq_test_random(sq);
> > t(squeue_size(sq) == 0, "Size should be 0 after first
> sq_test_random");
> >
> > - t((a.evt = squeue_add(sq, time(NULL) + 9, &a)) != NULL);
> > + t((a.evt = squeue_add(sq, time(NULL)*2, &a)) != NULL);
> > t(squeue_size(sq) == 1);
> > t((b.evt = squeue_add(sq, time(NULL) + 3, &b)) != NULL);
> > t(squeue_size(sq) == 2);
> >
> > This gives the test result of:
> >
> > ### squeue tests
> > FAIL max > FAIL x == &b @test-squeue.c:133
> > FAIL x->id == b.id @test-squeue.c:134
> > FAIL x == &c @test-squeue.c:141
> > about to fail pretty fucking hard...
> > ea: 0xbfe065e0; &b: 0xbfe065d8; &c: 0xbfe065d0; ed: 0xbfe065c8; x:
> 0xbfde9b80
> > FAIL x == &b @test-squeue.c:152
> > FAIL x->id == b.id @test-squeue.c:153
> > FAIL x == &b @test-squeue.c:160
> > FAIL x->id == b.id @test-squeue.c:161
> > FAIL x == &c @test-squeue.c:166
> > FAIL x->id == c.id @test-squeue.c:167
> > Test results: 390637 pass

...[email truncated]...


This post was automatically imported from historical nagios-devel mailing list archives
Original poster: alofgren@op5.com
Locked