}
*cert = d2i_X509_fp(fp, NULL);
- if (!fp) {
+ if (!(*cert)) {
connman_error("Failed to read der file");
err = -EINVAL;
}
}
*cert = PEM_read_X509(fp, cert, NULL, NULL);
- if (!fp) {
+ if (!(*cert)) {
connman_error("Failed to read pem file");
err = -EINVAL;
}
if (!provider) {
connman_error("invalid provider");
- ret = -EINVAL;
+ return -EINVAL;
}
data = vpn_provider_get_string(provider, "IPsec.IKEData");
}
fd = fileno(fp);
+ if (fd == -1) {
+ connman_error("fp is not a valid stream");
+ fclose(fp);
+ return NULL;
+ }
+
fstat(fd, &st);
file_size = st.st_size;
file_buff = g_try_malloc0(sizeof(char)*st.st_size);
return 0;
sect = vici_create_section(NULL);
- if (!sect)
+ if (!sect) {
+ g_free(data);
return -ENOMEM;
+ }
vici_add_kv(sect, "type", type, NULL);
vici_add_kv(sect, "data", data, NULL);
}
}
+static void ipsec_died(struct connman_task *task, int exit_code, void *user_data)
+{
+ DBG("task %p exit_code %d", task, exit_code);
+ unlink(VICI_DEFAULT_URI);
+ vpn_died(task, exit_code, user_data);
+}
+
static int ipsec_connect(struct vpn_provider *provider,
struct connman_task *task, const char *if_name,
vpn_provider_connect_cb_t cb, const char *dbus_sender,
/*
* Start charon daemon using ipsec script of strongSwan.
*/
- err = connman_task_run(task, vpn_died, provider, NULL, NULL, NULL);
+ err = connman_task_run(task, ipsec_died, provider, NULL, NULL, NULL);
if (err < 0) {
connman_error("charon start failed");
if (cb)