[Bug 1899262] Re: Broken dbus GetAll message to wpa supplicant interface properties

Michael Nazzareno Trimarchi 1899262 at bugs.launchpad.net
Thu Oct 22 20:30:01 UTC 2020


dbus getAll let you to download information of any interface. Each
interface has a reference number inside the wpa_supplicant. In my laptop
my wifi is interface 1. In order to ready wifi interface information I
can use dbus as shown in this example:

sudo dbus-send --system --print-reply --dest=fi.w1.wpa_supplicant1
/fi/w1/wpa_supplicant1/Interfaces/1
org.freedesktop.DBus.Properties.GetAll
string:fi.w1.wpa_supplicant1.Interface

The result of the command give you the an answer like:

sudo dbus-send --system --print-reply --dest=fi.w1.wpa_supplicant1 /fi/w1/wpa_supplicant1/Interfaces/1 org.freedesktop.DBus.Properties.GetAll string:fi.w1.wpa_supplicant1.Interface
[sudo] password for michael: 
method return time=1603398113.528196 sender=:1.4 -> destination=:1.267 serial=476 reply_serial=2
   array [
      dict entry(
         string "Capabilities"
         variant             array [
               dict entry(
                  string "Pairwise"
                  variant                      array [
                        string "ccmp"
                        string "tkip"
                     ]
               )
               dict entry(
                  string "Group"
                  variant                      array [
                        string "ccmp"
                        string "tkip"
                        string "wep104"
                        string "wep40"
                     ]
               )
               dict entry(
                  string "GroupMgmt"
                  variant                      array [
                        string "aes-128-cmac"
                     ]
               )
               dict entry(
                  string "KeyMgmt"
                  variant                      array [
                        string "none"
                        string "ieee8021x"
                        string "wpa-eap"
                        string "wpa-ft-eap"
                        string "wpa-eap-sha256"
                        string "wpa-psk"
                        string "wpa-ft-psk"
                        string "wpa-psk-sha256"
                        string "wps"
                     ]
...

If one of the value can not reported the entire request just plain fail.
This is not happen on the same version without any addition patch. In
the debian package was added a patch to report the Stations attribue
that is a part of this answer and the fact that this is only valid on ap
mode does not let reply at all of this message. Now in connman for
example this getAll is used to get out the interface information as you
can find in this snipped code:


int supplicant_dbus_property_get_all(const char *path, const char *interface,
                                supplicant_dbus_property_function function,
                                void *user_data, gpointer caller)
{
        struct property_call_data *property_call = NULL;
        DBusMessage *message;
        DBusPendingCall *call;

        if (!connection)
                return -EINVAL;

        if (!path || !interface)
                return -EINVAL;

        property_call = g_try_new0(struct property_call_data, 1);
        if (!property_call)
                return -ENOMEM;

        message = dbus_message_new_method_call(SUPPLICANT_SERVICE, path,
                                        DBUS_INTERFACE_PROPERTIES, "GetAll");
        if (!message) {
                g_free(property_call);
                return -ENOMEM;
        }
...


static void interface_added(DBusMessageIter *iter, void *user_data)
{
...
       if (!properties_appended) {
                supplicant_dbus_property_get_all(path,
                                                SUPPLICANT_INTERFACE ".Interface", << this call fail
                                                interface_property, interface,
                                                interface);
                return;
        }

...


This break all the other call try to access the Interface object in dbus dictionary

-- 
You received this bug notification because you are a member of Ubuntu
Sponsors Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1899262

Title:
  Broken dbus GetAll message to wpa supplicant interface properties

Status in wpa package in Ubuntu:
  New

Bug description:
  dbus-send is able to read the properties of interface using GetAll. Those information include interface name, status, encryption method, etc. 
  The regression was introduced when someone try to have the Station attribute supported

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/wpa/+bug/1899262/+subscriptions



More information about the Ubuntu-sponsors mailing list