Fix leaks in tests
authorOlivier Goffart <ogoffart@woboq.com>
Fri, 5 Oct 2018 17:03:08 +0000 (19:03 +0200)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Tue, 15 Dec 2020 09:58:11 +0000 (10:58 +0100)
As discovered by AddressSanitizer

test/csync/vio_tests/check_vio_ext.cpp
test/testchunkingng.cpp
test/testsyncengine.cpp

index 85a31215e74018496ac8255a3e62b31d861119dd..5d07ed20a7f25afad6cd99a33dc24b12e99a5d37 100644 (file)
@@ -125,7 +125,8 @@ static int teardown(void **state) {
     rc = wipe_testdir();
     assert_int_equal(rc, 0);
 
-    *state = nullptr;
+    SAFE_FREE(((statevar*)*state)->result);
+    SAFE_FREE(*state);
     return 0;
 }
 
@@ -409,6 +410,8 @@ static void check_readdir_longtree(void **state)
     assert_int_equal(files_cnt, 0);
     /* and compare. */
     assert_string_equal( sv->result, result);
+
+    SAFE_FREE(result);
 }
 
 // https://github.com/owncloud/client/issues/3128 https://github.com/owncloud/client/issues/2777
index 8efd39b393591a6e007d622cf362e2afacc6856e..0a282bfe23745feedd8a271d9c1d5d3220f6941e 100644 (file)
@@ -248,15 +248,15 @@ private slots:
         setChunkSize(fakeFolder.syncEngine(), 1 * 1000 * 1000);
 
         // Make the MOVE never reply, but trigger a client-abort and apply the change remotely
-        auto parent = new QObject;
+        QObject parent;
         QByteArray moveChecksumHeader;
         int nGET = 0;
         int responseDelay = 100000; // bigger than abort-wait timeout
         fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *) -> QNetworkReply * {
             if (request.attribute(QNetworkRequest::CustomVerbAttribute) == "MOVE") {
-                QTimer::singleShot(50, parent, [&]() { fakeFolder.syncEngine().abort(); });
+                QTimer::singleShot(50, &parent, [&]() { fakeFolder.syncEngine().abort(); });
                 moveChecksumHeader = request.rawHeader("OC-Checksum");
-                return new DelayedReply<FakeChunkMoveReply>(responseDelay, fakeFolder.uploadState(), fakeFolder.remoteModifier(), op, request, parent);
+                return new DelayedReply<FakeChunkMoveReply>(responseDelay, fakeFolder.uploadState(), fakeFolder.remoteModifier(), op, request, &parent);
             } else if (op == QNetworkAccessManager::GetOperation) {
                 nGET++;
             }
@@ -332,12 +332,12 @@ private slots:
         setChunkSize(fakeFolder.syncEngine(), 1 * 1000 * 1000);
 
         // Make the MOVE never reply, but trigger a client-abort and apply the change remotely
-        auto parent = new QObject;
+        QObject parent;
         int responseDelay = 200; // smaller than abort-wait timeout
         fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *) -> QNetworkReply * {
             if (request.attribute(QNetworkRequest::CustomVerbAttribute) == "MOVE") {
-                QTimer::singleShot(50, parent, [&]() { fakeFolder.syncEngine().abort(); });
-                return new DelayedReply<FakeChunkMoveReply>(responseDelay, fakeFolder.uploadState(), fakeFolder.remoteModifier(), op, request, parent);
+                QTimer::singleShot(50, &parent, [&]() { fakeFolder.syncEngine().abort(); });
+                return new DelayedReply<FakeChunkMoveReply>(responseDelay, fakeFolder.uploadState(), fakeFolder.remoteModifier(), op, request, &parent);
             }
             return nullptr;
         });
index 64b49fb5c5536325ffee9e8f9338694ecaaea44f..3f6f5ba8c4a290888567c526a528efde8b092e0d 100644 (file)
@@ -439,13 +439,13 @@ private slots:
         // Produce an error based on upload size
         int remoteQuota = 1000;
         int n507 = 0, nPUT = 0;
-        auto parent = new QObject;
+        QObject parent;
         fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *) -> QNetworkReply * {
             if (op == QNetworkAccessManager::PutOperation) {
                 nPUT++;
                 if (request.rawHeader("OC-Total-Length").toInt() > remoteQuota) {
                     n507++;
-                    return new FakeErrorReply(op, request, parent, 507);
+                    return new FakeErrorReply(op, request, &parent, 507);
                 }
             }
             return nullptr;