summaryrefslogtreecommitdiff
path: root/test
Commit message (Collapse)AuthorAgeFilesLines
* Search in all available description translationsАлексей Шилин2019-11-251-0/+107
| | | | | | | | | | | | When multiple translations of package descriptions are available, perform search in all of them. It allows using search patterns in any of the configured languages. Previously, only the first available translation was searched. As the result, patterns in e.g. English never matched packages which had their descriptions translated into local language. Closes: #490000
* Parse 'show' arguments for the 'info' alias as wellJulian Andres Klode2019-09-271-0/+76
| | | | | | | We recently made info an alias for show, but we did not change the command-line parser to work around it. LP: #1843812
* Fix use of GTest to adjust for GTest 1.9Julian Andres Klode2019-09-191-1/+1
| | | | | | GTest 1.9 uses a variable defined in the parent directory, thus failing to configure. Configure the project in the parent directory instead.
* Pass --abort-after=1 to dpkg when using --force-dependsJulian Andres Klode2019-09-191-0/+29
| | | | | | | | | | Using --force-depends causes dpkg to continue removing packages a package depends upon even if that package fails to be removed, because dpkg turns off all sanity checks. So we gotta tell dpkg to stop immediately if there's an error removing stuff. Closes: #935910 LP: #1844634
* Add ?virtual patternJulian Andres Klode2019-08-151-0/+6
| | | | This matches any package that does not have versions.
* Add the ?exact-name patternJulian Andres Klode2019-08-151-0/+4
| | | | | | The ?exact-name pattern matches the name exactly, there is no substring matching going on, or any regular expression or fnmatch magic.
* Add ?essential patternJulian Andres Klode2019-08-151-0/+3
| | | | | | This matches all packages where at least one of the versions is marked essential; or well, whenver apt considers a package essential.
* Add ?broken patternJulian Andres Klode2019-08-151-0/+3
| | | | | This matches all packages that have broken dependencies in the installed version or the version selected for install.
* Add ?config-files and ?installed patternsJulian Andres Klode2019-08-151-0/+18
| | | | | | These two are mutually exclusive states of installed-ness. And ?installed package is fully unpacked and configured; a ?config-files package only has config files left.
* Add ?obsolete and ?upgradable patternsJulian Andres Klode2019-08-151-0/+10
| | | | | | | | | These match packages that have no version in a repository, or where an upgrade is available. Notably, ?and(?obsolete,?upgradable) == ?false because an upgradable package is by definition not obsolete.
* Add ?automatic and ?garbage patternsJulian Andres Klode2019-08-151-0/+6
| | | | | | These patterns allow you to identify automatically installed packages, as well as automatically installed packages that are no longer reachable from the manually installed ones.
* Add patterns for the existing CacheFilter::Matcher classesJulian Andres Klode2019-08-151-0/+62
| | | | | | | This implements the basic logic patterns: ?and ?false ?not ?or ?true and the basic package patterns: ?architecture ?name ?x-name-fnmatch
* Add pattern tree parser infra and connect with cacheset and apt listJulian Andres Klode2019-08-151-0/+61
| | | | | This adds a transformation from parse tree into a CacheFilter and connects it with cachesets and the apt list command.
* Add initial support for parsing patterns into parse treesJulian Andres Klode2019-08-151-0/+95
| | | | | | | | | | | | | | | | | Introduce a parser for patterns that generates a parse tree. The language understood by the parser is: pattern = '?'TERM | '?'TERM '(' pattern (',' pattern)* ','? ')' | WORD | QUOTED-WORD TERM = [0-9a-zA-Z-] WORD = [0-9a-ZA-Z-.*^$\[\]_\\] QUOTED_WORD = "..." # you know what I mean This language is context free, which is a massive simplification from aptitude's language, where ?foo(bar) could have two different meanings depending on whether ?foo takes an argument or not.
* test: Use valgrind to ensure Acquire::Queue-Mode=access does not crashJulian Andres Klode2019-08-152-1/+23
| | | | | | Unfortunately for us, apt update with Acquire::Queue-Mode=access does not always crash on a real system, so run the whole thing in valgrind.
* Fix segfault in pkgAcquire::Enqueue() with Acquire::Queue-Mode=accessJulian Andres Klode2019-08-151-0/+3
| | | | | | | | | | | | | | | | | In commit 79b1a8298, QueueName() was changed, amongst other things, to exit early when the queue mode was single access, as single access does not need any fancy queue name. The exit became too early though, as Config was not initialized anymore, but the caller was relying on it. Fix QueueName() to always initialize Config and in Enqueue() initialize Config with a nullptr, so if this regresses it's guaranteed to fail harder. Also add a test case - this is very simple, but the first and only test case for access queue mode. Regression-Of: 79b1a82983e737e74359bc306d9edb357c5bdd46 LP: #1839714
* Fix typos reported by codespell in code commentsDavid Kalnischkies2019-07-102-4/+4
| | | | | | | | Also in old changelogs, but nothing really user visible like error messages or alike so barely noteworthy. Reported-By: codespell Gbp-Dch: Ignore
* RFC1123StrToTime: Accept const std::string& as first argumentJulian Andres Klode2019-06-171-2/+2
| | | | | | We are converting to std::string anyway by passing to istringstream, and this removes the need for .c_str() in callers.
* Adjust code for missing includes/using std::stringJulian Andres Klode2019-06-121-0/+1
|
* http: Fix Host header in proxied https connectionsSimon Körner2019-06-111-0/+22
| | | | | | | | | | | | | | Currently CONNECT requests use the name of the proxy as Host value, instead of the origin server's name. According to RFC 2616 "The Host field value MUST represent the naming authority of the origin server or gateway given by the original URL." The current implementation causes problems with some proxy vendors. This commit fixes this. [jak: Adding a test case] See merge request apt-team/apt!66
* Introduce apt satisfy and apt-get satisfyJulian Andres Klode2019-06-111-0/+72
| | | | | | | | | | | | | | | | | | Allow to satisfy dependency strings supplied on the command line, optionally prefixed with "Conflicts:" to satisfy them like Conflicts. Build profiles and architecture restriction lists, as used in build dependencies, are supported as well. Compared to build-dep, build-essential is not installed automatically, and installing of recommended packages follows the global default, which defaults to yes. Closes: #275379 See merge request apt-team/apt!63
* Make APT::StringView publicJulian Andres Klode2019-06-111-3/+0
|
* CMake: Enforce "override" use on overriden methodsJulian Andres Klode2019-05-061-0/+2
| | | | | This ensures that we do not accidentally stop overriding a method because it's signature changed in an API break.
* Use debDebFile to get control file instead of dpkg-debJulian Andres Klode2019-05-061-3/+3
|
* Merge libapt-inst into libapt-pkgJulian Andres Klode2019-05-062-3/+3
|
* Add test case for local-only packages pinned to neverJulian Andres Klode2019-04-151-1/+14
| | | | Test from the fix for the regression in trusty for LP #1821308.
* Add explicit message for unsupported binary signatureDavid Kalnischkies2019-03-031-0/+22
| | | | | | | | | | | | | | | | | | | | | | | Verifying the content of Release.gpg made us fail on binary signatures which were never officially supported (apt-secure manpage only documents only the generation of ASCII armored), but silently accepted by gpgv as we passed it on unchecked before. The binary format is complex and is itself split into old and new formats so adding support for this would not only add lots of code but also a good opportunity for bugs and dubious benefit. Reporting this issue explicitly should help repository creators figure out the problem faster than the default NODATA message hinting at captive portals. Given that the binary format has no file magic or any other clear and simple indication that this is a detached signature we guess based on the first two bits only – and by that only supporting the "old" binary format which seems to be the only one generated by gnupg in this case. References: e2965b0b6bdd68ffcad0e06d11755412a7e16e50 Closes: #921685
* Fix various typos in the documentationJakub Wilk2019-02-102-2/+2
|
* Merge branch 'pu/dead-pin' into 'master'Julian Andres Klode2019-02-042-3/+123
|\ | | | | | | | | A pin of -32768 overrides any other, disables repo See merge request apt-team/apt!40
| * Add a Packages-Require-Authorization Release file fieldJulian Andres Klode2019-02-011-0/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This new field allows a repository to declare that access to packages requires authorization. The current implementation will set the pin to -32768 if no authorization has been provided in the auth.conf(.d) files. This implementation is suboptimal in two aspects: (1) A repository should behave more like NotSource repositories (2) We only have the host name for the repository, we cannot use paths yet. - We can fix those after an ABI break. The code also adds a check to acquire-item.cc to not use the specified repository as a download source, mimicking NotSource.
| * Introduce experimental 'never' pinning for sourcesJulian Andres Klode2019-02-011-3/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows disabling a repository by pinning it to 'never', which is internally translated to a value of -32768 (or whatever the minimum of short is). This overrides any other pin for that repository. It can be used to make sure certain sources are never used; for example, in unattended-upgrades. To prevent semantic changes to existing files, we substitute min + 1 for every pin-priority: <min>. This is a temporary solution, as we are waiting for an ABI break. To add pins with that value, the special Pin-Priority "never" may be used for now. It's unclear if that will persist, or if the interface will change eventually.
* | Merge branch 'pu/refuseunsignedlines' into 'master'Julian Andres Klode2019-02-015-44/+225
|\ \ | | | | | | | | | | | | Fail if InRelease or Release.gpg contain unsigned lines See merge request apt-team/apt!45
| * | Refuse files with lines unexpectedly starting with a dashDavid Kalnischkies2019-01-281-1/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We support dash-encoding even if we don't really work with files who would need it as implementations are free to encode every line, but otherwise a line starting with a dash must either be a header we parse explicitly or the file is refused. This is against the RFC which says clients should warn on such files, but given that we aren't expecting any files with dash-started lines to begin with this looks a lot like a we should not continue to touch the file as it smells like an attempt to confuse different parsers by "hiding" headers in-between others. The other slightly more reasonable explanation would be an armor header key starting with a dash, but no existing key does that and it seems unlikely that this could ever happen. Also, it is recommended that clients warn about unknown keys, so new appearance is limited.
| * | Merge and reuse tmp file handling across the boardDavid Kalnischkies2019-01-241-0/+7
| | | | | | | | | | | | | | | | | | Having many rather similar implementations especially if one is exported while others aren't (and the rest of it not factored out at all) seems suboptimal.
| * | Fail on non-signature lines in Release.gpgDavid Kalnischkies2019-01-232-16/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The exploit for CVE-2019-3462 uses the fact that a Release.gpg file can contain additional content beside the expected detached signature(s). We were passing the file unchecked to gpgv which ignores these extras without complains, so we reuse the same line-reading implementation we use for InRelease splitting to detect if a Release.gpg file contains unexpected data and fail in this case given that we in the previous commit we established that we fail in the similar InRelease case now.
| * | Fail instead of warn for unsigned lines in InReleaseDavid Kalnischkies2019-01-232-27/+19
| |/ | | | | | | | | | | | | | | | | | | | | | | The warnings were introduced 2 years ago without any reports from the wild about them actually appearing for anyone, so now seems to be an as good time as any to switch them to errors. This allows rewritting the code by failing earlier instead of trying to keep going which makes the diff a bit hard to follow but should help simplifying reasoning about it. References: 6376dfb8dfb99b9d182c2fb13aa34b2ac89805e3
* / Step over empty sections in TagFiles with commentsDavid Kalnischkies2019-02-012-0/+70
|/ | | | | | | | Implementing a parser with recursion isn't the best idea, but in practice we should get away with it for the time being to avoid needless codechurn. Closes: #920317 #921037
* Merge branch 'pu/gpgvsignedby' into 'master'Julian Andres Klode2019-01-221-21/+43
|\ | | | | | | | | Report keys used to sign file from gpgv method to acquire system See merge request apt-team/apt!44
| * Communicate back which key(s) were used for signingDavid Kalnischkies2019-01-221-20/+42
| | | | | | | | | | | | | | Telling the acquire system which keys caused the gpgv method to succeed allows us for now just a casual check if the gpgv method really executed catching bugs like CVE-2018-0501, but we will make use of the information for better features in the following commits.
| * Refactor internal Signers information storage in gpgvDavid Kalnischkies2019-01-221-19/+19
| | | | | | | | | | | | | | | | | | Having a method take a bunch of string vectors is bad style, so we change this to a wrapping struct and adapt the rest of the code brushing it up slightly in the process, which results even in a slightly "better" debug output, no practical change otherwise. Gbp-Dch: Ignore
* | SECURITY UPDATE: content injection in http method (CVE-2019-3462)Julian Andres Klode2019-01-221-0/+66
|/ | | | | | | | | | | | | | | | | This fixes a security issue that can be exploited to inject arbritrary debs or other files into a signed repository as followed: (1) Server sends a redirect to somewhere%0a<headers for the apt method> (where %0a is \n encoded) (2) apt method decodes the redirect (because the method encodes the URLs before sending them out), writting something like somewhere\n <headers> into its output (3) apt then uses the headers injected for validation purposes. Regression-Of: c34ea12ad509cb34c954ed574a301c3cbede55ec LP: #1812353
* Merge branch 'pu/dpkg-path' into 'master'Julian Andres Klode2018-12-102-0/+38
|\ | | | | | | | | Set PATH=/usr/sbin:/usr/bin:/sbin:/bin when running dpkg See merge request apt-team/apt!38
| * Set PATH=/usr/sbin:/usr/bin:/sbin:/bin when running dpkgJulian Andres Klode2018-12-102-0/+38
| | | | | | | | | | | | | | | | | | This avoids a lot of problems from local installations of scripting languages and other stuff in /usr/local for which maintainer scripts are not prepared. [v3: Inherit PATH during tests, check overrides work] [v2: Add testing]
* | Add support for /etc/apt/auth.conf.d/*.conf (netrcparts)Julian Andres Klode2018-12-041-1/+12
|/ | | | | | | | | This allows us to install matching auth files for sources.list.d files, for example; very useful. This converts aptmethod's authfd from one FileFd to a vector of pointers to FileFd, as FileFd cannot be copied, and move operators are hard.
* Merge branch 'bugfix/spaceinconfig' into 'master'Julian Andres Klode2018-12-041-0/+14
|\ | | | | | | | | Use quoted tagnames in config dumps See merge request apt-team/apt!32
| * Use quoted tagnames in config dumpsDavid Kalnischkies2018-11-291-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Tagnames in configuration can include spaces (and other nasties) e.g. in repository-specific configuration options due to Origin/Label potentially containing a space. The configuration file format supports parsing quoted as well as encoded spaces, but the output generated by apt-config and other places which might be feedback into apt via parsing (e.g. before calling apt-key in our gpgv method) do not quote and hence produce invalid configuration files. Changing the default to be an encoded tagname ensures that the output of dump can be used as a config file, but other users might not expect this so that is technically a backward-breaking change.
* | Provide a "autopurge" shortcutJulian Andres Klode2018-12-031-0/+15
| | | | | | | | | | | | | | This adds a new "autopurge" command that will is a shortcut for "autoremove --purge" Thanks: Michael Vogt for the initial work
* | test-pdiff-usage: make transaction failure test case more robustJulian Andres Klode2018-12-031-1/+7
|/ | | | Try 10 times in a row
* Fix typo reported by codespell in code commentsDavid Kalnischkies2018-11-251-1/+1
| | | | | | | | No user visible change expect for some years old changelog entries, so we don't really need to add a new one for this… Reported-By: codespell Gbp-Dch: Ignore
* Allow to override the directory of a request in aptwebserverDavid Kalnischkies2018-11-251-2/+9
| | | | | | | | | The filename can be overridden, but sometimes it is useful to do it only for the directory-part of the filename – e.g. if you want to let a flat archive directory (like /var/cache/apt/archives) serve a pool-based request like /pool/a/apt_version.deb. Gbp-Dch: Ignore