--- a/rpmdb/rpmvercmp.c +++ a/rpmdb/rpmvercmp.c @@ -34,8 +34,10 @@ int rpmvercmp(const char * a, const char * b) /* loop through each version segment of str1 and str2 and compare them */ while (*one && *two) { - while (*one && !xisalnum(*one)) one++; - while (*two && !xisalnum(*two)) two++; + if ((*one && !xisalnum(*one)) && (*two && !xisalnum(*two))) { + while (*one && !xisalnum(*one)) one++; + while (*two && !xisalnum(*two)) two++; + } if ( !*one && !*two ) return 0;