From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.1 From: Aleksei Nikiforov To: devel@lists.altlinux.org Date: Tue, 10 Dec 2019 18:23:05 +0300 Message-Id: <20191210152343.33867-1-darktemplar@altlinux.org> X-Mailer: git-send-email 2.24.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Cc: Aleksei Nikiforov Subject: [devel] [PATCH for apt 00/38] Various fixes for Apt and basic integration test suite X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Dec 2019 15:24:24 -0000 Archived-At: List-Archive: List-Post: First 21 patches are fixes for various issues and bugs found via static code analyzers, cppcheck and clang static analyzer. Next 10 patches are fixes for various additional issues found during work on apt. Last 7 patches add basic integration test suite. It might have been a good idea to split this bunch of patches into smaller chunks, but some patches require other patches in order to apply. Aleksei Nikiforov (38): Replace post-increments with pre-increments Use correct types and type specifiers Fix potential memory corruption in pkgCache::DepIterator::AllTargets() Get rid of nullptr dereference Fix memory access outside of allocated buffer ranges Get rid of hardcoded array size Use signed types to detect IO errors Use 'explicit' keyword for constructors with one argument Rework identical conditions Improve member variable initialization Remove useless variable shadowing Fortify against buffer overflows Cacheiterators: sanitize increment operators and end() function Fix memory leaks Fix incorrect delete operator Don't access uninitialized data Fix access after free error Apt-pipe: ensure mainloop function doesn't return uninitialized or garbage value Don't use uninitialized value Get rid of dangling invalid pointer Fix invalid check of Queue against zero Fix iterators comparison Fortify ParseQuoteWord function Improve ipv6 address handling Check subsecond modification time for cached files Fix warning about truncation of value of pkgCache::Header::HeaderSz FileFd: all files are closed automatically Fix resource leaks in pkgCacheFile class Fix off by one error in dynamic mmap leading to resource leak pkgCacheFile: call Close() function in destructor pkgCacheFile: don't regenerate cache if it was already built Add support for rpm's dbpath configuration Import integration tests framework from Debian Add initial integration tests Add basic tests to ensure that lua and rpm scripts are called Add http and https methods tests Enable integration test suite during package build Add code coverage support apt.spec | 64 +- apt/apt-pkg/Makefile.am | 10 +- apt/apt-pkg/acquire-item.cc | 4 +- apt/apt-pkg/acquire-method.cc | 13 +- apt/apt-pkg/acquire.cc | 7 +- apt/apt-pkg/algorithms.cc | 5 +- apt/apt-pkg/cachefile.cc | 22 +- apt/apt-pkg/cacheiterators.h | 22 +- apt/apt-pkg/contrib/cdromutl.cc | 19 +- apt/apt-pkg/contrib/configuration.cc | 4 +- apt/apt-pkg/contrib/fileutl.cc | 4 +- apt/apt-pkg/contrib/fileutl.h | 8 +- apt/apt-pkg/contrib/mmap.cc | 2 +- apt/apt-pkg/contrib/strutl.cc | 295 ++++++-- apt/apt-pkg/contrib/strutl.h | 35 +- apt/apt-pkg/defs.h | 18 + apt/apt-pkg/init.cc | 2 +- apt/apt-pkg/orderlist.cc | 8 +- apt/apt-pkg/packagemanager.cc | 12 +- apt/apt-pkg/pkgcache.cc | 50 +- apt/apt-pkg/pkgcache.h | 15 +- apt/apt-pkg/pkgcachegen.cc | 20 +- apt/apt-pkg/policy.cc | 6 +- apt/apt-pkg/rpm/rpmhandler.cc | 26 +- apt/apt-pkg/rpm/rpmhandler.h | 2 + apt/apt-pkg/rpm/rpmindexfile.cc | 12 +- apt/apt-pkg/rpm/rpmlistparser.cc | 2 + apt/apt-pkg/rpm/rpmpackagedata.cc | 16 +- apt/apt-pkg/rpm/rpmpm.cc | 64 +- apt/apt-pkg/rpm/rpmsystem.cc | 17 +- apt/apt-pkg/sourcelist.cc | 22 +- apt/apt-pkg/srcrecords.cc | 6 +- apt/apt-pkg/versionmatch.cc | 2 +- apt/cmdline/Makefile.am | 9 +- apt/cmdline/acqprogress.cc | 4 +- apt/cmdline/apt-cache.cc | 20 +- apt/cmdline/apt-cdrom.cc | 24 +- apt/cmdline/apt-get.cc | 50 +- apt/cmdline/apt-pipe.c | 7 +- apt/cmdline/apt-shell.cc | 56 +- apt/cmdline/indexcopy.cc | 4 +- apt/cmdline/rpmindexcopy.cc | 8 +- apt/configure.in | 2 + apt/methods/Makefile.am | 7 +- apt/methods/cdrom.cc | 8 +- apt/methods/connect.cc | 34 +- apt/methods/connect.h | 2 +- apt/methods/file.cc | 2 +- apt/methods/ftp.cc | 61 +- apt/methods/ftp.h | 4 +- apt/methods/gpg.cc | 2 +- apt/methods/gzip.cc | 4 +- apt/methods/http.cc | 110 ++- apt/methods/http.h | 11 +- apt/methods/rsh.cc | 10 +- apt/methods/rsh.h | 4 +- apt/methods/rsync-method.h | 5 +- apt/methods/rsync.cc | 47 +- apt/test/integration/framework | 656 ++++++++++++++++++ apt/test/integration/run-tests | 66 ++ .../conflicting-package-distupgrade.spec | 18 + .../specs/conflicting-package-one.spec | 17 + .../specs/conflicting-package-two.spec | 17 + .../integration/specs/missing-dependency.spec | 17 + .../integration/specs/simple-package-new.spec | 19 + .../specs/simple-package-noarch.spec | 17 + .../specs/simple-package-update-conflict.spec | 17 + .../specs/simple-package-update.spec | 15 + .../integration/specs/simple-package.spec | 15 + .../integration/specs/simple-virtual.spec | 17 + .../integration/test-apt-cache-depends-simple | 38 + apt/test/integration/test-apt-cache-dump | 92 +++ apt/test/integration/test-apt-cache-dumpavail | 115 +++ apt/test/integration/test-apt-cache-pkgnames | 32 + .../integration/test-apt-cache-search-simple | 38 + .../integration/test-apt-cache-show-simple | 67 ++ .../integration/test-apt-cache-showpkg-simple | 44 ++ apt/test/integration/test-apt-cache-stats | 36 + apt/test/integration/test-apt-cache-unmet | 31 + .../test-apt-cache-whatdepends-simple | 43 ++ apt/test/integration/test-apt-check-simple | 26 + apt/test/integration/test-apt-config-dump | 61 ++ .../integration/test-apt-distupgrade-conflict | 30 + .../test-apt-distupgrade-mutual-conflict | 31 + .../integration/test-apt-distupgrade-obsolete | 26 + .../integration/test-apt-distupgrade-simple | 23 + .../test-apt-install-conflicting-packages | 27 + apt/test/integration/test-apt-install-double | 17 + apt/test/integration/test-apt-install-simple | 13 + apt/test/integration/test-apt-lua-simple | 82 +++ apt/test/integration/test-apt-mark-simple | 58 ++ apt/test/integration/test-apt-method-http | 29 + apt/test/integration/test-apt-method-https | 56 ++ ...est-apt-method-https-invalid-cert-hostname | 41 ++ apt/test/integration/test-apt-remove-double | 22 + apt/test/integration/test-apt-remove-simple | 15 + .../test-apt-rpm-bash-scripts-simple | 21 + apt/test/integration/test-apt-update-simple | 19 + apt/test/integration/test-apt-upgrade-simple | 26 + apt/test/uri.cc | 14 +- apt/tools/Makefile.am | 8 +- apt/tools/genpkglist.cc | 12 +- apt/tools/gensrclist.cc | 13 +- 103 files changed, 2955 insertions(+), 451 deletions(-) create mode 100644 apt/apt-pkg/defs.h create mode 100644 apt/test/integration/framework create mode 100755 apt/test/integration/run-tests create mode 100644 apt/test/integration/specs/conflicting-package-distupgrade.spec create mode 100644 apt/test/integration/specs/conflicting-package-one.spec create mode 100644 apt/test/integration/specs/conflicting-package-two.spec create mode 100644 apt/test/integration/specs/missing-dependency.spec create mode 100644 apt/test/integration/specs/simple-package-new.spec create mode 100644 apt/test/integration/specs/simple-package-noarch.spec create mode 100644 apt/test/integration/specs/simple-package-update-conflict.spec create mode 100644 apt/test/integration/specs/simple-package-update.spec create mode 100644 apt/test/integration/specs/simple-package.spec create mode 100644 apt/test/integration/specs/simple-virtual.spec create mode 100755 apt/test/integration/test-apt-cache-depends-simple create mode 100755 apt/test/integration/test-apt-cache-dump create mode 100755 apt/test/integration/test-apt-cache-dumpavail create mode 100755 apt/test/integration/test-apt-cache-pkgnames create mode 100755 apt/test/integration/test-apt-cache-search-simple create mode 100755 apt/test/integration/test-apt-cache-show-simple create mode 100755 apt/test/integration/test-apt-cache-showpkg-simple create mode 100755 apt/test/integration/test-apt-cache-stats create mode 100755 apt/test/integration/test-apt-cache-unmet create mode 100755 apt/test/integration/test-apt-cache-whatdepends-simple create mode 100755 apt/test/integration/test-apt-check-simple create mode 100755 apt/test/integration/test-apt-config-dump create mode 100755 apt/test/integration/test-apt-distupgrade-conflict create mode 100755 apt/test/integration/test-apt-distupgrade-mutual-conflict create mode 100755 apt/test/integration/test-apt-distupgrade-obsolete create mode 100755 apt/test/integration/test-apt-distupgrade-simple create mode 100755 apt/test/integration/test-apt-install-conflicting-packages create mode 100755 apt/test/integration/test-apt-install-double create mode 100755 apt/test/integration/test-apt-install-simple create mode 100755 apt/test/integration/test-apt-lua-simple create mode 100755 apt/test/integration/test-apt-mark-simple create mode 100755 apt/test/integration/test-apt-method-http create mode 100755 apt/test/integration/test-apt-method-https create mode 100755 apt/test/integration/test-apt-method-https-invalid-cert-hostname create mode 100755 apt/test/integration/test-apt-remove-double create mode 100755 apt/test/integration/test-apt-remove-simple create mode 100755 apt/test/integration/test-apt-rpm-bash-scripts-simple create mode 100755 apt/test/integration/test-apt-update-simple create mode 100755 apt/test/integration/test-apt-upgrade-simple -- 2.24.0