[sheepdog] [PATCH] sheep/store: add epoch file length checking
Hitoshi Mitake
mitake.hitoshi at gmail.com
Sun Jul 27 11:01:19 CEST 2014
On Thu, Jul 10, 2014 at 11:51 AM, Ruoyu <liangry at ucweb.com> wrote:
> If epoch file length is shorter than size of time due to file broken,
> epoch_stat.st_size - sizeof(*timestamp) is negative. However,
> the third parameter of function xread will get it as type size_t,
> then xread will think there are many data to be read. Therefore,
> a file length checking to prevent this situation is needed.
>
> Signed-off-by: Ruoyu <liangry at ucweb.com>
> ---
> sheep/store.c | 5 +++++
> 1 file changed, 5 insertions(+)
Looks good to me. Could you rebase it on the latest master?
Thanks,
Hitoshi
>
> diff --git a/sheep/store.c b/sheep/store.c
> index 87913d4..befcd13 100644
> --- a/sheep/store.c
> +++ b/sheep/store.c
> @@ -71,6 +71,11 @@ static int do_epoch_log_read(uint32_t epoch, struct sd_node *nodes, int len,
> goto err;
> }
>
> + if (epoch_stat.st_size < sizeof(*timestamp)) {
> + sd_err("invalid epoch %"PRIu32" log", epoch);
> + goto err;
> + }
> +
> if (len < epoch_stat.st_size - sizeof(*timestamp)) {
> close(fd);
> return -2;
> --
> 1.8.3.2
>
>
> --
> sheepdog mailing list
> sheepdog at lists.wpkg.org
> http://lists.wpkg.org/mailman/listinfo/sheepdog
More information about the sheepdog
mailing list