[Rpm-maint] [PATCH] Do not let 'rpm -q foo-' find package 'foo'.
Ales Kozumplik
akozumpl at redhat.com
Tue Nov 8 08:01:59 UTC 2011
- Includes a test suite for the case.
---
lib/rpmdb.c | 8 ++++----
tests/rpmdb.at | 39 +++++++++++++++++++++++++++++++++++++++
2 files changed, 43 insertions(+), 4 deletions(-)
diff --git a/lib/rpmdb.c b/lib/rpmdb.c
index 92b2d5d..4e73cac 100644
--- a/lib/rpmdb.c
+++ b/lib/rpmdb.c
@@ -1142,9 +1142,9 @@ static rpmRC dbiFindByLabel(rpmdb db, dbiIndex dbi, const char * arg,
if (c != '[') brackets = 0;
break;
}
- c = *s;
- if (!brackets && *s == '-')
+ if (!brackets && c && *s == '-')
break;
+ c = *s;
}
/* FIX: *matches may be NULL. */
@@ -1175,9 +1175,9 @@ static rpmRC dbiFindByLabel(rpmdb db, dbiIndex dbi, const char * arg,
if (c != '[') brackets = 0;
break;
}
- c = *s;
- if (!brackets && *s == '-')
+ if (!brackets && c && *s == '-')
break;
+ c = *s;
}
if (s == localarg) {
diff --git a/tests/rpmdb.at b/tests/rpmdb.at
index cecd355..461bd9c 100644
--- a/tests/rpmdb.at
+++ b/tests/rpmdb.at
@@ -44,6 +44,45 @@ runroot rpm \
[0])
AT_CLEANUP
+# ------------------------------
+# Run rpm -q <package> where <package> exists in the db.
+AT_SETUP([rpm -q foo])
+AT_KEYWORDS([rpmdb query])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+
+runroot rpm -i \
+ /data/RPMS/foo-1.0-1.noarch.rpm
+
+runroot rpm -q foo
+
+],
+[0],
+[foo-1.0-1.noarch
+],
+[])
+AT_CLEANUP
+
+# ------------------------------
+# Run rpm -q <package>- where <package> exists in the db.
+AT_SETUP([rpm -q foo-])
+AT_KEYWORDS([rpmdb query])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+
+runroot rpm -i \
+ /data/RPMS/foo-1.0-1.noarch.rpm
+
+runroot rpm -q foo-
+
+],
+[1],
+[package foo- is not installed
+],
+[])
+AT_CLEANUP
# ------------------------------
# install a noarch package into a local rpmdb without --relocate and --nodeps
--
1.7.6.4
More information about the Rpm-maint
mailing list