Fix memory leaks in error handlings
- Resolves #2297147 Add directory datadir/GConf/gsettings - Resolves #2297735 Move ibus.conf to ibus-xinit sub package
This commit is contained in:
parent
15f9f3c991
commit
f553865bc8
@ -0,0 +1,68 @@
|
|||||||
|
From a1a2fe5d13ad76956a94c0695af15d76e3edfdca Mon Sep 17 00:00:00 2001
|
||||||
|
From: fujiwarat <takao.fujiwara1@gmail.com>
|
||||||
|
Date: Thu, 18 Jul 2024 01:25:41 +0900
|
||||||
|
Subject: [PATCH] Fix memory leaks in error handlings
|
||||||
|
|
||||||
|
- bus/ibusimpl: Free keys not in case of TYPE_IME_SWITCHER
|
||||||
|
- src/ibuscomposetable: Correct handling G_MAXSIZE * G_MAXSIZE
|
||||||
|
- src/ibuscomposetable: Fee ibus_compose_seqs in error handlings
|
||||||
|
---
|
||||||
|
bus/ibusimpl.c | 3 ++-
|
||||||
|
src/ibuscomposetable.c | 6 +++++-
|
||||||
|
2 files changed, 7 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
|
||||||
|
index 31a095f3..445c062b 100644
|
||||||
|
--- a/bus/ibusimpl.c
|
||||||
|
+++ b/bus/ibusimpl.c
|
||||||
|
@@ -1986,7 +1986,8 @@ _ibus_set_global_shortcut_keys (BusIBusImpl *ibus,
|
||||||
|
}
|
||||||
|
ibus->ime_switcher_keys = keys;
|
||||||
|
break;
|
||||||
|
- default:;
|
||||||
|
+ default:
|
||||||
|
+ g_slice_free1 (sizeof (IBusProcessKeyEventData) * (size + 1), keys);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
diff --git a/src/ibuscomposetable.c b/src/ibuscomposetable.c
|
||||||
|
index 7531a4b2..a8e41a33 100644
|
||||||
|
--- a/src/ibuscomposetable.c
|
||||||
|
+++ b/src/ibuscomposetable.c
|
||||||
|
@@ -849,7 +849,7 @@ compose_data_to_variant (gconstpointer compose_data,
|
||||||
|
g_assert (compose_data);
|
||||||
|
if (error)
|
||||||
|
*error = NULL;
|
||||||
|
- if ((index_stride * n_seqs) > G_MAXUINT64) {
|
||||||
|
+ if (n_seqs == 0 || index_stride > (G_MAXSIZE / n_seqs)) {
|
||||||
|
if (error) {
|
||||||
|
g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED,
|
||||||
|
"Length %u x %lu is too long",
|
||||||
|
@@ -1404,6 +1404,7 @@ ibus_compose_table_new_with_list (GList *compose_list,
|
||||||
|
(G_MAXSIZE / sizeof (guint16)))) {
|
||||||
|
g_warning ("Too long allocation %lu x %u",
|
||||||
|
s_size_total - s_size_16bit, n_index_stride);
|
||||||
|
+ g_free (ibus_compose_seqs);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
rawdata = (gpointer)g_new (
|
||||||
|
@@ -1416,6 +1417,8 @@ ibus_compose_table_new_with_list (GList *compose_list,
|
||||||
|
s_size_total - s_size_16bit,
|
||||||
|
n_index_stride,
|
||||||
|
v_size_32bit);
|
||||||
|
+ g_free (ibus_compose_seqs);
|
||||||
|
+ g_free (rawdata);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (G_LIKELY (rawdata)) {
|
||||||
|
@@ -1432,6 +1435,7 @@ ibus_compose_table_new_with_list (GList *compose_list,
|
||||||
|
}
|
||||||
|
if (!ibus_compose_seqs_32bit_first || !ibus_compose_seqs_32bit_second) {
|
||||||
|
g_warning ("Failed g_new");
|
||||||
|
+ g_free (ibus_compose_seqs);
|
||||||
|
g_free (rawdata);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.45.0
|
||||||
|
|
53
ibus.spec
53
ibus.spec
@ -30,6 +30,7 @@
|
|||||||
%bcond_with gtk4
|
%bcond_with gtk4
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%global ibus_xinit_condition %ibus_panel_condition
|
||||||
# FIXME: How to write a condition with multiple lines
|
# FIXME: How to write a condition with multiple lines
|
||||||
%global ibus_panel_condition (%pcd1 or %pcd2 or %pcd3)
|
%global ibus_panel_condition (%pcd1 or %pcd2 or %pcd3)
|
||||||
%global pcd1 budgie-desktop or cinnamon or deepin-desktop or i3
|
%global pcd1 budgie-desktop or cinnamon or deepin-desktop or i3
|
||||||
@ -61,7 +62,7 @@
|
|||||||
Name: ibus
|
Name: ibus
|
||||||
Version: 1.5.31~beta1
|
Version: 1.5.31~beta1
|
||||||
# https://github.com/fedora-infra/rpmautospec/issues/101
|
# https://github.com/fedora-infra/rpmautospec/issues/101
|
||||||
Release: 6%{?dist}
|
Release: 7%{?dist}
|
||||||
Summary: Intelligent Input Bus for Linux OS
|
Summary: Intelligent Input Bus for Linux OS
|
||||||
License: LGPL-2.1-or-later
|
License: LGPL-2.1-or-later
|
||||||
URL: https://github.com/ibus/%name/wiki
|
URL: https://github.com/ibus/%name/wiki
|
||||||
@ -72,7 +73,7 @@ Source3: %{name}.conf.5
|
|||||||
# Patch0: %%{name}-HEAD.patch
|
# Patch0: %%{name}-HEAD.patch
|
||||||
# Under testing #1349148 #1385349 #1350291 #1406699 #1432252 #1601577
|
# Under testing #1349148 #1385349 #1350291 #1406699 #1432252 #1601577
|
||||||
Patch1: %{name}-1385349-segv-bus-proxy.patch
|
Patch1: %{name}-1385349-segv-bus-proxy.patch
|
||||||
%if %{without xinit}
|
%if 0%{?rhel} > 8
|
||||||
# Use mutter window manager in RHEL CI
|
# Use mutter window manager in RHEL CI
|
||||||
Patch100: %{name}-xx-desktop-testing-mutter.patch
|
Patch100: %{name}-xx-desktop-testing-mutter.patch
|
||||||
%endif
|
%endif
|
||||||
@ -122,7 +123,8 @@ Requires: (%{name}-gtk2%{?_isa} = %{version}-%{release} if gtk2)
|
|||||||
%endif
|
%endif
|
||||||
Requires: %{name}-gtk3%{?_isa} = %{version}-%{release}
|
Requires: %{name}-gtk3%{?_isa} = %{version}-%{release}
|
||||||
Requires: %{name}-setup = %{version}-%{release}
|
Requires: %{name}-setup = %{version}-%{release}
|
||||||
Requires: (%{name}-panel%{?_isa} = %{version}-%{release} if %ibus_panel_condition)
|
Requires: (%{name}-panel%{?_isa} = %{version}-%{release} if %ibus_panel_condition)
|
||||||
|
Requires: (%{name}-xinit = %{version}-%{release} if %ibus_xinit_condition)
|
||||||
|
|
||||||
Requires: iso-codes
|
Requires: iso-codes
|
||||||
Requires: dconf
|
Requires: dconf
|
||||||
@ -132,15 +134,6 @@ Requires: dconf
|
|||||||
Requires: python3-gobject
|
Requires: python3-gobject
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1161871
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1161871
|
||||||
%{?__python3:Requires: %{__python3}}
|
%{?__python3:Requires: %{__python3}}
|
||||||
%if %{with xinit}
|
|
||||||
# Owner of %%{_sysconfdir}/X11/xinit
|
|
||||||
Requires: xorg-x11-xinit
|
|
||||||
Requires: setxkbmap
|
|
||||||
%endif
|
|
||||||
%if (0%{?fedora} > 29 || 0%{?rhel} > 8)
|
|
||||||
%else
|
|
||||||
Requires: dbus-x11
|
|
||||||
%endif
|
|
||||||
|
|
||||||
Requires: desktop-file-utils
|
Requires: desktop-file-utils
|
||||||
Requires(post): desktop-file-utils
|
Requires(post): desktop-file-utils
|
||||||
@ -263,8 +256,9 @@ This package contains IBus IM module for Wayland
|
|||||||
Summary: IBus Panel icon
|
Summary: IBus Panel icon
|
||||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||||
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||||
%if %{without xinit}
|
%if %{with xinit}
|
||||||
# ibus-xinit is not available in RHEL
|
# setxkbmap can change XKB options for Xorg desktop sessions
|
||||||
|
Requires: setxkbmap
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: libdbusmenu-gtk3-devel
|
BuildRequires: libdbusmenu-gtk3-devel
|
||||||
|
|
||||||
@ -274,16 +268,18 @@ in non-GNOME desktop sessions likes XFCE or Plasma because gnome-shell
|
|||||||
shows the IBus Icon. This package depends on libdbusmenu-gtk3 for Wayland
|
shows the IBus Icon. This package depends on libdbusmenu-gtk3 for Wayland
|
||||||
desktop sessions.
|
desktop sessions.
|
||||||
|
|
||||||
%if %{without xinit}
|
|
||||||
%package xinit
|
%package xinit
|
||||||
Summary: IBus Xinit
|
Summary: IBus Xinit
|
||||||
Requires: %{name} = %{version}-%{release}
|
Requires: %{name} = %{version}-%{release}
|
||||||
|
%if %{with xinit}
|
||||||
|
# Owner of %%{_sysconfdir}/X11/xinit
|
||||||
|
Requires: xorg-x11-xinit
|
||||||
|
%endif
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
|
||||||
%description xinit
|
%description xinit
|
||||||
This package includes xinit scripts to set environment variables of IBus
|
This package includes xinit scripts to set environment variables of IBus
|
||||||
for Xorg desktop sessions and this is not needed by Wayland desktop sessions.
|
for Xorg desktop sessions and this is not needed by Wayland desktop sessions.
|
||||||
%endif
|
|
||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
Summary: Development tools for ibus
|
Summary: Development tools for ibus
|
||||||
@ -493,6 +489,8 @@ dconf update || :
|
|||||||
%{_datadir}/applications/org.freedesktop.IBus.Panel.Extension.Gtk3.desktop
|
%{_datadir}/applications/org.freedesktop.IBus.Panel.Extension.Gtk3.desktop
|
||||||
%{_datadir}/bash-completion/completions/ibus.bash
|
%{_datadir}/bash-completion/completions/ibus.bash
|
||||||
%{_datadir}/dbus-1/services/*.service
|
%{_datadir}/dbus-1/services/*.service
|
||||||
|
%dir %{_datadir}/GConf
|
||||||
|
%dir %{_datadir}/GConf/gsettings
|
||||||
%{_datadir}/GConf/gsettings/*
|
%{_datadir}/GConf/gsettings/*
|
||||||
%{_datadir}/glib-2.0/schemas/*.xml
|
%{_datadir}/glib-2.0/schemas/*.xml
|
||||||
%{_datadir}/ibus/component
|
%{_datadir}/ibus/component
|
||||||
@ -505,9 +503,6 @@ dconf update || :
|
|||||||
%{_datadir}/man/man7/ibus-emoji.7.gz
|
%{_datadir}/man/man7/ibus-emoji.7.gz
|
||||||
%{_datadir}/man/man5/00-upstream-settings.5.gz
|
%{_datadir}/man/man5/00-upstream-settings.5.gz
|
||||||
%{_datadir}/man/man5/ibus.5.gz
|
%{_datadir}/man/man5/ibus.5.gz
|
||||||
%if %{with xinit}
|
|
||||||
%{_datadir}/man/man5/ibus.conf.5.gz
|
|
||||||
%endif
|
|
||||||
%{_libexecdir}/ibus-engine-simple
|
%{_libexecdir}/ibus-engine-simple
|
||||||
%{_libexecdir}/ibus-dconf
|
%{_libexecdir}/ibus-dconf
|
||||||
%{_libexecdir}/ibus-portal
|
%{_libexecdir}/ibus-portal
|
||||||
@ -523,13 +518,6 @@ dconf update || :
|
|||||||
%{_prefix}/lib/systemd/user/org.freedesktop.IBus.session.*.service
|
%{_prefix}/lib/systemd/user/org.freedesktop.IBus.session.*.service
|
||||||
%python3_sitearch/gi/overrides/__pycache__/*.py*
|
%python3_sitearch/gi/overrides/__pycache__/*.py*
|
||||||
%python3_sitearch/gi/overrides/IBus.py
|
%python3_sitearch/gi/overrides/IBus.py
|
||||||
%if %{with xinit}
|
|
||||||
# ibus owns xinput.d because gnome does not like to depend on imsettings.
|
|
||||||
%dir %{_sysconfdir}/X11/xinit/xinput.d
|
|
||||||
# Do not use %%config(noreplace) to always get the new keywords in _xinputconf
|
|
||||||
# For user customization, $HOME/.xinputrc can be used instead.
|
|
||||||
%config %{_xinputconf}
|
|
||||||
%endif
|
|
||||||
%verify(not mtime) %dir %pkgcache
|
%verify(not mtime) %dir %pkgcache
|
||||||
%verify(not mtime) %dir %pkgcache/bus
|
%verify(not mtime) %dir %pkgcache/bus
|
||||||
# 'ibus write-cache --system' updates the system cache.
|
# 'ibus write-cache --system' updates the system cache.
|
||||||
@ -584,14 +572,16 @@ dconf update || :
|
|||||||
%{_datadir}/applications/org.freedesktop.IBus.Panel.Wayland.Gtk3.desktop
|
%{_datadir}/applications/org.freedesktop.IBus.Panel.Wayland.Gtk3.desktop
|
||||||
%{_libexecdir}/ibus-ui-gtk3
|
%{_libexecdir}/ibus-ui-gtk3
|
||||||
|
|
||||||
%if %{without xinit}
|
|
||||||
%files xinit
|
%files xinit
|
||||||
%{_datadir}/man/man5/ibus.conf.5.gz
|
%{_datadir}/man/man5/ibus.conf.5.gz
|
||||||
|
%if %{without xinit}
|
||||||
# ibus owns xinit directory without xorg-x11-xinit package
|
# ibus owns xinit directory without xorg-x11-xinit package
|
||||||
%dir %{_sysconfdir}/X11/xinit
|
%dir %{_sysconfdir}/X11/xinit
|
||||||
%dir %{_sysconfdir}/X11/xinit/xinput.d
|
%dir %{_sysconfdir}/X11/xinit/xinput.d
|
||||||
%config %{_xinputconf}
|
|
||||||
%endif
|
%endif
|
||||||
|
# Do not use %%config(noreplace) to always get the new keywords in _xinputconf
|
||||||
|
# For user customization, $HOME/.xinputrc can be used instead.
|
||||||
|
%config %{_xinputconf}
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%{_libdir}/ibus
|
%{_libdir}/ibus
|
||||||
@ -624,7 +614,12 @@ dconf update || :
|
|||||||
%{_datadir}/installed-tests/ibus
|
%{_datadir}/installed-tests/ibus
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Fri Jul 12 2024 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.31~beta1-1
|
* Thu Jul 18 2024 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.31~beta1-7
|
||||||
|
- Resolves #2297147 Add directory datadir/GConf/gsettings
|
||||||
|
- Resolves #2297735 Move ibus.conf to ibus-xinit sub package
|
||||||
|
- Fix memory leaks in error handlings
|
||||||
|
|
||||||
|
* Fri Jul 12 2024 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.31~beta1-6
|
||||||
- Bump to 1.5.31-beta1
|
- Bump to 1.5.31-beta1
|
||||||
|
|
||||||
* Mon Jun 10 2024 Python Maint <python-maint@redhat.com> - 1.5.30-6
|
* Mon Jun 10 2024 Python Maint <python-maint@redhat.com> - 1.5.30-6
|
||||||
|
Loading…
Reference in New Issue
Block a user