diff --git a/srcpkgs/xbps/patches/0001-util.c-add-stricter-checks-for-pkgver-conformance.patch b/srcpkgs/xbps/patches/0001-util.c-add-stricter-checks-for-pkgver-conformance.patch new file mode 100644 index 00000000000..b0b7509c6b3 --- /dev/null +++ b/srcpkgs/xbps/patches/0001-util.c-add-stricter-checks-for-pkgver-conformance.patch @@ -0,0 +1,99 @@ +From c44d7070a4152cbb8279e10fa6206557dd7d6772 Mon Sep 17 00:00:00 2001 +From: Juan RP +Date: Sun, 17 Nov 2013 11:34:14 +0100 +Subject: [PATCH] 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. +--- + lib/util.c | 14 ++++++++++++-- + tests/xbps/libxbps/util/main.c | 10 +++++++++- + 2 files changed, 21 insertions(+), 3 deletions(-) + +diff --git a/lib/util.c b/lib/util.c +index 37cae80..c2593c3 100644 +--- lib/util.c ++++ lib/util.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + #include + + #include "xbps_api_impl.h" +@@ -96,7 +97,10 @@ xbps_pkg_version(const char *pkg) + if ((p = strrchr(pkg, '-')) == NULL) + return NULL; + +- if (strrchr(p, '_') == NULL) ++ if (!isdigit((unsigned char)p[1])) ++ return NULL; ++ ++ if (strchr(p, '_') == NULL) + return NULL; + + return p + 1; /* skip first '_' */ +@@ -113,6 +117,9 @@ xbps_pkg_revision(const char *pkg) + if ((p = strrchr(pkg, '_')) == NULL) + return NULL; + ++ if (!isdigit((unsigned char)p[1])) ++ return NULL; ++ + return p + 1; /* skip first '_' */ + } + +@@ -126,7 +133,10 @@ xbps_pkg_name(const char *pkg) + if ((p = strrchr(pkg, '-')) == NULL) + return NULL; + +- if (strrchr(p, '_') == NULL) ++ if (!isdigit((unsigned char)p[1])) ++ return NULL; ++ ++ if (strchr(p, '_') == NULL) + return NULL; + + len = strlen(pkg) - strlen(p) + 1; +diff --git a/tests/xbps/libxbps/util/main.c b/tests/xbps/libxbps/util/main.c +index 7fa85ef..cc1cb65 100644 +--- tests/libxbps/util/main.c ++++ tests/libxbps/util/main.c +@@ -1,5 +1,5 @@ + /*- +- * Copyright (c) 2012 Juan Romero Pardines. ++ * Copyright (c) 2012-2013 Juan Romero Pardines. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without +@@ -36,14 +36,22 @@ ATF_TC_HEAD(util_test, tc) + + ATF_TC_BODY(util_test, tc) + { ++ ATF_CHECK_EQ(xbps_pkg_name("font-adobe-a"), NULL); ++ ATF_CHECK_EQ(xbps_pkg_name("font-adobe-1"), NULL); ++ ATF_CHECK_EQ(xbps_pkg_name("font-adobe-100dpi"), NULL); + ATF_CHECK_EQ(xbps_pkg_name("font-adobe-100dpi-7.8"), NULL); ++ ATF_CHECK_EQ(xbps_pkg_name("python-e_dbus"), NULL); + ATF_CHECK_EQ(xbps_pkg_version("font-adobe-100dpi"), NULL); + ATF_CHECK_EQ(xbps_pkg_version("font-adobe-100dpi-7.8"), NULL); ++ ATF_CHECK_EQ(xbps_pkg_version("python-e_dbus"), NULL); ++ ATF_CHECK_EQ(xbps_pkg_version("python-e_dbus-1"), NULL); + ATF_REQUIRE_STREQ(xbps_pkg_name("font-adobe-100dpi-7.8_2"), "font-adobe-100dpi"); + ATF_REQUIRE_STREQ(xbps_pkg_name("systemd-43_1"), "systemd"); + ATF_REQUIRE_STREQ(xbps_pkg_name("font-adobe-100dpi-1.8_blah"), "font-adobe-100dpi"); ++ ATF_REQUIRE_STREQ(xbps_pkg_name("python-e_dbus-1.0_1"), "python-e_dbus"); + ATF_REQUIRE_STREQ(xbps_pkg_version("font-adobe-100dpi-7.8_2"), "7.8_2"); + ATF_REQUIRE_STREQ(xbps_pkg_version("font-adobe-100dpi-1.8_blah"), "1.8_blah"); ++ ATF_REQUIRE_STREQ(xbps_pkg_version("python-e_dbus-1_1"), "1_1"); + ATF_REQUIRE_STREQ(xbps_pkg_revision("systemd-43_1_0"), "0"); + ATF_REQUIRE_STREQ(xbps_pkg_revision("systemd_21-43_0"), "0"); + ATF_REQUIRE_STREQ(xbps_pkgpattern_name("systemd>=43"), "systemd"); +-- +1.8.4.1 + diff --git a/srcpkgs/xbps/template b/srcpkgs/xbps/template index d11dd02f1c6..faff7fd43ea 100644 --- a/srcpkgs/xbps/template +++ b/srcpkgs/xbps/template @@ -1,7 +1,7 @@ # Template file for 'xbps' pkgname=xbps version=0.26.2 -revision=1 +revision=2 build_style=configure configure_args="--prefix=/usr --sysconfdir=/etc --enable-static --enable-debug" makedepends="zlib-devel openssl-devel libarchive-devel>=3.1.2 confuse-devel"