]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test: pass correct buffer length to ceph_getdents 21172/head
authorPatrick Donnelly <pdonnell@redhat.com>
Wed, 22 Nov 2017 05:34:32 +0000 (21:34 -0800)
committerNathan Cutler <ncutler@suse.com>
Mon, 2 Apr 2018 09:55:38 +0000 (11:55 +0200)
This test fails if the randvar r is 0.

Fixes: http://tracker.ceph.com/issues/22221
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit ef5699441e056133967ffbf29076eb79594bf5e5)

src/test/libcephfs/test.cc

index df7db20a70c4b41ae636ba48b320853b10bbca4e..62541c866f2bda4da105276546ebbc9eaa74263a 100644 (file)
@@ -361,12 +361,13 @@ TEST(LibCephFS, DirLs) {
 
   // test getdents
   struct dirent *getdents_entries;
-  getdents_entries = (struct dirent *)malloc((r + 2) * sizeof(*getdents_entries));
+  size_t getdents_entries_len = (r + 2) * sizeof(*getdents_entries);
+  getdents_entries = (struct dirent *)malloc(getdents_entries_len);
 
   int count = 0;
   std::vector<std::string> found;
   while (true) {
-    int len = ceph_getdents(cmount, ls_dir, (char *)getdents_entries, r * sizeof(*getdents_entries));
+    int len = ceph_getdents(cmount, ls_dir, (char *)getdents_entries, getdents_entries_len);
     if (len == 0)
       break;
     ASSERT_GT(len, 0);