summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrelyea%netscape.com <devnull@localhost>2002-11-26 22:14:56 +0000
committerrelyea%netscape.com <devnull@localhost>2002-11-26 22:14:56 +0000
commitd3806c3918c8baf84bc6ca778ffdb7962726e7c1 (patch)
tree6e7b4912e2faf1e56e4ba01316e7a7fb4819abd4
parent6bef839331b89ead23e0e9b522729748595e34bf (diff)
downloadnss-hg-d3806c3918c8baf84bc6ca778ffdb7962726e7c1.tar.gz
More review changes,
Fix incorrect return in pcertdb.c
-rw-r--r--security/nss/lib/softoken/dbmshim.c43
-rw-r--r--security/nss/lib/softoken/pcertdb.c6
-rw-r--r--security/nss/lib/softoken/pcertt.h2
3 files changed, 33 insertions, 18 deletions
diff --git a/security/nss/lib/softoken/dbmshim.c b/security/nss/lib/softoken/dbmshim.c
index 9cc33a575..935780dbf 100644
--- a/security/nss/lib/softoken/dbmshim.c
+++ b/security/nss/lib/softoken/dbmshim.c
@@ -53,16 +53,31 @@
#include "pkcs11i.h"
+/*
+ * Blob block:
+ * Byte 0 CERTDB Version -+ -+
+ * Byte 1 certDBEntryTypeBlob | BLOB_HEAD_LEN |
+ * Byte 2 flags (always '0'); | |
+ * Byte 3 reserved (always '0'); -+ |
+ * Byte 4 LSB length | <--BLOB_LENGTH_START | BLOB_BUF_LEN
+ * Byte 5 . | |
+ * Byte 6 . | BLOB_LENGTH_LEN |
+ * Byte 7 MSB length | |
+ * Byte 8 blob_filename -+ -+ <-- BLOB_NAME_START |
+ * Byte 9 . | BLOB_NAME_LEN |
+ * . . | |
+ * Byte 37 . -+ -+
+ */
#define DBS_BLOCK_SIZE (16*1024) /* 16 k */
#define DBS_MAX_ENTRY_SIZE (DBS_BLOCK_SIZE - (2048)) /* 14 k */
#define DBS_CACHE_SIZE DBS_BLOCK_SIZE*8
#define ROUNDDIV(x,y) (x+(y-1))/y
#define BLOB_HEAD_LEN 4
-#define BLOB_NAMELENGTH_START BLOB_HEAD_LEN
-#define BLOB_NAMELENGTH_LEN 4
-#define BLOB_NAME_START BLOB_NAMELENGTH_START+BLOB_NAMELENGTH_LEN
-#define BLOB_NAME_LEN 1+ROUNDDIV(SHA1_LENGTH*4,3)+2
-#define BLOB_BUF_LEN BLOB_HEAD_LEN+BLOB_NAMELENGTH_LEN+BLOB_NAME_LEN
+#define BLOB_LENGTH_START BLOB_HEAD_LEN
+#define BLOB_LENGTH_LEN 4
+#define BLOB_NAME_START BLOB_LENGTH_START+BLOB_LENGTH_LEN
+#define BLOB_NAME_LEN 1+ROUNDDIV(SHA1_LENGTH,3)*4+1
+#define BLOB_BUF_LEN BLOB_HEAD_LEN+BLOB_LENGTH_LEN+BLOB_NAME_LEN
/* a Shim data structure. This data structure has a db built into it. */
typedef struct DBSStr DBS;
@@ -113,10 +128,10 @@ dbs_getBlobSize(DBT *blobData)
{
unsigned char *addr = (unsigned char *)blobData->data;
- return (PRUint32)(addr[BLOB_NAMELENGTH_START+3] << 24) |
- (addr[BLOB_NAMELENGTH_START+2] << 16) |
- (addr[BLOB_NAMELENGTH_START+1] << 8) |
- addr[BLOB_NAMELENGTH_START];
+ return (PRUint32)(addr[BLOB_LENGTH_START+3] << 24) |
+ (addr[BLOB_LENGTH_START+2] << 16) |
+ (addr[BLOB_LENGTH_START+1] << 8) |
+ addr[BLOB_LENGTH_START];
}
@@ -151,16 +166,16 @@ dbs_mkBlob(DBS *dbsp,const DBT *key, const DBT *data, DBT *blobData)
b[1] = (char) certDBEntryTypeBlob; /* type */
b[2] = 0; /* flags */
b[3] = 0; /* reserved */
- b[BLOB_NAMELENGTH_START] = length & 0xff;
- b[BLOB_NAMELENGTH_START+1] = (length >> 8) & 0xff;
- b[BLOB_NAMELENGTH_START+2] = (length >> 16) & 0xff;
- b[BLOB_NAMELENGTH_START+3] = (length >> 24) & 0xff;
+ b[BLOB_LENGTH_START] = length & 0xff;
+ b[BLOB_LENGTH_START+1] = (length >> 8) & 0xff;
+ b[BLOB_LENGTH_START+2] = (length >> 16) & 0xff;
+ b[BLOB_LENGTH_START+3] = (length >> 24) & 0xff;
sha1Item.data = sha1_data;
sha1Item.len = SHA1_LENGTH;
SHA1_HashBuf(sha1_data,key->data,key->size);
b[BLOB_NAME_START]='b'; /* Make sure we start with a alpha */
- PORT_Memset(&b[BLOB_NAME_START+1],0, BLOB_NAME_LEN-1);
NSSBase64_EncodeItem(NULL,&b[BLOB_NAME_START+1],BLOB_NAME_LEN-1,&sha1Item);
+ b[BLOB_BUF_LEN-1] = 0;
dbs_replaceSlash(&b[BLOB_NAME_START+1],BLOB_NAME_LEN-1);
blobData->data = b;
blobData->size = BLOB_BUF_LEN;
diff --git a/security/nss/lib/softoken/pcertdb.c b/security/nss/lib/softoken/pcertdb.c
index 474d302a3..68c2bd633 100644
--- a/security/nss/lib/softoken/pcertdb.c
+++ b/security/nss/lib/softoken/pcertdb.c
@@ -2655,14 +2655,14 @@ nsslowcert_UpdateSubjectEmailAddr(NSSLOWCERTCertDBHandle *dbhandle,
if (emailAddr == NULL) {
return SECFailure;
}
+ } else {
+ return SECSuccess;
}
entry = ReadDBSubjectEntry(dbhandle,derSubject);
if (entry == NULL) {
goto loser;
- } else {
- return SECSuccess;
- }
+ }
if ( entry->emailAddrs ) {
for (i=0; i < entry->nemailAddrs; i++) {
diff --git a/security/nss/lib/softoken/pcertt.h b/security/nss/lib/softoken/pcertt.h
index 351c12593..13a155b1e 100644
--- a/security/nss/lib/softoken/pcertt.h
+++ b/security/nss/lib/softoken/pcertt.h
@@ -309,7 +309,7 @@ typedef struct _certDBEntrySubject {
SECItem *certKeys;
SECItem *keyIDs;
char **emailAddrs;
- int nemailAddrs;
+ unsigned int nemailAddrs;
} certDBEntrySubject;
#define DB_SUBJECT_ENTRY_HEADER_LEN 6