X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=wireless.c;h=c099a3334de44828a8019cb5bed8a33459c21aa4;hb=9507e54cab4e270bff14245ecf2599ad59a5dfac;hp=7cc832dfbff0909fe1676a8090c2ac9ea506a332;hpb=5a195e18041067536566e1a4083c91b88fde63e8;p=project%2Fnetifd.git diff --git a/wireless.c b/wireless.c index 7cc832d..c099a33 100644 --- a/wireless.c +++ b/wireless.c @@ -197,6 +197,7 @@ wireless_device_setup_cancel(struct wireless_device *wdev) if (wdev->cancel) return; + D(WIRELESS, "Cancel wireless device '%s' setup\n", wdev->name); wdev->cancel = true; uloop_timeout_set(&wdev->timeout, 10 * 1000); } @@ -709,6 +710,7 @@ wireless_device_add_process(struct wireless_device *wdev, struct blob_attr *data struct blob_attr *tb[__PROC_ATTR_MAX]; struct wireless_process *proc; char *name; + int pid; if (!data) return UBUS_STATUS_INVALID_ARGUMENT; @@ -717,10 +719,14 @@ wireless_device_add_process(struct wireless_device *wdev, struct blob_attr *data if (!tb[PROC_ATTR_PID] || !tb[PROC_ATTR_EXE]) return UBUS_STATUS_INVALID_ARGUMENT; + pid = blobmsg_get_u32(tb[PROC_ATTR_PID]); + if (pid < 2) + return UBUS_STATUS_INVALID_ARGUMENT; + proc = calloc_a(sizeof(*proc), &name, strlen(blobmsg_data(tb[PROC_ATTR_EXE])) + 1); - proc->pid = blobmsg_get_u32(tb[PROC_ATTR_PID]); + proc->pid = pid; proc->exe = strcpy(name, blobmsg_data(tb[PROC_ATTR_EXE])); if (tb[PROC_ATTR_REQUIRED]) @@ -757,7 +763,7 @@ wireless_device_process_kill_all(struct wireless_device *wdev, struct blob_attr signal = blobmsg_get_u32(cur); if ((cur = tb[KILL_ATTR_IMMEDIATE])) - immediate = blobmsg_get_u32(cur); + immediate = blobmsg_get_bool(cur); if (wdev->state != IFS_TEARDOWN || wdev->kill_request) return UBUS_STATUS_PERMISSION_DENIED;