ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Aleksei Nikiforov <darktemplar@altlinux.org>
To: devel@lists.altlinux.org
Cc: Aleksei Nikiforov <darktemplar@altlinux.org>
Subject: [devel] [PATCH for apt 00/38] Various fixes for Apt and basic integration test suite
Date: Tue, 10 Dec 2019 18:23:05 +0300
Message-ID: <20191210152343.33867-1-darktemplar@altlinux.org> (raw)

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



             reply	other threads:[~2019-12-10 15:23 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-10 15:23 Aleksei Nikiforov [this message]
2019-12-10 15:23 ` [devel] [PATCH for apt 01/38] Replace post-increments with pre-increments Aleksei Nikiforov
2019-12-10 18:21   ` Alexey Tourbin
2019-12-11  7:51     ` Aleksei Nikiforov
2019-12-11  8:11       ` Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 02/38] Use correct types and type specifiers Aleksei Nikiforov
2019-12-10 22:45   ` Dmitry V. Levin
2019-12-11  7:56     ` Aleksei Nikiforov
2019-12-11 23:48       ` Dmitry V. Levin
2019-12-12  9:57         ` [devel] [PATCH for apt v2 00/21] Various fixes for Apt and basic integration test suite Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 01/21] Replace post-increments with pre-increments Aleksei Nikiforov
2019-12-12 21:32             ` Andrey Savchenko
2019-12-13  8:29               ` Aleksei Nikiforov
2019-12-13  9:11               ` [devel] [PATCH for apt v3 " Aleksei Nikiforov
2019-12-13  9:12               ` [devel] [PATCH for apt v4 09/21] Rework identical conditions Aleksei Nikiforov
2019-12-13  9:18               ` [devel] [PATCH for apt v4] Additional loops improvements and beautification Aleksei Nikiforov
2019-12-13  9:20                 ` Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 02/21] Use correct types and type specifiers Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 03/21] Fix potential memory corruption in pkgCache::DepIterator::AllTargets() Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 04/21] Get rid of nullptr dereference Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 05/21] Fix memory access outside of allocated buffer ranges Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 06/21] Get rid of hardcoded array size Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 07/21] Use signed types to detect IO errors Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 08/21] Use 'explicit' keyword for constructors with one argument Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 09/21] Rework identical conditions Aleksei Nikiforov
2019-12-12 19:55             ` Andrey Savchenko
2019-12-13  8:10               ` Aleksei Nikiforov
2019-12-13  8:21               ` [devel] [PATCH for apt v3 " Aleksei Nikiforov
2019-12-13  8:23               ` [devel] [PATCH for apt v3] DoList: optimize status modification loop Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 10/21] Improve member variable initialization Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 11/21] Remove useless variable shadowing Aleksei Nikiforov
2019-12-12 21:19             ` Andrey Savchenko
2019-12-12  9:57           ` [devel] [PATCH for apt v2 12/21] Fortify against buffer overflows Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 13/21] Cacheiterators: sanitize increment operators and end() function Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 14/21] Fix memory leaks Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 15/21] Fix incorrect delete operator Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 16/21] Don't access uninitialized data Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 17/21] Fix access after free error Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 18/21] Apt-pipe: ensure mainloop function doesn't return uninitialized or garbage value Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 19/21] Don't use uninitialized value Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 20/21] Get rid of dangling invalid pointer Aleksei Nikiforov
2019-12-12  9:57           ` [devel] [PATCH for apt v2 21/21] Fix invalid check of Queue against zero Aleksei Nikiforov
2019-12-12 19:08             ` Andrey Savchenko
2019-12-13  7:25               ` Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 03/38] Fix potential memory corruption in pkgCache::DepIterator::AllTargets() Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 04/38] Get rid of nullptr dereference Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 05/38] Fix memory access outside of allocated buffer ranges Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 06/38] Get rid of hardcoded array size Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 07/38] Use signed types to detect IO errors Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 08/38] Use 'explicit' keyword for constructors with one argument Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 09/38] Rework identical conditions Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 10/38] Improve member variable initialization Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 11/38] Remove useless variable shadowing Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 12/38] Fortify against buffer overflows Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 13/38] Cacheiterators: sanitize increment operators and end() function Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 14/38] Fix memory leaks Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 15/38] Fix incorrect delete operator Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 16/38] Don't access uninitialized data Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 17/38] Fix access after free error Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 18/38] Apt-pipe: ensure mainloop function doesn't return uninitialized or garbage value Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 19/38] Don't use uninitialized value Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 20/38] Get rid of dangling invalid pointer Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 21/38] Fix invalid check of Queue against zero Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 22/38] Fix iterators comparison Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 23/38] Fortify ParseQuoteWord function Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 24/38] Improve ipv6 address handling Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 25/38] Check subsecond modification time for cached files Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 26/38] Fix warning about truncation of value of pkgCache::Header::HeaderSz Aleksei Nikiforov
2019-12-10 22:57   ` Dmitry V. Levin
2019-12-11  7:51     ` Aleksei Nikiforov
2019-12-11 23:41       ` Dmitry V. Levin
2019-12-12  7:38         ` Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 27/38] FileFd: all files are closed automatically Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 28/38] Fix resource leaks in pkgCacheFile class Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 29/38] Fix off by one error in dynamic mmap leading to resource leak Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 30/38] pkgCacheFile: call Close() function in destructor Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 31/38] pkgCacheFile: don't regenerate cache if it was already built Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 32/38] Add support for rpm's dbpath configuration Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 33/38] Import integration tests framework from Debian Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 34/38] Add initial integration tests Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 35/38] Add basic tests to ensure that lua and rpm scripts are called Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 36/38] Add http and https methods tests Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 37/38] Enable integration test suite during package build Aleksei Nikiforov
2019-12-10 15:23 ` [devel] [PATCH for apt 38/38] Add code coverage support Aleksei Nikiforov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191210152343.33867-1-darktemplar@altlinux.org \
    --to=darktemplar@altlinux.org \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git