X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Futils%2Flfs.c;h=9c694982e556daffe8fd293072d3ebd475fb6028;hp=57cac3072b8a8a836d3b81f93f0959e3374f76de;hb=744b4f9253e1740eb7454a9a33fa6d4b06920dcb;hpb=6acd28ed6ce281843b2bf2892ffa0e8725d08f3a diff --git a/lustre/utils/lfs.c b/lustre/utils/lfs.c index 57cac30..9c69498 100644 --- a/lustre/utils/lfs.c +++ b/lustre/utils/lfs.c @@ -3737,6 +3737,7 @@ static int lfs_hsm_request(int argc, char **argv, int action) /* If allocated buffer was too small, gets something * bigger */ if (nbfile_alloc <= hur->hur_request.hr_itemcount) { + ssize_t size; nbfile_alloc = nbfile_alloc * 2 + 1; oldhur = hur; hur = llapi_hsm_user_request_alloc(nbfile_alloc, @@ -3750,7 +3751,16 @@ static int lfs_hsm_request(int argc, char **argv, int action) fclose(fp); goto out_free; } - memcpy(hur, oldhur, hur_len(oldhur)); + size = hur_len(oldhur); + if (size < 0) { + fprintf(stderr, "Cannot allocate " + "the requested size\n"); + hur = oldhur; + rc = -E2BIG; + fclose(fp); + goto out_free; + } + memcpy(hur, oldhur, size); free(oldhur); }