diff options
author | Simon Marchi <simon.marchi@polymtl.ca> | 2025-10-08 11:53:10 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2025-10-08 14:57:57 -0400 |
commit | 4cab44595eed299ec196902a54710be2fd224083 (patch) | |
tree | 372d88a43eb76a9d3f8d233ac6d42cb8ac351a31 /gdb/python/py-style.c | |
parent | c1950dcc04c07e713b708efcf1c6cc88eda60843 (diff) | |
download | binutils-4cab44595eed299ec196902a54710be2fd224083.zip binutils-4cab44595eed299ec196902a54710be2fd224083.tar.gz binutils-4cab44595eed299ec196902a54710be2fd224083.tar.bz2 |
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 <tom@tromey.com>
Diffstat (limited to 'gdb/python/py-style.c')
-rw-r--r-- | gdb/python/py-style.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/gdb/python/py-style.c b/gdb/python/py-style.c index cf65e31..b10a45f 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<ui_file_style::intensity> stylepy_long_to_intensity (long intensity_value) { - ui_file_style::intensity intensity - = static_cast<ui_file_style::intensity> (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<ui_file_style::intensity> (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 |