Re: [OpenWrt-Devel] [PATCH] [rpcd][v2] file: add md5sum support
Hi, comments inline dito. On 12/04/2015 03:56, Luka Perkov wrote: Signed-off-by: Luka Perkov l...@openwrt.org --- changes in v2: * no need to null-terminate string after sprintf() file.c | 35 +++ 1 file changed, 35 insertions(+) diff --git a/file.c b/file.c index 3831c54..9c1b301 100644 --- a/file.c +++ b/file.c @@ -27,6 +27,7 @@ #include sys/wait.h #include libubus.h #include libubox/blobmsg.h +#include libubox/md5.h #include libubox/ustream.h #include rpcd/plugin.h @@ -237,6 +238,39 @@ rpc_file_write(struct ubus_context *ctx, struct ubus_object *obj, } static int +rpc_file_md5(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) +{ +int rv, i; +char *path; +struct stat s; +uint8_t md5[16]; +char *wbuf; + +if (!rpc_check_path(msg, path, s)) +return rpc_errno_status(); + +if (!S_ISREG(s.st_mode)) +return UBUS_STATUS_NOT_SUPPORTED; should this not be - UBUS_STATUS_INVALID_ARGUMENT I think not supported in response to md5sum of a non-regular file (like a chardev or directory) makes sense here - imho. + +if ((rv = md5sum(path, md5)) = 0) +return rpc_errno_status(); + +blob_buf_init(buf, 0); +wbuf = blobmsg_alloc_string_buffer(buf, md5, 33); + +for (i = 0; i 16; i++) +sprintf(wbuf + (i * 2), %02x, (uint8_t) md5[i]); +blobmsg_add_string_buffer(buf); +ubus_send_reply(ctx, req, buf.head); +blob_buf_free(buf); + +return UBUS_STATUS_OK; +} + +static int rpc_file_list(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, struct blob_attr *msg) @@ -611,6 +645,7 @@ rpc_file_api_init(const struct rpc_daemon_ops *o, struct ubus_context *ctx) UBUS_METHOD(write, rpc_file_write, rpc_file_rw_policy), UBUS_METHOD(list,rpc_file_list, rpc_file_r_policy), UBUS_METHOD(stat,rpc_file_stat, rpc_file_r_policy), +UBUS_METHOD(md5, rpc_file_md5, rpc_file_r_policy), UBUS_METHOD(exec,rpc_file_exec, rpc_exec_policy), }; ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] [PATCH] [rpcd][v2] file: add md5sum support
hi, comments inline On 12/04/2015 03:56, Luka Perkov wrote: Signed-off-by: Luka Perkov l...@openwrt.org --- changes in v2: * no need to null-terminate string after sprintf() file.c | 35 +++ 1 file changed, 35 insertions(+) diff --git a/file.c b/file.c index 3831c54..9c1b301 100644 --- a/file.c +++ b/file.c @@ -27,6 +27,7 @@ #include sys/wait.h #include libubus.h #include libubox/blobmsg.h +#include libubox/md5.h #include libubox/ustream.h #include rpcd/plugin.h @@ -237,6 +238,39 @@ rpc_file_write(struct ubus_context *ctx, struct ubus_object *obj, } static int +rpc_file_md5(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) +{ + int rv, i; + char *path; + struct stat s; + uint8_t md5[16]; + char *wbuf; + + if (!rpc_check_path(msg, path, s)) + return rpc_errno_status(); + + if (!S_ISREG(s.st_mode)) + return UBUS_STATUS_NOT_SUPPORTED; should this not be - UBUS_STATUS_INVALID_ARGUMENT + + if ((rv = md5sum(path, md5)) = 0) + return rpc_errno_status(); + + blob_buf_init(buf, 0); + wbuf = blobmsg_alloc_string_buffer(buf, md5, 33); + + for (i = 0; i 16; i++) + sprintf(wbuf + (i * 2), %02x, (uint8_t) md5[i]); + blobmsg_add_string_buffer(buf); + ubus_send_reply(ctx, req, buf.head); + blob_buf_free(buf); + + return UBUS_STATUS_OK; +} + +static int rpc_file_list(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, struct blob_attr *msg) @@ -611,6 +645,7 @@ rpc_file_api_init(const struct rpc_daemon_ops *o, struct ubus_context *ctx) UBUS_METHOD(write, rpc_file_write, rpc_file_rw_policy), UBUS_METHOD(list,rpc_file_list, rpc_file_r_policy), UBUS_METHOD(stat,rpc_file_stat, rpc_file_r_policy), + UBUS_METHOD(md5, rpc_file_md5, rpc_file_r_policy), UBUS_METHOD(exec,rpc_file_exec, rpc_exec_policy), }; ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] [PATCH] [rpcd][v2] file: add md5sum support
[...] + if (!S_ISREG(s.st_mode)) + return UBUS_STATUS_NOT_SUPPORTED; should this not be - UBUS_STATUS_INVALID_ARGUMENT I think not supported in response to md5sum of a non-regular file (like a chardev or directory) makes sense here - imho. your codebase, so your call :-) i'll merge it as is then if that is fine with you ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] [PATCH] [rpcd][v2] file: add md5sum support
Ok, ACK from me then. Thanks for taking care of the merge. ~ Jow ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] [PATCH] [rpcd][v2] file: add md5sum support
Signed-off-by: Luka Perkov l...@openwrt.org --- changes in v2: * no need to null-terminate string after sprintf() file.c | 35 +++ 1 file changed, 35 insertions(+) diff --git a/file.c b/file.c index 3831c54..9c1b301 100644 --- a/file.c +++ b/file.c @@ -27,6 +27,7 @@ #include sys/wait.h #include libubus.h #include libubox/blobmsg.h +#include libubox/md5.h #include libubox/ustream.h #include rpcd/plugin.h @@ -237,6 +238,39 @@ rpc_file_write(struct ubus_context *ctx, struct ubus_object *obj, } static int +rpc_file_md5(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) +{ + int rv, i; + char *path; + struct stat s; + uint8_t md5[16]; + char *wbuf; + + if (!rpc_check_path(msg, path, s)) + return rpc_errno_status(); + + if (!S_ISREG(s.st_mode)) + return UBUS_STATUS_NOT_SUPPORTED; + + if ((rv = md5sum(path, md5)) = 0) + return rpc_errno_status(); + + blob_buf_init(buf, 0); + wbuf = blobmsg_alloc_string_buffer(buf, md5, 33); + + for (i = 0; i 16; i++) + sprintf(wbuf + (i * 2), %02x, (uint8_t) md5[i]); + + blobmsg_add_string_buffer(buf); + ubus_send_reply(ctx, req, buf.head); + blob_buf_free(buf); + + return UBUS_STATUS_OK; +} + +static int rpc_file_list(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, struct blob_attr *msg) @@ -611,6 +645,7 @@ rpc_file_api_init(const struct rpc_daemon_ops *o, struct ubus_context *ctx) UBUS_METHOD(write, rpc_file_write, rpc_file_rw_policy), UBUS_METHOD(list,rpc_file_list, rpc_file_r_policy), UBUS_METHOD(stat,rpc_file_stat, rpc_file_r_policy), + UBUS_METHOD(md5, rpc_file_md5, rpc_file_r_policy), UBUS_METHOD(exec,rpc_file_exec, rpc_exec_policy), }; -- 2.3.5 ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel