Bug 48635

Summary: Разыменование нуля в rpm-4.13.0.1/lib/backend/db3.c
Product: Sisyphus Reporter: aiburke
Component: rpmAssignee: placeholder <placeholder>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: amakeenk, at, glebfm, imz, ldv, placeholder, vt
Version: unstable   
Hardware: x86   
OS: Linux   
Attachments:
Description Flags
Скриншот фрагмента кода none

Description aiburke 2023-11-30 11:42:41 MSK
Created attachment 15131 [details]
Скриншот фрагмента кода

В строке 1024 в rpm-4.13.0.1/lib/backend/db3.c происходит сравнение указателя keyp с NULL:
if (keyp) {...}

Далее в условии в строках 1039-1040 указатель keyp передается на вход функции memcmp(key.data, keyp, keylen), где и происходит разыменование.

Имеем следующее:
if (keyp) {...}
...
for (;;) {
    ...
    if (searchType == DBC_PREFIX_SEARCH &&
		    (key.size < keylen || memcmp(key.data, keyp, keylen) != 0))
		break;
    ...
}

Таким образом в memcmp(key.data, keyp, keylen) может произойти разыменование нулевого указателя.

Found by Linux Verification Center (https://portal.linuxtesting.ru/) with SVACE.

Author A.Burke.