Index: nss/lib/freebl/pqg.c =================================================================== --- nss.orig/lib/freebl/pqg.c +++ nss/lib/freebl/pqg.c @@ -1232,6 +1232,9 @@ cleanup: MP_TO_SEC_ERROR(err); rv = SECFailure; } + if (rv != SECSuccess) { + mp_zero(G); + } return rv; } Index: nss/lib/softoken/sftkdb.c =================================================================== --- nss.orig/lib/softoken/sftkdb.c +++ nss/lib/softoken/sftkdb.c @@ -1538,7 +1538,7 @@ loser: PORT_ZFree(data, dataSize); } if (arena) { - PORT_FreeArena(arena, PR_FALSE); + PORT_FreeArena(arena, PR_TRUE); } return crv; } Index: nss/lib/softoken/sftkpwd.c =================================================================== --- nss.orig/lib/softoken/sftkpwd.c +++ nss/lib/softoken/sftkpwd.c @@ -1459,7 +1459,7 @@ loser: PORT_ZFree(newKey.data, newKey.len); } if (result) { - SECITEM_FreeItem(result, PR_TRUE); + SECITEM_ZfreeItem(result, PR_TRUE); } if (rv != SECSuccess) { (*keydb->db->sdb_Abort)(keydb->db);