aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/mmcli-output.c4
-rw-r--r--libmm-glib/mm-common-helpers.c9
-rw-r--r--libmm-glib/mm-common-helpers.h21
-rw-r--r--libmm-glib/tests/test-common-helpers.c9
4 files changed, 29 insertions, 14 deletions
diff --git a/cli/mmcli-output.c b/cli/mmcli-output.c
index 1bb17f82..ef1c7cb3 100644
--- a/cli/mmcli-output.c
+++ b/cli/mmcli-output.c
@@ -621,11 +621,11 @@ mmcli_output_signal_quality (MMModemState state,
/* (Custom) Bearer start date output */
void
-mmcli_output_start_date (guint64 value)
+mmcli_output_start_date (guint64 value)
{
/* Merge value and recent flag in a single item in human output */
if (selected_type == MMC_OUTPUT_TYPE_HUMAN) {
- output_item_new_take_single (MMC_F_BEARER_STATS_START_DATE, mm_new_iso8601_time_from_unix_time (value));
+ output_item_new_take_single (MMC_F_BEARER_STATS_START_DATE, mm_new_iso8601_time_from_unix_time (value, NULL));
return;
}
diff --git a/libmm-glib/mm-common-helpers.c b/libmm-glib/mm-common-helpers.c
index 085177b7..0dff0e8c 100644
--- a/libmm-glib/mm-common-helpers.c
+++ b/libmm-glib/mm-common-helpers.c
@@ -1752,11 +1752,18 @@ date_time_format_iso8601 (GDateTime *dt)
}
gchar *
-mm_new_iso8601_time_from_unix_time (guint64 timestamp)
+mm_new_iso8601_time_from_unix_time (guint64 timestamp,
+ GError **error)
{
g_autoptr(GDateTime) dt = NULL;
dt = g_date_time_new_from_unix_utc ((gint64)timestamp);
+ if (!dt) {
+ g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS,
+ "Invalid unix time: %" G_GUINT64_FORMAT,
+ timestamp);
+ return NULL;
+ }
return date_time_format_iso8601 (dt);
}
diff --git a/libmm-glib/mm-common-helpers.h b/libmm-glib/mm-common-helpers.h
index 490f882d..a92d5b58 100644
--- a/libmm-glib/mm-common-helpers.h
+++ b/libmm-glib/mm-common-helpers.h
@@ -208,16 +208,17 @@ gboolean mm_get_double_from_match_info (GMatchInfo *match_info,
gchar *mm_get_string_unquoted_from_match_info (GMatchInfo *match_info,
guint32 match_index);
-gchar *mm_new_iso8601_time_from_unix_time (guint64 timestamp);
-gchar *mm_new_iso8601_time (guint year,
- guint month,
- guint day,
- guint hour,
- guint minute,
- guint second,
- gboolean have_offset,
- gint offset_minutes,
- GError **error);
+gchar *mm_new_iso8601_time_from_unix_time (guint64 timestamp,
+ GError **error);
+gchar *mm_new_iso8601_time (guint year,
+ guint month,
+ guint day,
+ guint hour,
+ guint minute,
+ guint second,
+ gboolean have_offset,
+ gint offset_minutes,
+ GError **error);
/******************************************************************************/
/* Type checkers and conversion utilities */
diff --git a/libmm-glib/tests/test-common-helpers.c b/libmm-glib/tests/test-common-helpers.c
index a1a2e61e..fff37a82 100644
--- a/libmm-glib/tests/test-common-helpers.c
+++ b/libmm-glib/tests/test-common-helpers.c
@@ -604,7 +604,8 @@ date_time_iso8601 (void)
gchar *date = NULL;
GError *error = NULL;
- date = mm_new_iso8601_time_from_unix_time (1634307342);
+ date = mm_new_iso8601_time_from_unix_time (1634307342, &error);
+ g_assert_no_error (error);
g_assert_cmpstr (date, ==, "2021-10-15T14:15:42Z");
g_free (date);
@@ -636,6 +637,12 @@ date_time_iso8601 (void)
g_assert_error (error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS);
g_assert_null (date);
g_clear_error (&error);
+
+ /* Too far into the future */
+ date = mm_new_iso8601_time_from_unix_time (G_MAXINT64, &error);
+ g_assert_error (error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS);
+ g_assert_null (date);
+ g_clear_error (&error);
}
/**************************************************************/