mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 19:36:18 +01:00
gdatetime: Fix error handling in g_date_time_new_ordinal()
It was possible to pass in (for example) an invalid hour to g_date_time_new_ordinal(), which would be passed on to g_date_time_new(), which would (correctly) return `NULL` — but then g_date_time_new_ordinal() would try to dereference that. Includes some test cases. oss-fuzz#16103 oss-fuzz#17183 Signed-off-by: Philip Withnall <withnall@endlessm.com>
This commit is contained in:
parent
96c25ceba6
commit
5c6030ef8d
@ -1220,6 +1220,8 @@ g_date_time_new_ordinal (GTimeZone *tz, gint year, gint ordinal_day, gint hour,
|
||||
return NULL;
|
||||
|
||||
dt = g_date_time_new (tz, year, 1, 1, hour, minute, seconds);
|
||||
if (dt == NULL)
|
||||
return NULL;
|
||||
dt->days += ordinal_day - 1;
|
||||
|
||||
return dt;
|
||||
|
@ -866,6 +866,8 @@ test_GDateTime_new_from_iso8601_2 (void)
|
||||
{ TRUE, "+1980-02-22T12:36:00+02:00", 1980, 2, 22, 12, 36, 0, 0, 2 * G_TIME_SPAN_HOUR },
|
||||
{ TRUE, "1990-11-01T10:21:17 ", 1990, 11, 1, 10, 21, 17, 0, 0 },
|
||||
*/
|
||||
{ FALSE, "1719W462 407777-07", 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ FALSE, "4011090 260528Z", 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
};
|
||||
GTimeZone *tz = NULL;
|
||||
GDateTime *dt = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user