Bug 2123477

Summary: NSS performs unnecessary attribute calls/integrity checks when listing database entries [rhel-9.3.0]
Product: Red Hat Enterprise Linux 9 Reporter: Hubert Kario <hkario>
Component: nssAssignee: Bob Relyea <rrelyea>
Status: ON_QA --- QA Contact: Alexander Sosedkin <asosedki>
Severity: unspecified Docs Contact:
Priority: low    
Version: 9.0CC: rrelyea
Target Milestone: rcKeywords: Triaged
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: nss-3.90.0-3.el9_2 Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Function callgraph none

Description Hubert Kario 2022-09-01 18:44:13 UTC
Created attachment 1909059 [details]
Function callgraph

Description of problem:
When certutil -K is used to list a database with a lot of keys, it takes significant amount of time (1.5-2s on 2.6GHz Skylake for db with 100 entries).

From profiling it looks like it is caused by querying attributes and calculating PBKDF2 for them. GOVERNMENT_TRUST looks like the most likely culprit.

Version-Release number of selected component (if applicable):
nss-3.79.0-13.el9_0.x86_64

How reproducible:
always

Steps to Reproduce:
1. create DBM database on RHEL-8, convert it to SQL, move to RHEL-9
2. valgrind --tool=callgrind certutil  -K -d sql:nssdb -f nssdb/passwd

Actual results:
sftkdb_VerifyAttribute.constprop.0 called over 200 times

Expected results:
fewer calls to integrity check functions

Additional info: