From 344b1e0f5f7900da0087fee1704dd98fd30ea4c4 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 16 May 2025 10:37:46 +0200 Subject: [PATCH] gas: range-check 3rd argument of .align et al Negative values would have been silently converted to large positive ones, which may not be the user's intention. Similarly overly large values would have been silently truncated. Warn them instead, and zap such values. --- gas/read.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gas/read.c b/gas/read.c index 31b89b7cbc8..0b817b790a1 100644 --- a/gas/read.c +++ b/gas/read.c @@ -1598,7 +1598,13 @@ s_align (signed int arg, int bytes_p) else { ++input_line_pointer; - max = get_absolute_expression (); + offsetT val = get_absolute_expression (); + max = val; + if (val < 0 || max != val) + { + as_warn (_("ignoring out of range alignment maximum")); + max = 0; + } } } -- 2.39.5