mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-09 17:38:00 +00:00
Unix: stop accessing ctrl->fileselect for font selectors.
The setup code for CTRL_FILESELECT and CTRL_FONTSELECT is shared, which means it's a mistake to test ctrl->fileselect.just_button in it without first checking which control type we're actually dealing with. UBsan picks this up by complaining that the just_button field contains some byte value that's illegal for a boolean. I think it's also the cause of an intermittent assertion failure reported recently, in which dlg_fontsel_set finds that uc->entry is NULL when it never ought to be. If the byte from the wrong union branch happened to be 0 by sheer bad luck, that could give rise to exactly that failure.
This commit is contained in:
parent
a7106d8eb2
commit
475c23875e
@ -2143,7 +2143,10 @@ GtkWidget *layout_ctrls(
|
|||||||
case CTRL_FONTSELECT: {
|
case CTRL_FONTSELECT: {
|
||||||
GtkWidget *ww;
|
GtkWidget *ww;
|
||||||
|
|
||||||
if (!ctrl->fileselect.just_button) {
|
bool just_button = (ctrl->type == CTRL_FILESELECT &&
|
||||||
|
ctrl->fileselect.just_button);
|
||||||
|
|
||||||
|
if (!just_button) {
|
||||||
const char *browsebtn =
|
const char *browsebtn =
|
||||||
(ctrl->type == CTRL_FILESELECT ?
|
(ctrl->type == CTRL_FILESELECT ?
|
||||||
"Browse..." : "Change...");
|
"Browse..." : "Change...");
|
||||||
|
Loading…
Reference in New Issue
Block a user