diff options
author | Jiří Klimeš <jklimes@redhat.com> | 2014-12-15 16:36:14 +0100 |
---|---|---|
committer | Jiří Klimeš <jklimes@redhat.com> | 2014-12-15 16:36:14 +0100 |
commit | fa94aaf3a52887c0d225ccf32a689cdaa40feeec (patch) | |
tree | de086c73309cfd0c2b9bcc33aaa6d8d82b57ff00 | |
parent | 471375a3e1007f43d65149c966415d5055daf9da (diff) | |
parent | 5252287209f77cd43b5158d4657aea81414069c4 (diff) | |
download | NetworkManager-fa94aaf3a52887c0d225ccf32a689cdaa40feeec.tar.gz |
merge: fix all defects found by coverity (bgo #741122)
https://bugzilla.gnome.org/show_bug.cgi?id=741122
-rw-r--r-- | clients/cli/connections.c | 2 | ||||
-rw-r--r-- | clients/cli/utils.c | 11 | ||||
-rw-r--r-- | include/nm-test-utils.h | 33 | ||||
-rw-r--r-- | libnm-core/nm-setting-vlan.c | 3 | ||||
-rw-r--r-- | libnm-core/nm-utils.c | 4 | ||||
-rw-r--r-- | libnm-core/tests/test-general.c | 44 | ||||
-rw-r--r-- | libnm-glib/tests/test-nm-client.c | 4 | ||||
-rw-r--r-- | libnm-util/nm-setting-vlan.c | 3 | ||||
-rw-r--r-- | libnm/tests/test-nm-client.c | 2 | ||||
-rw-r--r-- | src/devices/nm-device.c | 12 | ||||
-rw-r--r-- | src/settings/plugins/ifcfg-rh/plugin.c | 6 | ||||
-rw-r--r-- | src/tests/test-general-with-expect.c | 6 |
12 files changed, 79 insertions, 51 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c index 6a532b5852..5de9cc9d13 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -5256,6 +5256,7 @@ cleanup_olpc: add_ip4_address_to_connection (ip4addr, connection); } + /* coverity[dead_error_begin] */ if (gw4) { NMSettingIPConfig *s_ip = nm_connection_get_setting_ip4_config (connection); @@ -5288,6 +5289,7 @@ cleanup_olpc: add_ip6_address_to_connection (ip6addr, connection); } + /* coverity[dead_error_begin] */ if (gw6) { NMSettingIPConfig *s_ip = nm_connection_get_setting_ip6_config (connection); diff --git a/clients/cli/utils.c b/clients/cli/utils.c index cb8fbf018a..60cf9f93f5 100644 --- a/clients/cli/utils.c +++ b/clients/cli/utils.c @@ -510,13 +510,10 @@ nmc_string_is_valid (const char *input, const char **allowed, GError **error) finish: if (ret == NULL) { char *valid_vals = g_strjoinv (", ", (char **) allowed); - if (!input || !*input) { - g_set_error (error, 1, 0, _("missing name, try one of [%s]"), - valid_vals); - } else { - g_set_error (error, 1, 0, _("'%s' not among [%s]"), - input ? input : "", valid_vals); - } + if (!input || !*input) + g_set_error (error, 1, 0, _("missing name, try one of [%s]"), valid_vals); + else + g_set_error (error, 1, 0, _("'%s' not among [%s]"), input, valid_vals); g_free (valid_vals); } diff --git a/include/nm-test-utils.h b/include/nm-test-utils.h index 44a81bbe51..dcfa46eba3 100644 --- a/include/nm-test-utils.h +++ b/include/nm-test-utils.h @@ -945,6 +945,39 @@ nmtst_assert_connection_unnormalizable (NMConnection *con, g_clear_error (&error); } +inline static void +nmtst_assert_setting_verifies (NMSetting *setting) +{ + /* assert that the setting verifies without an error */ + + GError *error = NULL; + gboolean success; + + g_assert (NM_IS_SETTING (setting)); + + success = nm_setting_verify (setting, NULL, &error); + g_assert_no_error (error); + g_assert (success); +} + +inline static void +nmtst_assert_setting_verify_fails (NMSetting *setting, + GQuark expect_error_domain, + gint expect_error_code) +{ + /* assert that the setting verification fails */ + + GError *error = NULL; + gboolean success; + + g_assert (NM_IS_SETTING (setting)); + + success = nm_setting_verify (setting, NULL, &error); + nmtst_assert_error (error, expect_error_domain, expect_error_code, NULL); + g_assert (!success); + g_clear_error (&error); +} + #endif #ifdef __NM_UTILS_H__ diff --git a/libnm-core/nm-setting-vlan.c b/libnm-core/nm-setting-vlan.c index 7b7ad91cf6..f622ddcbfd 100644 --- a/libnm-core/nm-setting-vlan.c +++ b/libnm-core/nm-setting-vlan.c @@ -223,7 +223,8 @@ nm_setting_vlan_add_priority_str (NMSettingVlan *setting, list = get_map (setting, map); item = priority_map_new_from_str (map, str); - g_return_val_if_fail (item != NULL, FALSE); + if (!item) + g_return_val_if_reached (FALSE); /* Duplicates get replaced */ for (iter = list; iter; iter = g_slist_next (iter)) { diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c index 0f85e52a0e..4b284cfefd 100644 --- a/libnm-core/nm-utils.c +++ b/libnm-core/nm-utils.c @@ -2054,7 +2054,9 @@ nm_utils_rsa_key_encrypt (const guint8 *data, goto out; key = crypto_make_des_aes_key (CIPHER_DES_EDE3_CBC, &salt[0], salt_len, in_password, &key_len, NULL); - g_return_val_if_fail (key, NULL); + if (!key) + g_return_val_if_reached (NULL); + enc = crypto_encrypt (CIPHER_DES_EDE3_CBC, data, len, salt, salt_len, key, key_len, &enc_len, error); if (!enc) goto out; diff --git a/libnm-core/tests/test-general.c b/libnm-core/tests/test-general.c index 46d58ca3d9..44dc277d16 100644 --- a/libnm-core/tests/test-general.c +++ b/libnm-core/tests/test-general.c @@ -345,8 +345,7 @@ test_setting_ip4_config_labels (void) nm_setting_ip_config_add_address (s_ip4, addr); nm_ip_address_unref (addr); - nm_setting_verify (NM_SETTING (s_ip4), NULL, &error); - g_assert_no_error (error); + nmtst_assert_setting_verifies (NM_SETTING (s_ip4)); addr = nm_setting_ip_config_get_address (s_ip4, 0); label = nm_ip_address_get_attribute (addr, "label"); @@ -378,8 +377,7 @@ test_setting_ip4_config_labels (void) nm_setting_ip_config_add_address (s_ip4, addr); nm_ip_address_unref (addr); - nm_setting_verify (NM_SETTING (s_ip4), NULL, &error); - g_assert_no_error (error); + nmtst_assert_setting_verifies (NM_SETTING (s_ip4)); addr = nm_setting_ip_config_get_address (s_ip4, 1); label = nm_ip_address_get_attribute (addr, "label"); @@ -393,8 +391,7 @@ test_setting_ip4_config_labels (void) nm_setting_ip_config_add_address (s_ip4, addr); nm_ip_address_unref (addr); - nm_setting_verify (NM_SETTING (s_ip4), NULL, &error); - g_assert_no_error (error); + nmtst_assert_setting_verifies (NM_SETTING (s_ip4)); addr = nm_setting_ip_config_get_address (s_ip4, 2); label = nm_ip_address_get_attribute (addr, "label"); @@ -402,8 +399,7 @@ test_setting_ip4_config_labels (void) /* Remove addr 1 and re-verify remaining addresses */ nm_setting_ip_config_remove_address (s_ip4, 0); - nm_setting_verify (NM_SETTING (s_ip4), NULL, &error); - g_assert_no_error (error); + nmtst_assert_setting_verifies (NM_SETTING (s_ip4)); addr = nm_setting_ip_config_get_address (s_ip4, 0); g_assert_cmpstr (nm_ip_address_get_address (addr), ==, "2.2.2.2"); @@ -514,8 +510,7 @@ test_setting_ip4_config_labels (void) NM_SETTING_IP_CONFIG_ADDRESSES, addrs, NULL); g_ptr_array_unref (addrs); - nm_setting_verify (NM_SETTING (s_ip4), NULL, &error); - g_assert_no_error (error); + nmtst_assert_setting_verifies (NM_SETTING (s_ip4)); g_assert_cmpint (nm_setting_ip_config_get_num_addresses (s_ip4), ==, 2); addr = nm_setting_ip_config_get_address (s_ip4, 0); @@ -555,8 +550,7 @@ test_setting_ip4_config_address_data (void) nm_setting_ip_config_add_address (s_ip4, addr); nm_ip_address_unref (addr); - nm_setting_verify (NM_SETTING (s_ip4), NULL, &error); - g_assert_no_error (error); + nmtst_assert_setting_verifies (NM_SETTING (s_ip4)); /* addr 2 */ addr = nm_ip_address_new (AF_INET, "2.2.2.2", 24, &error); @@ -564,8 +558,7 @@ test_setting_ip4_config_address_data (void) nm_setting_ip_config_add_address (s_ip4, addr); nm_ip_address_unref (addr); - nm_setting_verify (NM_SETTING (s_ip4), NULL, &error); - g_assert_no_error (error); + nmtst_assert_setting_verifies (NM_SETTING (s_ip4)); /* The client-side D-Bus serialization should include the attributes in * "address-data", and should not have an "addresses" property. @@ -722,8 +715,6 @@ static void test_setting_gsm_apn_underscore (void) { NMSettingGsm *s_gsm; - GError *error = NULL; - gboolean success; s_gsm = (NMSettingGsm *) nm_setting_gsm_new (); g_assert (s_gsm); @@ -732,30 +723,23 @@ test_setting_gsm_apn_underscore (void) /* 65-character long */ g_object_set (s_gsm, NM_SETTING_GSM_APN, "foobar_baz", NULL); - success = nm_setting_verify (NM_SETTING (s_gsm), NULL, &error); - g_assert_no_error (error); - g_assert (success == TRUE); + nmtst_assert_setting_verifies (NM_SETTING (s_gsm)); } static void test_setting_gsm_without_number (void) { NMSettingGsm *s_gsm; - GError *error = NULL; - gboolean success; s_gsm = (NMSettingGsm *) nm_setting_gsm_new (); g_assert (s_gsm); g_object_set (s_gsm, NM_SETTING_GSM_NUMBER, NULL, NULL); - success = nm_setting_verify (NM_SETTING (s_gsm), NULL, &error); - g_assert_no_error (error); - g_assert (success == TRUE); + nmtst_assert_setting_verifies (NM_SETTING (s_gsm)); g_object_set (s_gsm, NM_SETTING_GSM_NUMBER, "", NULL); - success = nm_setting_verify (NM_SETTING (s_gsm), NULL, &error); - g_assert_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_PROPERTY); - g_error_free (error); + nmtst_assert_setting_verify_fails (NM_SETTING (s_gsm), NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY); } static NMSettingWirelessSecurity * @@ -3009,9 +2993,7 @@ test_setting_802_1x_changed_signal (void) static void test_setting_old_uuid (void) { - GError *error = NULL; NMSetting *setting; - gboolean success; /* NetworkManager-0.9.4.0 generated 40-character UUIDs with no dashes, * like this one. Test that we maintain compatibility. */ @@ -3024,9 +3006,7 @@ test_setting_old_uuid (void) NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRED_SETTING_NAME, NULL); - success = nm_setting_verify (NM_SETTING (setting), NULL, &error); - g_assert_no_error (error); - g_assert (success == TRUE); + nmtst_assert_setting_verifies (NM_SETTING (setting)); } /******************************************************************************/ diff --git a/libnm-glib/tests/test-nm-client.c b/libnm-glib/tests/test-nm-client.c index 989c097667..af3722eba4 100644 --- a/libnm-glib/tests/test-nm-client.c +++ b/libnm-glib/tests/test-nm-client.c @@ -48,6 +48,7 @@ test_client_new (void) NMClient *client; DBusGConnection *bus; GError *error = NULL; + gboolean success; bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error); g_assert_no_error (error); @@ -60,8 +61,9 @@ test_client_new (void) dbus_g_connection_unref (bus); - g_initable_init (G_INITABLE (client), NULL, &error); + success = g_initable_init (G_INITABLE (client), NULL, &error); g_assert_no_error (error); + g_assert (success == TRUE); return client; } diff --git a/libnm-util/nm-setting-vlan.c b/libnm-util/nm-setting-vlan.c index f009629242..43b6a91c13 100644 --- a/libnm-util/nm-setting-vlan.c +++ b/libnm-util/nm-setting-vlan.c @@ -260,7 +260,8 @@ nm_setting_vlan_add_priority_str (NMSettingVlan *setting, list = get_map (setting, map); item = priority_map_new_from_str (map, str); - g_return_val_if_fail (item != NULL, FALSE); + if (!item) + g_return_val_if_reached (FALSE); /* Duplicates get replaced */ for (iter = list; iter; iter = g_slist_next (iter)) { diff --git a/libnm/tests/test-nm-client.c b/libnm/tests/test-nm-client.c index 48b16b4690..3541c741e1 100644 --- a/libnm/tests/test-nm-client.c +++ b/libnm/tests/test-nm-client.c @@ -90,6 +90,7 @@ test_device_added (void) /* Tell the test service to add a new device */ nm_test_service_add_device (sinfo, client, "AddWiredDevice", "eth0"); + /* coverity[loop_condition] */ while (!notified) g_main_context_iteration (NULL, TRUE); @@ -188,6 +189,7 @@ test_device_added_signal_after_init (void) /* Ensure the 'device-added' signal doesn't show up before * the 'Devices' property change notification */ + /* coverity[loop_condition] */ while (!(result & SIGNAL_MASK) && !(result & NOTIFY_MASK)) g_main_context_iteration (NULL, TRUE); diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index cd548d260e..c04a973877 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -5037,16 +5037,18 @@ send_arps (NMDevice *self, const char *mode_arg) for (i = 0; i < num; i++) { gs_free char *tmp_str = NULL; + gboolean success; + addr = nm_setting_ip_config_get_address (s_ip4, i); argv[ip_arg] = nm_ip_address_get_address (addr); _LOGD (LOGD_DEVICE | LOGD_IP4, "arping: run %s", (tmp_str = g_strjoinv (" ", (char **) argv))); - g_spawn_async (NULL, (char **) argv, NULL, - G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL, - nm_unblock_posix_signals, - NULL, NULL, &error); - if (error) { + success = g_spawn_async (NULL, (char **) argv, NULL, + G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL, + nm_unblock_posix_signals, + NULL, NULL, &error); + if (!success) { _LOGW (LOGD_DEVICE | LOGD_IP4, "arping: could not send ARP for local address %s: %s", argv[ip_arg], error->message); diff --git a/src/settings/plugins/ifcfg-rh/plugin.c b/src/settings/plugins/ifcfg-rh/plugin.c index 2f47845276..2dced56b49 100644 --- a/src/settings/plugins/ifcfg-rh/plugin.c +++ b/src/settings/plugins/ifcfg-rh/plugin.c @@ -671,10 +671,12 @@ plugin_set_hostname (SCPluginIfcfg *plugin, const char *hostname) #if HAVE_SELINUX security_context_t se_ctx_prev = NULL, se_ctx = NULL; struct stat file_stat = { .st_mode = 0 }; + mode_t st_mode = 0; /* Get default context for HOSTNAME_FILE and set it for fscreate */ - stat (HOSTNAME_FILE, &file_stat); - matchpathcon (HOSTNAME_FILE, file_stat.st_mode, &se_ctx); + if (stat (HOSTNAME_FILE, &file_stat) == 0) + st_mode = file_stat.st_mode; + matchpathcon (HOSTNAME_FILE, st_mode, &se_ctx); matchpathcon_fini (); getfscreatecon (&se_ctx_prev); setfscreatecon (se_ctx); diff --git a/src/tests/test-general-with-expect.c b/src/tests/test-general-with-expect.c index bee266f343..f5010dae4a 100644 --- a/src/tests/test-general-with-expect.c +++ b/src/tests/test-general-with-expect.c @@ -137,7 +137,10 @@ test_nm_utils_kill_child_create_and_join_pgroup (void) g_assert (err == 0); pgid = fork(); - g_assert (pgid >= 0); + if (pgid < 0) { + g_assert_not_reached (); + return pgid; + } if (pgid == 0) { /* child process... */ @@ -299,6 +302,7 @@ test_nm_utils_kill_child (void) g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, "*kill child process 'test-a-3-0' (*): unexpected error sending Unexpected signal: Invalid argument (22)"); g_test_expect_message ("NetworkManager", G_LOG_LEVEL_DEBUG, "*kill child process 'test-a-3-0' (*): invoke callback: killing child failed"); + /* coverity[negative_returns] */ test_nm_utils_kill_child_async_do ("test-a-3-0", pid3a, -1, 1000 / 2, FALSE, NULL); g_test_expect_message ("NetworkManager", G_LOG_LEVEL_DEBUG, "*kill child process 'test-a-3-1' (*): wait for process to terminate after sending SIGTERM (15) (send SIGKILL in 500 milliseconds)..."); |