From ba82092e43d4769dbc6f0557d58a243f93542486 Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Fri, 22 May 2026 19:20:51 +0200 Subject: common: validate PLIST_DATE values before Time64_T conversion Avoid undefined behavior when serializing malformed PLIST_DATE values containing NaN, infinity, or values outside the Time64_T range. Add a shared helper for checked date conversion and use it across writer paths. --- src/xplist.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/xplist.c') diff --git a/src/xplist.c b/src/xplist.c index 8f5cb15..3157ab0 100644 --- a/src/xplist.c +++ b/src/xplist.c @@ -192,7 +192,10 @@ static plist_err_t node_to_xml(node_t node, bytearray_t **outbuf, uint32_t depth tag = XPLIST_DATE; tag_len = XPLIST_DATE_LEN; { - Time64_T timev = (Time64_T)node_data->realval + MAC_EPOCH; + Time64_T timev; + if (plist_real_to_time64(node_data->realval, &timev) < 0) { + return PLIST_ERR_INVALID_ARG; + } struct TM _btime; struct TM *btime = gmtime64_r(&timev, &_btime); if (btime) { -- cgit v1.1-32-gdbae