diff options
| -rw-r--r-- | src/lib/delivery/delivery.c | 1 | ||||
| -rw-r--r-- | src/lib/delivery/delivery_init.c | 8 | ||||
| -rw-r--r-- | src/lib/delivery/delivery_populate.c | 12 | 
3 files changed, 17 insertions, 4 deletions
| diff --git a/src/lib/delivery/delivery.c b/src/lib/delivery/delivery.c index ad947f3..41be64c 100644 --- a/src/lib/delivery/delivery.c +++ b/src/lib/delivery/delivery.c @@ -40,6 +40,7 @@ void delivery_free(struct Delivery *ctx) {      guard_free(ctx->info.build_name);      guard_free(ctx->info.build_number);      guard_free(ctx->info.release_name); +    guard_free(ctx->info.time_info);      guard_free(ctx->conda.installer_baseurl);      guard_free(ctx->conda.installer_name);      guard_free(ctx->conda.installer_version); diff --git a/src/lib/delivery/delivery_init.c b/src/lib/delivery/delivery_init.c index 2fced03..fe60075 100644 --- a/src/lib/delivery/delivery_init.c +++ b/src/lib/delivery/delivery_init.c @@ -296,10 +296,12 @@ int bootstrap_build_info(struct Delivery *ctx) {      ctx->info.build_name = strdup(local.info.build_name);      ctx->info.build_number = strdup(local.info.build_number);      ctx->info.release_name = strdup(local.info.release_name); -    ctx->info.time_info = malloc(sizeof(*ctx->info.time_info));      if (!ctx->info.time_info) { -        SYSERROR("Unable to allocate %zu bytes for tm struct: %s", sizeof(*local.info.time_info), strerror(errno)); -        return -1; +        ctx->info.time_info = malloc(sizeof(*ctx->info.time_info)); +        if (!ctx->info.time_info) { +            SYSERROR("Unable to allocate %zu bytes for tm struct: %s", sizeof(*local.info.time_info), strerror(errno)); +            return -1; +        }      }      memcpy(ctx->info.time_info, local.info.time_info, sizeof(*local.info.time_info));      ctx->info.time_now = local.info.time_now; diff --git a/src/lib/delivery/delivery_populate.c b/src/lib/delivery/delivery_populate.c index f14016a..63df9fd 100644 --- a/src/lib/delivery/delivery_populate.c +++ b/src/lib/delivery/delivery_populate.c @@ -30,7 +30,17 @@ int populate_info(struct Delivery *ctx) {      if (!ctx->info.time_str_epoch) {          // Record timestamp used for release          time(&ctx->info.time_now); -        ctx->info.time_info = localtime(&ctx->info.time_now); +        if (!ctx->info.time_info) { +            ctx->info.time_info = malloc(sizeof(*ctx->info.time_info)); +            if (!ctx->info.time_info) { +                msg(STASIS_MSG_ERROR, "%s: Unable to allocate memory for time_info\n", strerror(errno)); +                return -1; +            } +            if (!localtime_r(&ctx->info.time_now, ctx->info.time_info)) { +                msg(STASIS_MSG_ERROR, "%s: localtime_r failed\n", strerror(errno)); +                return -1; +            } +        }          ctx->info.time_str_epoch = calloc(STASIS_TIME_STR_MAX, sizeof(*ctx->info.time_str_epoch));          if (!ctx->info.time_str_epoch) { | 
