[sisyphus] i586 rpm setversions regression
Alexey Tourbin
at на altlinux.ru
Пн Дек 24 16:05:23 MSK 2012
On Mon, Dec 24, 2012 at 03:28:09PM +0400, Dmitry V. Levin wrote:
> On Mon, Dec 24, 2012 at 11:55:09AM +0200, Michael Shigorin wrote:
> > Здравствуйте.
> > Это одного меня так накрыло?
>
> Похоже на
> http://lists.altlinux.org/pipermail/sisyphus-incominger/2012-December/334059.html
> т.е. set.c в rpm на i586 сломался на ровном месте.
[builder на people ~]$ /usr/lib/rpm/setcmp set:kdSxWgTyZxEcQx104N1sOQPFrBU4hMyJgswBQdypWl99UkQfZ7FfVfLes8xXStDq2ZBO04AhAjro2klgZ3IPusa9PpeHQCT4xiF5vDAsf0PvkfkbHFKHGGYt7lk6gVuQUZg05tAONMVt1 set:jhK9a5Z0
-2
[builder на people ~]$
Похоже на проблему перекодирования в меньшую битность (в данном
случае set:k > set:j). Кажется, нашел ошибку, только теперь не знаю,
как проверить - хешер не заводится.
--- lib/set.c-
+++ lib/set.c
@@ -1107,8 +1107,8 @@ int rpmsetcmp(const char *str1, const ch
int c1 = cache_decode_set(str1, Mshift1, &v1);
if (c1 < 0)
return -3;
- unsigned v1bufA[c1 + 1];
- unsigned v1bufB[c1 + 1];
+ unsigned v1bufA[c1 + SENTINELS];
+ unsigned v1bufB[c1 + SENTINELS];
// decode set2 (on the stack)
int len2 = strlen(str2);
int c2 = decode_set_size(len2, Mshift2);
Подробная информация о списке рассылки Sisyphus