Skip to content

Replace eldbus with gdbus#150

Open
gin7773 wants to merge 5 commits intoflutter-tizen:masterfrom
gin7773:replace_eldbus_with_gdbus
Open

Replace eldbus with gdbus#150
gin7773 wants to merge 5 commits intoflutter-tizen:masterfrom
gin7773:replace_eldbus_with_gdbus

Conversation

@gin7773
Copy link
Contributor

@gin7773 gin7773 commented Feb 10, 2026

Fix #148

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request replaces the eldbus library with gdbus for D-Bus communication within the accessibility channel, updating build configurations and refactoring the C++ implementation. However, it introduces critical and high-severity command injection vulnerabilities. A critical issue exists in tools/generate_sysroot.py due to improper handling of filenames in shell commands, and a high-severity vulnerability is present in flutter/shell/platform/tizen/channels/accessibility_channel.cc where untrusted input from the Flutter engine is used in a D-Bus method call without sufficient sanitization. Additionally, the new gdbus code could be improved by leveraging g_autoptr for automatic resource management, which is a GLib best practice that will enhance code safety and maintainability.

eldbus_connection_send(accessibility_bus_, eldbus_message, nullptr,
nullptr, -1);
GVariant* params = g_variant_new("(sb)", msg->c_str(), TRUE);
g_dbus_connection_call(
Copy link
Member

@JSUYA JSUYA Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this g_dbus_connection_call() working properly? When I tested it, the screen reader didn't read SemanticsService.announce() . (TV)

    SemanticsService.announce("TEST", TextDirection.ltr);

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The screen reader failed because the connection was closing. This was due to a missing G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION flag in the g_dbus_connection_new_for_address_sync() call, which is required for the standard handshake protocol of A11Y service. I've updated the code to include this flag.

return;
}

g_dbus_proxy_call(bus_, "GetAddress", nullptr, G_DBUS_CALL_FLAGS_NONE, -1,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What happens if g_dbus_proxy_call() or the g_dbus_connection_call() function below fails?
I'm not sure, but it seems like error handling would be necessary.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

g_dbus_connection_call() is an asynchronous function. I have implemented the callback function where I handle error checks for the returned results: OnAccessibilityBusAddressGet() for GetAddress and _readCommandCallback() for ReadCommand.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Replace eldbus with gdbus

4 participants