mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-26 02:19:26 +01:00
storage: provide proper feedback on failures
network_settings_load expects NULL value to be returned on failed attempts to read the settings files inside of storage_network_open. At the same time storage_network_open used to always return an initialized l_settings structure despite the outcome of the read operations, indicating a success.
This commit is contained in:
parent
f6ae59e48e
commit
e7d1b779e7
@ -253,15 +253,29 @@ const char *storage_network_ssid_from_path(const char *path,
|
|||||||
struct l_settings *storage_network_open(const char *type, const char *ssid)
|
struct l_settings *storage_network_open(const char *type, const char *ssid)
|
||||||
{
|
{
|
||||||
struct l_settings *settings;
|
struct l_settings *settings;
|
||||||
|
struct stat st;
|
||||||
char *path;
|
char *path;
|
||||||
|
|
||||||
if (ssid == NULL || type == NULL)
|
if (ssid == NULL || type == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
path = get_network_file_path(type, ssid);
|
path = get_network_file_path(type, ssid);
|
||||||
|
|
||||||
|
if (lstat(path, &st) < 0) {
|
||||||
|
l_free(path);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
settings = l_settings_new();
|
settings = l_settings_new();
|
||||||
|
|
||||||
l_settings_load_from_file(settings, path);
|
if (!l_settings_load_from_file(settings, path)) {
|
||||||
|
l_free(path);
|
||||||
|
l_settings_free(settings);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
l_free(path);
|
l_free(path);
|
||||||
|
|
||||||
return settings;
|
return settings;
|
||||||
|
Loading…
Reference in New Issue
Block a user