From 84dbb8c1cd134f281ffd007dabeec16530fb1a2d Mon Sep 17 00:00:00 2001 From: Sung-jae Park Date: Tue, 6 Aug 2013 17:11:23 +0900 Subject: [PATCH] Fix the prevent issues. Change-Id: I34b194ff1b551dfcc13f588253198e885f3e258d --- packaging/data-provider-master.spec | 2 +- src/buffer_handler.c | 4 +++- src/file_service.c | 10 ++++++---- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packaging/data-provider-master.spec b/packaging/data-provider-master.spec index e74fad7..3f989e5 100644 --- a/packaging/data-provider-master.spec +++ b/packaging/data-provider-master.spec @@ -1,6 +1,6 @@ Name: data-provider-master Summary: Master service provider for liveboxes. -Version: 0.25.2 +Version: 0.25.3 Release: 1 Group: HomeTF/Livebox License: Flora License diff --git a/src/buffer_handler.c b/src/buffer_handler.c index ea35e84..2c5493c 100644 --- a/src/buffer_handler.c +++ b/src/buffer_handler.c @@ -1332,6 +1332,7 @@ static inline struct buffer *raw_open_file(const char *filename) struct buffer *buffer; int fd; off_t off; + int ret; fd = open(filename, O_RDONLY); if (fd < 0) { @@ -1373,7 +1374,8 @@ static inline struct buffer *raw_open_file(const char *filename) buffer->refcnt = 0; buffer->info = (void *)off; - if (read(fd, buffer->data, off) < 0) { + ret = read(fd, buffer->data, off); + if (ret < 0) { ErrPrint("read: %s\n", strerror(errno)); free(buffer); diff --git a/src/file_service.c b/src/file_service.c index 15c2304..eabf755 100644 --- a/src/file_service.c +++ b/src/file_service.c @@ -120,6 +120,8 @@ static inline struct request_item *create_request_item(struct tcb *tcb, int type item->data.shm = (int)data; break; default: + ErrPrint("Invalid type of request\n"); + free(item); return NULL; } @@ -398,14 +400,10 @@ static int send_file(int handle, const struct request_item *item) while (fsize > 0) { if (fsize > PKT_CHUNKSZ) { body->size = PKT_CHUNKSZ; - fsize -= PKT_CHUNKSZ; } else { body->size = fsize; - fsize = 0; } - pktsz = sizeof(*body) + body->size; - ret = read(fd, body->data, body->size); if (ret < 0) { ErrPrint("read: %s\n", strerror(errno)); @@ -413,6 +411,10 @@ static int send_file(int handle, const struct request_item *item) break; } + body->size = ret; + fsize -= ret; + pktsz = sizeof(*body) + body->size; + /* Send BODY */ ret = com_core_send(handle, (void *)body, pktsz, 2.0f); if (ret != pktsz) { -- 2.7.4