From dff41cd768687c0be0ebd274c7bd6425209f9d45 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 22 Oct 2013 09:37:08 -0700 Subject: [PATCH] ceph_test_librbd: fix heap overrun We are storing rbd_snap_info_t structs, not pointers to them. But we can also avoid the heap entirely. This crashed pretty reliably on arm. Signed-off-by: Sage Weil --- src/test/librbd/test_librbd.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/librbd/test_librbd.cc b/src/test/librbd/test_librbd.cc index 8052d25d6e19a..5169a14e3b78f 100644 --- a/src/test/librbd/test_librbd.cc +++ b/src/test/librbd/test_librbd.cc @@ -432,10 +432,9 @@ TEST(LibRBD, TestCopyPP) int test_ls_snaps(rbd_image_t image, int num_expected, ...) { - rbd_snap_info_t *snaps; int num_snaps, i, j, max_size = 10; va_list ap; - snaps = (rbd_snap_info_t *) malloc(sizeof(rbd_snap_info_t *) * max_size); + rbd_snap_info_t snaps[max_size]; num_snaps = rbd_snap_list(image, snaps, &max_size); printf("num snaps is: %d\nexpected: %d\n", num_snaps, num_expected); @@ -467,7 +466,6 @@ int test_ls_snaps(rbd_image_t image, int num_expected, ...) for (i = 0; i < num_snaps; i++) { assert(snaps[i].name == NULL); } - free(snaps); return num_snaps; } -- 2.39.5