--- rpm-5.3.12/lib/rpmds.c.55810~ 2011-07-12 11:54:08.000000000 +0200 +++ rpm-5.3.12/lib/rpmds.c 2011-07-13 16:51:59.699924504 +0200 @@ -4333,9 +4333,10 @@ assert((rpmdsFlags(B) & RPMSENSE_SENSEMA case 'D': ix = RPMEVR_D; /*@switchbreak@*/break; } #if defined(RPM_VENDOR_MANDRIVA) /* mdvbz#55810 */ - if(ix == RPMEVR_R && (bFlags & (~RPMSENSE_GREATER & RPMSENSE_EQUAL)) - && *(b->F[ix]) == '\0') - break; + if(ix >= RPMEVR_R && (bFlags & (~RPMSENSE_GREATER & RPMSENSE_EQUAL)) + && !(ix == RPMEVR_D && (bFlags & RPMSENSE_LESS)) + && *(b->F[ix]) == '\0') + break; if (a->F[ix] && b->F[ix]) #else if (a->F[ix] && *a->F[ix] && b->F[ix] && *b->F[ix]) --- rpm-5.3.12/rpmdb/rpmevr.c.55810~ 2011-07-12 11:54:27.000000000 +0200 +++ rpm-5.3.12/rpmdb/rpmevr.c 2011-07-13 16:51:59.700924519 +0200 @@ -286,9 +286,10 @@ assert(b->F[RPMEVR_D] != NULL); case 'D': ix = RPMEVR_D; /*@switchbreak@*/break; } #if defined(RPM_VENDOR_MANDRIVA) /* mdvbz#55810 */ - if(ix == RPMEVR_R && (b->Flags & (~RPMSENSE_GREATER & RPMSENSE_EQUAL)) - && *(b->F[ix]) == '\0') - break; + if(ix >= RPMEVR_R && (b->Flags & (~RPMSENSE_GREATER & RPMSENSE_EQUAL)) + && !(ix == RPMEVR_D && (b->Flags & RPMSENSE_LESS)) + && *(b->F[ix]) == '\0') + break; #endif rc = compare_values(a->F[ix], b->F[ix]);