The return value of th_get_size() is int type, which means it can be
negative value. Previously, the lvalue of assignment was size_t, which
is unsigned integer while rvalue is the return value of th_get_size().
If the return value is positive, it is ok since size_t contains the
range of positive range of int type. But if it is negative it can be a
problem.(also it is an error)
To resolve this issue, a code to check if the return value is negative
or not before assigning it to size_t type variable.
Change-Id: I947484daca4722d3783964ffb98ea85255998164
Signed-off-by: SangYoun Kwak <sy.kwak@samsung.com>
assert(dest_file);
assert(patch_tar);
+ int patch_len = 0;
+
data->src.fd = open_file(source_file, O_RDONLY);
data->dest.fd = open_file(dest_file, O_RDWR);
if (data->src.fd < 0 ||
data->patch_tar = patch_tar;
data->src.len = get_file_len(data->src.fd);
- data->patch_len = th_get_size(data->patch_tar);
+
+ patch_len = th_get_size(data->patch_tar);
+ if (patch_len < 0)
+ return PF_ERROR_INVALID_PATCH_FILE;
+ data->patch_len = patch_len;
+
data->dest.len = dest_size == 0 ? get_file_len(data->dest.fd) : dest_size;
data->patch_remaining = data->patch_len;