diff options
author | Florian Fainelli <f.fainelli@gmail.com> | 2016-12-03 09:34:45 -0800 |
---|---|---|
committer | John Crispin <john@phrozen.org> | 2016-12-11 09:15:27 +0100 |
commit | 26c98ec94d7aa6d5d3fe6c3fccc78b26a2bf11d4 (patch) | |
tree | 888f790c11b9d1ac13483534ca1f38e2f12f4ced | |
parent | f4089654a399fbea6b8fd25844fbb43d259e0332 (diff) | |
download | rpcd-26c98ec94d7aa6d5d3fe6c3fccc78b26a2bf11d4.tar.gz |
sys: Check return values of chdir and write
Fixes the following warnings:
rpcd/sys.c: In function 'rpc_cgi_password_set':
rpcd/sys.c:116:8: error: ignoring return value of 'chdir', declared with attribute warn_unused_result [-Werror=unused-result]
chdir("/");
^
rpcd/sys.c:125:8: error: ignoring return value of 'write', declared with attribute warn_unused_result [-Werror=unused-result]
write(fds[1], blobmsg_data(tb[RPC_P_PASSWORD]),
^
rpcd/sys.c:127:8: error: ignoring return value of 'write', declared with attribute warn_unused_result [-Werror=unused-result]
write(fds[1], "\n", 1);
^
rpcd/sys.c:131:8: error: ignoring return value of 'write', declared with attribute warn_unused_result [-Werror=unused-result]
write(fds[1], blobmsg_data(tb[RPC_P_PASSWORD]),
^
rpcd/sys.c:133:8: error: ignoring return value of 'write', declared with attribute warn_unused_result [-Werror=unused-result]
write(fds[1], "\n", 1);
^
cc1: all warnings being treated as errors
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
-rw-r--r-- | sys.c | 23 |
1 files changed, 18 insertions, 5 deletions
@@ -76,6 +76,8 @@ rpc_cgi_password_set(struct ubus_context *ctx, struct ubus_object *obj, int fd, fds[2]; struct stat s; struct blob_attr *tb[__RPC_P_MAX]; + ssize_t n; + int ret; blobmsg_parse(rpc_password_policy, __RPC_P_MAX, tb, blob_data(msg), blob_len(msg)); @@ -113,7 +115,9 @@ rpc_cgi_password_set(struct ubus_context *ctx, struct ubus_object *obj, close(fd); } - chdir("/"); + ret = chdir("/"); + if (ret < 0) + return rpc_errno_status(); if (execl("/usr/bin/passwd", "/usr/bin/passwd", blobmsg_data(tb[RPC_P_USER]), NULL)) @@ -122,15 +126,24 @@ rpc_cgi_password_set(struct ubus_context *ctx, struct ubus_object *obj, default: close(fds[0]); - write(fds[1], blobmsg_data(tb[RPC_P_PASSWORD]), + n = write(fds[1], blobmsg_data(tb[RPC_P_PASSWORD]), blobmsg_data_len(tb[RPC_P_PASSWORD]) - 1); - write(fds[1], "\n", 1); + if (n < 0) + return rpc_errno_status(); + + n = write(fds[1], "\n", 1); + if (n < 0) + return rpc_errno_status(); usleep(100 * 1000); - write(fds[1], blobmsg_data(tb[RPC_P_PASSWORD]), + n = write(fds[1], blobmsg_data(tb[RPC_P_PASSWORD]), blobmsg_data_len(tb[RPC_P_PASSWORD]) - 1); - write(fds[1], "\n", 1); + if (n < 0) + return rpc_errno_status(); + n = write(fds[1], "\n", 1); + if (n < 0) + return rpc_errno_status(); close(fds[1]); |