From 7d07921e5bdc0bce7b70f5835dcd61d3b8ad290c Mon Sep 17 00:00:00 2001 From: Yoan Blanc Date: Mon, 11 May 2020 20:36:10 +0200 Subject: [PATCH] token: avoid panic when expire_time is nil (#740) * token: avoid panic when expire_time is nil Signed-off-by: Yoan Blanc * Update vault/resource_token.go Co-authored-by: Becca Petrin * Update vault/resource_token.go Co-authored-by: Becca Petrin * Update vault/resource_token.go Co-authored-by: Becca Petrin Co-authored-by: Becca Petrin --- vault/resource_token.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/vault/resource_token.go b/vault/resource_token.go index 2840e5bc7..7f065c8e2 100644 --- a/vault/resource_token.go +++ b/vault/resource_token.go @@ -328,13 +328,23 @@ func tokenRead(d *schema.ResourceData, meta interface{}) error { d.Set("encrypted_client_token", "") } - issueTime, err := time.Parse(time.RFC3339Nano, resp.Data["issue_time"].(string)) + issueTimeStr, ok := resp.Data["issue_time"].(string) + if !ok { + return fmt.Errorf("error issue_time is not a string, got %T", resp.Data["issue_time"]) + } + + issueTime, err := time.Parse(time.RFC3339Nano, issueTimeStr) if err != nil { - return fmt.Errorf("error parsing issue_time: %s", err) + return fmt.Errorf("error parsing issue_time: %s, please format string like '2006-01-02T15:04:05.999999999Z07:00'", err) } d.Set("lease_started", issueTime.Format(time.RFC3339)) - expireTime, err := time.Parse(time.RFC3339Nano, resp.Data["expire_time"].(string)) + expireTimeStr, ok := resp.Data["expire_time"].(string) + if !ok { + return fmt.Errorf("error expire_time is %T", resp.Data["expire_time"]) + } + + expireTime, err := time.Parse(time.RFC3339Nano, expireTimeStr) if err != nil { return fmt.Errorf("error parsing expire_time: %s", err) }