From: Simon Marchi Date: Wed, 8 Oct 2025 15:53:10 +0000 (-0400) Subject: gdb/python: cast to ui_file_style::intensity after validating value X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4cab44595eed299ec196902a54710be2fd224083;p=thirdparty%2Fbinutils-gdb.git gdb/python: cast to ui_file_style::intensity after validating value When GDB is built with undefined behavior sanitizer, gdb.python/py-style.exp fails because of this: $ ./gdb -q -nx --data-directory=data-directory -ex "python filename_style = gdb.Style('filename')" -ex "python filename_style.intensity = -3" /home/simark/src/binutils-gdb/gdb/python/py-style.c:239:11: runtime error: load of value 4294967293, which is not a valid value for type 'intensity' Fix it by casting the value to ui_file_style::intensity only after validating the raw value. Change-Id: I38eb471a9cb3bfc3bb8b2c88afa76b8025e4e893 Approved-By: Tom Tromey --- diff --git a/gdb/python/py-style.c b/gdb/python/py-style.c index cf65e3115b2..b10a45fced9 100644 --- a/gdb/python/py-style.c +++ b/gdb/python/py-style.c @@ -234,14 +234,12 @@ stylepy_init_from_style_name (PyObject *self, const char *style_name) static std::optional stylepy_long_to_intensity (long intensity_value) { - ui_file_style::intensity intensity - = static_cast (intensity_value); - switch (intensity) + switch (intensity_value) { case ui_file_style::NORMAL: case ui_file_style::DIM: case ui_file_style::BOLD: - break; + return static_cast (intensity_value); default: PyErr_Format @@ -249,8 +247,6 @@ stylepy_long_to_intensity (long intensity_value) intensity_value); return {}; } - - return intensity; } /* Initialise a gdb.Style object from a foreground and background