Commit Graph

112 Commits

Author SHA1 Message Date
Juan RP 090464e4b2 xbps_sanitize_path: fix an out-of-bounds access (CID #98686). 2015-07-26 08:01:29 +02:00
Juan RP 7e21f1ee1a xbps_symlink_target: rename var to avoid shadowing a global var. 2015-02-19 11:44:10 +01:00
Juan RP 9083191e4b xbps_symlink_target: double free in rootdir == '/' case. 2015-02-19 11:39:59 +01:00
Juan RP 6d65e76f91 xbps_symlink_target: fix a memleak. 2015-02-19 11:36:09 +01:00
Juan RP a05e039cce Revert "Stop converting relative symlinks to absolute."
This reverts commit 9ae3638429.

This change is ok, but cannot be used right now because all existing
binpkgs were created with an old xbps-create(8).
2015-02-19 11:11:58 +01:00
Juan RP 9ae3638429 Stop converting relative symlinks to absolute.
There's no reason to make them absolute, simply store in the metadata
the target file as is. This vastly simplifies the code and makes all
test pass correctly.
2015-02-19 11:04:34 +01:00
Juan RP 67eba7d912 Improve detection of target file in relative symlinks.
If xbps-create(8) did not guess the target file of relative symlinks for
some reason, just compare the current symlink and what's stored as is,
without converting it to absolute.

This might happen with dangling relative symlinks or existing binary
packages that were not created with a newer xbps-create(8).
2015-02-19 10:24:24 +01:00
Juan RP 05f879ec09 Introduce xbps_symlink_target() and use it in two places.
This code is now shared by xbps-pkgdb and libxbps/xbps-remove.
2015-02-19 09:47:09 +01:00
Juan RP 1722635e08 Introduce xbps_sanitize_path() to fix #78 properly.
This removes multiple slashes of a path and returns you a buffer with
the sanitized string.
2015-02-18 15:12:39 +01:00
Juan RP eb90fcc50c xbps_binpkg_{arch,pkgver}: return a buffer of matched string instead.
... otherwise will pass an invalid pointer to free(3) later on.
2014-11-19 11:56:16 +01:00
Juan RP b2bc7af66e Fix #68 (xbps_binpkg_arch() asserts if arch contains a dash) 2014-11-19 11:14:37 +01:00
Juan RP c549252223 xbps_pkg_version: minor optimization. 2014-11-18 16:11:43 +01:00
Juan RP 3afb9d709d Get rid of repodata index-files; the archive is now 8x smaller.
See the NEWS file for more information.
2014-11-13 17:09:43 +01:00
Juan RP 5b522109f7 Replaced config/system {repo,preserve,virtualpkg}.d with a single directory.
See the NEWS file for more information.
2014-11-06 09:58:04 +01:00
Juan RP fe87bc1a88 lib/util.c: CID 62710 (dead code) 2014-10-07 08:16:45 +02:00
Juan RP 97045960f9 xbps_pkg_reverts: style. 2014-09-27 11:28:29 +02:00
Enno Boland b5a169b65c xbps_pkg_reverts: this function can do more than just return false! 2014-09-23 21:18:47 +02:00
Enno Boland a421bf7db5 xbps_pkg_reverts: return bool instead of int. 2014-09-23 20:50:34 +02:00
Enno Boland dbab3f2cfc xbps_pkg_reverts: use version instead of pkgname-version to find reverts 2014-09-23 18:22:57 +02:00
Enno Boland 50fb6c1605 rename xbps_pkgver_is_reverted to xbps_pkg_reverts 2014-09-23 13:54:06 +02:00
Enno Boland 18204aeac1 lib/util.c: add function which tests if a given pkgver is reverted by a given pkg. 2014-09-23 13:54:06 +02:00
Juan RP 5863ec17fe libxbps: two new functions to get the pkgver and arch components in a filename.
- xbps_binpkg_pkgver() returns a heap allocated string with the pkgver component.
- xbps_binpkg_arch() returns a heap allocated string with the architecture component.

A basename, full path or relative path is supported, i.e:

	/path/to/foo-1.0_1.x86_64.xbps
	../../foo/blah-0.1_1.x86_64.xbps
	baz-0.1_1.x86_64.xbps
2014-09-05 20:59:00 +02:00
Juan RP 5a1919e520 xbps_pkg_is_installed(): a pkg in "unpacked" state is now accepted as installed too.
The reason is that even if the pkg was not configured, it should still be accepted
as installed. If installing packages via XBPS_TARGET_ARCH, pkgs are never configured,
so this must be taken into account.

Will be cherry-picked to 0.37 meanwhile.
2014-08-23 15:54:24 +02:00
Juan RP 79fe312302 Gather proper transaction stats (take into account binpkgs in cachedir, and "preserved" pkgs). 2014-07-13 09:56:06 +02:00
Juan RP 2fa0d56658 Fixed a xbps_pkgpattern_name() crash and a test to reproduce it (found by Gottox). 2014-02-15 01:26:42 +01:00
Juan RP 5eea259c13 Remove the config.h kludge and override vasprintf detection via HAVE_VASPRINTF. 2014-01-20 18:50:33 +01:00
Juan RP c9825feb29 util.c: add stricter checks for pkgver conformance (v2).
There was another case where it now was failing: "fs-utils-v1.00_1".

Previous code didn't take into account that a valid version might also
contain a non digit after '-'.

Added more tests to the testsuite to verify its correctness.
2013-11-17 12:25:02 +01:00
Juan RP c44d7070a4 util.c: add stricter checks for pkgver conformance.
Make xbps_pkg_{name,version} return NULL if next character
after the last '-' character is not a digit, and if there's a digit
make sure that there exists a '_' character too.

Added more tests to the testsuite to catch this. With these changes
'python-e_dbus' is properly detected and validated.
2013-11-17 11:34:14 +01:00
Juan RP 53ecaf9819 Remove xbps_print_hexfp() from API and move it xbps-rindex, where it belongs. 2013-11-08 09:12:29 +01:00
Juan RP c69134f851 xbps_repository_is_remote: optimize and check for http:// first. 2013-10-07 09:23:25 +02:00
Juan RP 8d5c48b861 Added support for the long awaited feature: RSA signed repositories. 2013-10-05 11:38:04 +02:00
Juan RP 42c0766c00 Get rid of libfetch and proplib external dependencies.
The list of required external deps is now confuse, libarchive and openssl.

libxbps now includes a wrapper for proplib prefixed with xbps_ rather than prop_.
2013-06-20 10:26:12 +02:00
Juan RP 9d80524a34 Minor optimization: no need to check if obj is NULL, prop_object_type() does that already. 2013-06-14 12:22:29 +02:00
Juan RP db1efb3aa6 Relax memory requirements on 64bit platforms; fix two memleaks. 2013-06-12 10:04:10 +02:00
Juan RP 99be698979 Use a single file to store repository data.
This is just the starting point to extend repositories with PGP signatures.
2013-06-10 10:28:39 +02:00
Juan RP 5eddf04898 Ignore executing install/remove scripts if XBPS_TARGET_ARCH is set.
Instead a two stage approach is necessary when packages for target arch
are installed:

	- XBPS_TARGET_ARCH=arch xbps-install foo <- only unpack
	- xbps-reconfigure -a <- configure natively or via an emulator
2013-03-07 18:08:12 +01:00
Juan RP 7c1a0ac3e8 New pkgdb (0.21) and repo index (1.7) format, see NEWS for info. 2013-03-05 04:08:42 +01:00
Juan RP ea2f2c7297 Silence -Wformat-nonliteral warning with clang. 2013-01-04 10:35:00 +01:00
Juan RP 1d42986b75 libxbps: finish support for rindex 1.6. 2012-12-07 17:11:52 +01:00
Juan RP 2c1e4e502d XBPS can now be built on NetBSD (and probably any other BSD variant). 2012-12-06 12:58:17 +01:00
Juan RP 63c1883201 Major API/ABI cleanup bringing performance improvements and fixes.
These are the core interfaces in the new API:

rpool - Interface to interact with the repository pool.
rindex - Interface to interact with repository indexes.
pkgdb - Interface to interact with local packages.
transaction - Interface to interact with a transaction.

This also brings new repository index format, making the index file
per architecture and being incompatible with previous versions.

The transaction frequency flush option has been removed, and due to
the nature of package states it was causing more harm than good.

More changes coming soon, but the API shall remain stable from now on.
2012-11-30 07:11:51 +01:00
Juan RP d6735d5685 xbps_xasprintf: do not return NULL anymore; remove checks for this. 2012-11-11 09:37:27 +01:00
Juan RP 7909f597cb xbps_path_from_repository_uri: do not look for binpkgs in repo arch dirs anymore. 2012-09-30 10:13:06 +02:00
Juan RP f7a5c55bc7 libxbps: xbps_pkg_arch_match: fix conditional tests. 2012-07-21 21:49:37 +02:00
Juan RP 172435bd7e xbps_check_is_installed_pkg_by_pattern: do not reset errno, leave it as is. 2012-07-04 12:59:40 +02:00
Juan RP c24ce8e4da libxbps: use memcpy in critical paths for performance, fixed some memleaks. 2012-06-18 10:43:05 +02:00
Juan RP 974b2fe8ad libxbps: simplify pkgdb_get_pkgd and find_pkg_dict_installed internals.
There's no need to prop_dictionary_copy the returned dictionary to
later have to free it again, just return directly the dictionary and
avoid the free(3)s.
2012-06-16 09:02:07 +02:00
Juan RP 068cab8d20 libxbps: performance improvements by caching the most accessed paths.
1- We can cache the result of the first xbps_pkgdb_init() when it fails
   and avoid the malloc/free/access from it.
2- We cache the uname(2) result into a private var in xbps_handle and
   use it in xbps_pkg_arch_match().

This improves performance by ~5% approx and it's close as it was before
introducing the repository index format 1.5.
2012-06-15 15:33:11 +02:00
Juan RP 3e9e87fc2a libxbps: require a pointer to xbps_handle in functions that need it.
This removes 2 global vars from lib/initend.c and easier to know
what functions require access to xbps_handle.
2012-06-14 08:22:11 +02:00
Juan RP c37026d4c6 libxbps: require an underscore in strings to detect correctly pkgname/version. 2012-06-05 10:58:39 +02:00