Update NSS to 3.38

- Added HACL*Poly1305 32-bit (INRIA/Microsoft)
- Updated to final TLS 1.3 draft version (28)
- Removed TLS 1.3 prerelease draft limit check
- Removed NPN code
- Enabled dev/urandom-only RNG on Linux with NSS_SEED_ONLY_DEV_URANDOM for non-standard environments
- Fixed several bugs with TLS 1.3 negotiation
- Updated internal certificate store
- Added support for the TLS Record Size Limit Extension.
- Fixed CVE-2018-0495
- Various security fixes in the ASN.1 code.
This commit is contained in:
wolfbeast 2018-08-14 07:52:35 +02:00 committed by Roy Tam
commit d36d4eb674
197 changed files with 4873 additions and 7145 deletions

View file

@ -175,16 +175,16 @@ typedef struct {
*
*/
int
SignAllArc(char *jartree, char *keyName, int javascript, char *metafile,
char *install_script, int optimize, PRBool recurse)
SignAllArc(char *jartree, char *keyName, int javascript, char *metafilename,
char *install_script, int optimize_level, PRBool recurse)
{
SignArcInfo info;
info.keyName = keyName;
info.javascript = javascript;
info.metafile = metafile;
info.metafile = metafilename;
info.install_script = install_script;
info.optimize = optimize;
info.optimize = optimize_level;
return foreach (jartree, "", sign_all_arc_fn, recurse,
PR_TRUE /*include dirs*/, (void *)&info);
@ -194,7 +194,7 @@ static int
sign_all_arc_fn(char *relpath, char *basedir, char *reldir, char *filename,
void *arg)
{
char *zipfile = NULL;
char *zipfilename = NULL;
char *arc = NULL, *archive = NULL;
int retval = 0;
SignArcInfo *infop = (SignArcInfo *)arg;
@ -212,8 +212,8 @@ sign_all_arc_fn(char *relpath, char *basedir, char *reldir, char *filename,
}
archive = PR_smprintf("%s/%s", basedir, relpath);
zipfile = PL_strdup(archive);
arc = PORT_Strrchr(zipfile, '.');
zipfilename = PL_strdup(archive);
arc = PORT_Strrchr(zipfilename, '.');
if (arc == NULL) {
PR_fprintf(errorFD, "%s: Internal failure\n", PROGRAM_NAME);
@ -225,17 +225,17 @@ sign_all_arc_fn(char *relpath, char *basedir, char *reldir, char *filename,
PL_strcpy(arc, ".jar");
if (verbosity >= 0) {
PR_fprintf(outputFD, "\nsigning: %s\n", zipfile);
PR_fprintf(outputFD, "\nsigning: %s\n", zipfilename);
}
retval = SignArchive(archive, infop->keyName, zipfile,
retval = SignArchive(archive, infop->keyName, zipfilename,
infop->javascript, infop->metafile, infop->install_script,
infop->optimize, PR_TRUE /* recurse */);
}
finish:
if (archive)
PR_Free(archive);
if (zipfile)
PR_Free(zipfile);
if (zipfilename)
PR_Free(zipfilename);
return retval;
}
@ -707,8 +707,8 @@ SignFile(FILE *outFile, FILE *inFile, CERTCertificate *cert)
static int
generate_SF_file(char *manifile, char *who)
{
FILE *sf;
FILE *mf;
FILE *sfFile;
FILE *mfFile;
long r1, r2, r3;
char whofile[FNSIZE];
char *buf, *name = NULL;
@ -718,12 +718,12 @@ generate_SF_file(char *manifile, char *who)
strcpy(whofile, who);
if ((mf = fopen(manifile, "rb")) == NULL) {
if ((mfFile = fopen(manifile, "rb")) == NULL) {
perror(manifile);
exit(ERRX);
}
if ((sf = fopen(whofile, "wb")) == NULL) {
if ((sfFile = fopen(whofile, "wb")) == NULL) {
perror(who);
exit(ERRX);
}
@ -736,11 +736,11 @@ generate_SF_file(char *manifile, char *who)
if (buf == NULL || name == NULL)
out_of_memory();
fprintf(sf, "Signature-Version: 1.0\n");
fprintf(sf, "Created-By: %s\n", CREATOR);
fprintf(sf, "Comments: %s\n", BREAKAGE);
fprintf(sfFile, "Signature-Version: 1.0\n");
fprintf(sfFile, "Created-By: %s\n", CREATOR);
fprintf(sfFile, "Comments: %s\n", BREAKAGE);
if (fgets(buf, BUFSIZ, mf) == NULL) {
if (fgets(buf, BUFSIZ, mfFile) == NULL) {
PR_fprintf(errorFD, "%s: empty manifest file!\n", PROGRAM_NAME);
errorCount++;
exit(ERRX);
@ -752,15 +752,15 @@ generate_SF_file(char *manifile, char *who)
exit(ERRX);
}
fseek(mf, 0L, SEEK_SET);
fseek(mfFile, 0L, SEEK_SET);
/* Process blocks of headers, and calculate their hashen */
while (1) {
/* Beginning range */
r1 = ftell(mf);
r1 = ftell(mfFile);
if (fgets(name, BUFSIZ, mf) == NULL)
if (fgets(name, BUFSIZ, mfFile) == NULL)
break;
line++;
@ -774,46 +774,46 @@ generate_SF_file(char *manifile, char *who)
}
r2 = r1;
while (fgets(buf, BUFSIZ, mf)) {
while (fgets(buf, BUFSIZ, mfFile)) {
if (*buf == 0 || *buf == '\n' || *buf == '\r')
break;
line++;
/* Ending range for hashing */
r2 = ftell(mf);
r2 = ftell(mfFile);
}
r3 = ftell(mf);
r3 = ftell(mfFile);
if (r1) {
fprintf(sf, "\n");
fprintf(sf, "%s", name);
fprintf(sfFile, "\n");
fprintf(sfFile, "%s", name);
}
calculate_MD5_range(mf, r1, r2, &dig);
calculate_MD5_range(mfFile, r1, r2, &dig);
if (optimize == 0) {
fprintf(sf, "Digest-Algorithms: MD5 SHA1\n");
fprintf(sfFile, "Digest-Algorithms: MD5 SHA1\n");
md5 = BTOA_DataToAscii(dig.md5, MD5_LENGTH);
fprintf(sf, "MD5-Digest: %s\n", md5);
fprintf(sfFile, "MD5-Digest: %s\n", md5);
PORT_Free(md5);
}
sha1 = BTOA_DataToAscii(dig.sha1, SHA1_LENGTH);
fprintf(sf, "SHA1-Digest: %s\n", sha1);
fprintf(sfFile, "SHA1-Digest: %s\n", sha1);
PORT_Free(sha1);
/* restore normalcy after changing offset position */
fseek(mf, r3, SEEK_SET);
fseek(mfFile, r3, SEEK_SET);
}
PORT_Free(buf);
PORT_Free(name);
fclose(sf);
fclose(mf);
fclose(sfFile);
fclose(mfFile);
return 0;
}