From: Andy Holmes Date: Mon, 13 Nov 2023 20:05:31 +0000 (-0800) Subject: gtk: fix NULL pointer dereference X-Git-Tag: archive/raspbian/4.12.4+ds-3+rpi1^2~21^2^2~3 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=6937fcad9e5b11a6c9533459327e4deedd3efe27;p=gtk4.git gtk: fix NULL pointer dereference `gtk_window_get_default_size()` claims width/height are optional-out arguments, but defers to `gtk_window_get_remembered_size()` which may dereference a NULL-pointer. Since `gtk_window_get_remembered_size()` is only called by `gtk_window_get_default_size()`, collapse it into the latter and perform the NULL check there. --- diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 2eb94d6f7e..b6864a6297 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -397,10 +397,6 @@ static int gtk_window_focus (GtkWidget *widget, static void gtk_window_move_focus (GtkWidget *widget, GtkDirectionType dir); -static void gtk_window_get_remembered_size (GtkWindow *window, - int *width, - int *height); - static void gtk_window_real_activate_default (GtkWindow *window); static void gtk_window_real_activate_focus (GtkWindow *window); static void gtk_window_keys_changed (GtkWindow *window); @@ -3718,9 +3714,15 @@ gtk_window_get_default_size (GtkWindow *window, int *width, int *height) { + GtkWindowPrivate *priv = gtk_window_get_instance_private (window); + g_return_if_fail (GTK_IS_WINDOW (window)); - gtk_window_get_remembered_size (window, width, height); + if (width != NULL) + *width = priv->default_width; + + if (height != NULL) + *height = priv->default_height; } static gboolean @@ -4043,17 +4045,6 @@ gtk_window_unmap (GtkWidget *widget) gtk_widget_unmap (child); } -static void -gtk_window_get_remembered_size (GtkWindow *window, - int *width, - int *height) -{ - GtkWindowPrivate *priv = gtk_window_get_instance_private (window); - - *width = priv->default_width; - *height = priv->default_height; -} - static void check_scale_changed (GtkWindow *window) {