You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libaccounts-qt/0005-Use-gboolean-instead-o...

35 lines
1.1 KiB

From 207139e65e6707100d2e92d96b1a4c3bfaa88a5f Mon Sep 17 00:00:00 2001
From: Mikko Harju <mikko.harju@jolla.com>
Date: Thu, 13 Aug 2015 03:09:07 -0400
Subject: [PATCH 5/6] Use gboolean instead of bool
The "use-dbus" is a boolean g_object property, with actual type of
gboolean, and gboolean is typedef int. g_object_get is a variadic
function (no static type checking), and stores the queried value
through pointer-to-int. If sizeof(bool) happens to be less than
sizeof(int) and the stack variable useDBus is packed tightly,
this can lead to stack corruption.
Compiling the lib with -fstack-protector immediately pointed out
the problem.
---
Accounts/manager.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Accounts/manager.cpp b/Accounts/manager.cpp
index 2eb077f..1ac78d0 100644
--- a/Accounts/manager.cpp
+++ b/Accounts/manager.cpp
@@ -530,7 +530,7 @@ bool Manager::abortOnTimeout() const
*/
Manager::Options Manager::options() const
{
- bool useDBus = true;
+ gboolean useDBus = true;
g_object_get(d->m_manager,
"use-dbus", &useDBus,
NULL);
--
2.5.0