]> git.ipfire.org Git - thirdparty/rrdtool-1.x.git/commitdiff
Added check for graph timespan overflowing if time_t is 32 bits.
authorNick <nick@example.com>
Sat, 9 Feb 2013 18:46:40 +0000 (18:46 +0000)
committerTobias Oetiker <tobi@oetiker.ch>
Sun, 10 Feb 2013 11:26:04 +0000 (12:26 +0100)
Conflicts:

src/rrd_create.c

src/rrd_create.c

index 50e26652024194c19887c20fe33a2963220d1269..77b550db96249dd5ab420119c59496e41ced4b35 100644 (file)
@@ -11,6 +11,8 @@
 #include "rrd_tool.h"
 #include "rrd_rpncalc.h"
 #include "rrd_hw.h"
+#include "rrd_client.h"
+#include "../rrd_config.h"
 
 #include "rrd_is_thread_safe.h"
 static int opt_no_overwrite = 0;
@@ -441,6 +443,12 @@ int rrd_create_r(
                         row_cnt = atoi(token);
                         if (row_cnt <= 0)
                             rrd_set_error("Invalid row count: %i", row_cnt);
+#if SIZEOF_TIME_T == 4
+                        if ((long long) pdp_step * rrd.rra_def[rrd.stat_head->rra_cnt].pdp_cnt * row_cnt > 4294967296){
+                            /* database timespan > 2**32, would overflow time_t */
+                            rrd_set_error("The time spanned by the database is too large: must be <= 4294967296 seconds");
+                        }
+#endif
                         rrd.rra_def[rrd.stat_head->rra_cnt].row_cnt = row_cnt;
                         break;
                     }