Fixed a xbps_pkgpattern_name() crash and a test to reproduce it (found by Gottox).

This commit is contained in:
Juan RP 2014-02-15 01:26:42 +01:00
parent 596a8c199f
commit 2fa0d56658
3 changed files with 9 additions and 2 deletions

3
NEWS
View File

@ -1,5 +1,8 @@
xbps-0.32 (???):
* Fixed a bug in xbps_pkgpattern_name() where a string with some special
chars would result in a crash (reported by Gottox).
* Do the package removal in two phases: the first phase checks the
user has write permission to the entries being removed, if this
succeeds then the package removal is performed.

View File

@ -1,5 +1,5 @@
/*-
* Copyright (c) 2008-2013 Juan Romero Pardines.
* Copyright (c) 2008-2014 Juan Romero Pardines.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -169,6 +169,9 @@ xbps_pkgpattern_name(const char *pkg)
return NULL;
len = strlen(pkg) - strlen(res) + 1;
if (strlen(pkg) < len-2)
return NULL;
if (pkg[len-2] == '-')
len--;

View File

@ -1,5 +1,5 @@
/*-
* Copyright (c) 2012-2013 Juan Romero Pardines.
* Copyright (c) 2012-2014 Juan Romero Pardines.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -64,6 +64,7 @@ ATF_TC_BODY(util_test, tc)
ATF_REQUIRE_STREQ(xbps_pkgpattern_name("systemd-[0-9]*"), "systemd");
ATF_REQUIRE_STREQ(xbps_pkgpattern_name("systemd>4[3-9]?"), "systemd");
ATF_REQUIRE_STREQ(xbps_pkgpattern_name("systemd<4_1?"), "systemd");
ATF_CHECK_EQ(xbps_pkgpattern_name("*nslookup"), NULL);
}
ATF_TP_ADD_TCS(tp)