From 7d2ebf43876c1550f7671092589b625324f860bb Mon Sep 17 00:00:00 2001 From: Paul Kocialkowski Date: Sat, 2 Aug 2014 20:59:34 +0200 Subject: rfs: Size function for helpers that return data with non-explicit size Signed-off-by: Paul Kocialkowski --- include/rfs.h | 1 + samsung-ipc/rfs.c | 24 +++++++++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/include/rfs.h b/include/rfs.h index daa3f61..024fad9 100644 --- a/include/rfs.h +++ b/include/rfs.h @@ -74,6 +74,7 @@ void *ipc_nv_data_read(struct ipc_client *client, size_t size, unsigned int offset); int ipc_nv_data_write(struct ipc_client *client, const void *data, size_t size, unsigned int offset); +size_t ipc_rfs_nv_data_item_response_size_setup(const void *data, size_t size); void *ipc_rfs_nv_read_item_response_setup(const void *data, size_t size, unsigned int offset); diff --git a/samsung-ipc/rfs.c b/samsung-ipc/rfs.c index 086646c..915dd1d 100644 --- a/samsung-ipc/rfs.c +++ b/samsung-ipc/rfs.c @@ -656,6 +656,18 @@ complete: return rc; } +size_t ipc_rfs_nv_data_item_response_size_setup(const void *data, size_t size) +{ + size_t length; + + if (data == NULL) + size = 0; + + length = sizeof(struct ipc_rfs_nv_read_item_response_header) + size; + + return length; +} + void *ipc_rfs_nv_read_item_response_setup(const void *data, size_t size, unsigned int offset) { @@ -665,14 +677,16 @@ void *ipc_rfs_nv_read_item_response_setup(const void *data, size_t size, unsigned char confirm; unsigned char *p; - if (data != NULL && size > 0) { - length = sizeof(struct ipc_rfs_nv_read_item_response_header) + size; - confirm = 1; - } else { - length = sizeof(struct ipc_rfs_nv_read_item_response_header); + length = ipc_rfs_nv_data_item_response_size_setup(data, size); + if (length == 0) + return NULL; + + if (data == NULL || size == 0) { size = 0; offset = 0; confirm = 0; + } else { + confirm = 1; } buffer = calloc(1, length); -- cgit v1.1