val was not freed on early return paths; addressed it using
done block.
Signed-off-by: Shwetha K Acharya <Shwetha.K.Acharya@ibm.com>
Reviewed-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Anoop C S <anoopcs@samba.org>
if (length < 1) {
errno = EINVAL;
- return -1;
+ ret = -1;
+ goto done;
}
length -= 1;
/* Attempt to read past EOF. */
if (length <= (size_t)offset) { /* offset>=0, see above */
- return 0;
+ ret = 0;
+ goto done;
}
overlap = (offset + n) > length ? (length - offset) : n;
memcpy(data, val + offset, overlap);
+ ret = overlap;
+done:
TALLOC_FREE(val);
- return overlap;
+ return ret;
}
struct streams_xattr_pread_state {