aboutsummaryrefslogtreecommitdiffstats
path: root/builtin.c
diff options
context:
space:
mode:
Diffstat (limited to 'builtin.c')
-rw-r--r--builtin.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/builtin.c b/builtin.c
index 73208714..e5753ade 100644
--- a/builtin.c
+++ b/builtin.c
@@ -1921,17 +1921,13 @@ do_strftime(int nargs)
lintwarn(_("strftime: received non-numeric second argument"));
(void) force_number(t2);
clock_val = get_number_si(t2);
+ fclock = (time_t) clock_val;
/*
- * 4/2015: This used to be here:
- *
- * if (clock_val < 0)
- * fatal(_("strftime: second argument less than 0 or too big for time_t"));
- *
- * It is now disabled since some systems have strftime that works
- * on times before the epoch. No arbritrary limits comes into
- * play at this point.
+ * 4/2015: Protect against negative value being assigned
+ * to unsigned time_t.
*/
- fclock = (time_t) clock_val;
+ if (clock_val < 0 && fclock > 0)
+ fatal(_("strftime: second argument less than 0 or too big for time_t"));
DEREF(t2);
}