Song, Jiaying (CN) via Postfix-devel:
> From: Jiaying Song <jiaying.song...@windriver.com>
> 
> This patch replaces "%010ld" with "%019" PRIdMAX and casts time() to
> intmax_t, to prevent formatting overflow on systems where long is 32-bit
> but time_t is 64-bit.
> 
> The previous formatting could truncate high-bit time values, causing
> unexpected behavior in mail queue operations on systems with time beyond
> 2038.
> 
> This ensures safe formatting of time values across 32-bit and 64-bit
> systems.
> 
> Signed-off-by: Jiaying Song <jiaying.song...@windriver.com>
> ---
>  postfix/src/postalias/postalias.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/postfix/src/postalias/postalias.c 
> b/postfix/src/postalias/postalias.c
> index 9e77a6b20..ebb1dc329 100644
> --- a/postfix/src/postalias/postalias.c
> +++ b/postfix/src/postalias/postalias.c
> @@ -489,7 +489,7 @@ static void postalias(char *map_type, char *path_name, 
> int postalias_flags,
>       */
>      mkmap->dict->flags &= ~DICT_FLAG_TRY1NULL;
>      mkmap->dict->flags |= DICT_FLAG_TRY0NULL;
> -    vstring_sprintf(value_buffer, "%010ld", (long) time((time_t *) 0));
> +    vstring_sprintf(value_buffer, "%019" PRIdMAX, (intmax_t)time(NULL));
>  #if (defined(HAS_NIS) || defined(HAS_NISPLUS))
>      mkmap->dict->flags &= ~DICT_FLAG_FOLD_FIX;
>      mkmap_append(mkmap, "YP_LAST_MODIFIED", STR(value_buffer));

How did you test this patch?

1) On the systems that I have, PRIdMAX is one of 'lld', 'ld' or
'jd'. At this time, the Postfix vstring_sprintf() implementation
does not yet support the 'lld' or 'jd' formats.

2) What NIS implementation was your patch tested with?

3) Changing the %010ld" format seems unnecessary. It specifies the
MINIMUM number of digits to print, NOT a maximum.

        Wietse

        Wietse
_______________________________________________
Postfix-devel mailing list -- postfix-devel@postfix.org
To unsubscribe send an email to postfix-devel-le...@postfix.org

Reply via email to