summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2013-07-06 16:48:06 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2013-07-06 16:54:29 +0200
commit6a3fc2808e8ca9029d4af20052cfa949894be87a (patch)
treecdd88a69aa69eefffa9ea74e281ce9941154fff9
parent77e430323664c3d5d3df459c69a646f4326ec9a9 (diff)
downloadgnutls-6a3fc2808e8ca9029d4af20052cfa949894be87a.tar.gz
make sure that a valid number of days is entered
-rw-r--r--src/certtool.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/certtool.c b/src/certtool.c
index 9cd72cae77..04566ca9d4 100644
--- a/src/certtool.c
+++ b/src/certtool.c
@@ -240,6 +240,7 @@ generate_certificate (gnutls_privkey_t * ret_key,
int ret;
int client;
int days, result, ca_status = 0, is_ike = 0, path_len;
+ time_t secs, now;
int vers;
unsigned int usage = 0, server;
gnutls_x509_crq_t crq; /* request */
@@ -329,11 +330,17 @@ generate_certificate (gnutls_privkey_t * ret_key,
gnutls_x509_crt_set_activation_time (crt, time (NULL));
- days = get_days ();
+ now = time(NULL);
+
+ do
+ {
+ days = get_days ();
+ secs = days * 24 * 60 * 60 + now;
+ }
+ while (secs < now || (unsigned)(secs-now)/(24*60*60) != (unsigned)days);
result =
- gnutls_x509_crt_set_expiration_time (crt,
- time (NULL) + ((time_t) days) * 24 * 60 * 60);
+ gnutls_x509_crt_set_expiration_time (crt, secs);
if (result < 0)
error (EXIT_FAILURE, 0, "set_expiration: %s", gnutls_strerror (result));