Closed Bug 812399 Opened 12 years ago Closed 12 years ago

The fix for bug 641052 was partially lost when bug 753116 was fixed

Categories

(NSS :: Libraries, defect, P1)

3.14
defect

Tracking

(Not tracked)

RESOLVED FIXED
3.14.1

People

(Reporter: wtc, Assigned: wtc)

References

Details

(Keywords: regression)

Attachments

(1 file)

Attached patch PatchSplinter Review
When Bob fixed bug 753116 (softoken needs to split out common components to util),
he moved lib/softoken/sftkmod.c to lib/util/utilmod.c, and lib/softoken/sftkpars.c
to lib/util/utilpars.c. During that move, my fix for bug 641052 (NSS_NoDB_Init
should not try to open /pkcs11.txt and /secmod.db) was partially lost.

(I don't know how this happened. Perhaps Bob moved an old version of
lib/softoken/sftkmod.c and lib/softoken/sftkpars.c and recreated some of my changes.
Perhaps Bob deliberately removed some of my changes.)

I adapted my patch to utilmod.c and utilpars.c. Some of the code I modified in
utilmod.c has been removed, so I am not sure if I adapted my patch correctly.

Notes on the patch:

1. The most important change is the change in nssutil_ReadSecmodDB to allow
the 'dbname' argument to be NULL. Please check that change carefully.

2. I changed the comment "old one doesn't exist" to "old one exists" because
the original code was:

        /* old one doesn't exist */
        status = PR_Access(olddbname, PR_ACCESS_EXISTS);
        if (status != PR_SUCCESS) {
            goto bail;
        }

But the new code is:

	/* old one doesn't exist */
 	status = PR_Access(olddbname, PR_ACCESS_EXISTS);
 	if (status == PR_SUCCESS) {
 	    PR_smprintf_free(olddbname);
 	    PORT_SetError(SEC_ERROR_LEGACY_DATABASE);
 	    return NULL;
 	}

So the old comment doesn't match the new code.
Attachment #682298 - Flags: review?(rrelyea)
I confirmed the regression. With the current NSS trunk, the strace output
of a program calling NSS_NoDB_Init() on Linux contains:

open("/pkcs11.txt", O_RDONLY)           = -1 ENOENT (No such file or directory)
access("/secmod.db", F_OK)              = -1 ENOENT (No such file or directory)

Those lines are gone if I apply the patch.

NOTE: I am not convinced this bug could cause NSS_NoDB_Init to fail though.
I created /pkcs11.txt and /secmod.db on my Linux computer with garbage contents,
but NSS_NoDB_Init still returns SECSuccess. The strace output shows NSS opens
/pkcs11.txt, reads its contents, and closes the it.
Comment on attachment 682298 [details] [diff] [review]
Patch

r+ rrelyea
Attachment #682298 - Flags: review?(rrelyea) → review+
I figured out a way for this bug to cause NSS_NoDB_Init to fail.

1. /pkcs11.txt does not exist.

2. /secmod.db exists.

3. libnssdbm3.so does not exist.

I missed the third condition when I tried to cause NSS_NoDB_Init to fail
last night. Now I think this bug is very likely the cause of bug 811928.

Patch checked in on the NSS trunk (NSS 3.14.1).

Checking in utilmod.c;
/cvsroot/mozilla/security/nss/lib/util/utilmod.c,v  <--  utilmod.c
new revision: 1.8; previous revision: 1.7
done
Checking in utilpars.c;
/cvsroot/mozilla/security/nss/lib/util/utilpars.c,v  <--  utilpars.c
new revision: 1.6; previous revision: 1.5
done
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: