Fix derefrencing of NULL pointer
[platform/upstream/connman.git] / vpn / vpn-agent.c
old mode 100644 (file)
new mode 100755 (executable)
index 0281764..b0b582b
@@ -35,7 +35,7 @@
 #include "vpn-agent.h"
 #include "vpn.h"
 
-connman_bool_t vpn_agent_check_reply_has_dict(DBusMessage *reply)
+bool vpn_agent_check_reply_has_dict(DBusMessage *reply)
 {
        const char *signature = DBUS_TYPE_ARRAY_AS_STRING
                DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
@@ -43,8 +43,8 @@ connman_bool_t vpn_agent_check_reply_has_dict(DBusMessage *reply)
                DBUS_TYPE_VARIANT_AS_STRING
                DBUS_DICT_ENTRY_END_CHAR_AS_STRING;
 
-       if (dbus_message_has_signature(reply, signature) == TRUE)
-               return TRUE;
+       if (dbus_message_has_signature(reply, signature))
+               return true;
 
        connman_warn("Reply %s to %s from %s has wrong signature %s",
                        signature,
@@ -52,7 +52,7 @@ connman_bool_t vpn_agent_check_reply_has_dict(DBusMessage *reply)
                        dbus_message_get_sender(reply),
                        dbus_message_get_signature(reply));
 
-       return FALSE;
+       return false;
 }
 
 static void request_input_append_name(DBusMessageIter *iter, void *user_data)
@@ -98,3 +98,48 @@ void vpn_agent_append_host_and_name(DBusMessageIter *iter,
                                request_input_append_name,
                                provider);
 }
+
+struct user_info_data {
+       struct vpn_provider *provider;
+       const char *username_str;
+};
+
+static void request_input_append_user_info(DBusMessageIter *iter,
+                                               void *user_data)
+{
+       struct user_info_data *data = user_data;
+       struct vpn_provider *provider = data->provider;
+       const char *str = "string";
+
+       connman_dbus_dict_append_basic(iter, "Type",
+                               DBUS_TYPE_STRING, &str);
+       str = "mandatory";
+       connman_dbus_dict_append_basic(iter, "Requirement",
+                               DBUS_TYPE_STRING, &str);
+
+       if (data->username_str) {
+               str = vpn_provider_get_string(provider, data->username_str);
+               if (str)
+                       connman_dbus_dict_append_basic(iter, "Value",
+                                               DBUS_TYPE_STRING, &str);
+       }
+}
+
+void vpn_agent_append_user_info(DBusMessageIter *iter,
+                               struct vpn_provider *provider,
+                               const char *username_str)
+{
+       struct user_info_data data = {
+               .provider = provider,
+               .username_str = username_str
+       };
+
+       connman_dbus_dict_append_dict(iter, "Username",
+                               request_input_append_user_info,
+                               &data);
+
+       data.username_str = NULL;
+       connman_dbus_dict_append_dict(iter, "Password",
+                               request_input_append_user_info,
+                               &data);
+}