1*b1cdbd2cSJim Jagielski--- misc/nss-3.25/nss/cmd/signtool/sign.c 2016-06-20 14:11:28.000000000 -0300 2*b1cdbd2cSJim Jagielski+++ misc/build/nss-3.25/nss/cmd/signtool/sign.c 2019-11-01 13:32:56.496828470 -0300 3*b1cdbd2cSJim Jagielski@@ -8,6 +8,10 @@ 4*b1cdbd2cSJim Jagielski #include "blapi.h" 5*b1cdbd2cSJim Jagielski #include "sechash.h" /* for HASH_GetHashObject() */ 6*b1cdbd2cSJim Jagielski 7*b1cdbd2cSJim Jagielski+#if defined(_MSC_VER) && _MSC_VER < 1900 8*b1cdbd2cSJim Jagielski+#define snprintf _snprintf 9*b1cdbd2cSJim Jagielski+#endif 10*b1cdbd2cSJim Jagielski+ 11*b1cdbd2cSJim Jagielski static int create_pk7(char *dir, char *keyName, int *keyType); 12*b1cdbd2cSJim Jagielski static int jar_find_key_type(CERTCertificate *cert); 13*b1cdbd2cSJim Jagielski static int manifesto(char *dirname, char *install_script, PRBool recurse); 14*b1cdbd2cSJim Jagielski@@ -43,6 +47,7 @@ SignArchive(char *tree, char *keyName, c 15*b1cdbd2cSJim Jagielski int status; 16*b1cdbd2cSJim Jagielski char tempfn[FNSIZE], fullfn[FNSIZE]; 17*b1cdbd2cSJim Jagielski int keyType = rsaKey; 18*b1cdbd2cSJim Jagielski+ int count; 19*b1cdbd2cSJim Jagielski 20*b1cdbd2cSJim Jagielski metafile = meta_file; 21*b1cdbd2cSJim Jagielski optimize = _optimize; 22*b1cdbd2cSJim Jagielski@@ -81,11 +86,18 @@ SignArchive(char *tree, char *keyName, c 23*b1cdbd2cSJim Jagielski } 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski /* rsa/dsa to zip */ 26*b1cdbd2cSJim Jagielski- sprintf(tempfn, "META-INF/%s.%s", base, (keyType == dsaKey ? 27*b1cdbd2cSJim Jagielski- "dsa" 28*b1cdbd2cSJim Jagielski- : 29*b1cdbd2cSJim Jagielski- "rsa")); 30*b1cdbd2cSJim Jagielski- sprintf(fullfn, "%s/%s", tree, tempfn); 31*b1cdbd2cSJim Jagielski+ count = snprintf(tempfn, sizeof(tempfn), "META-INF/%s.%s", base, (keyType == dsaKey ? "dsa" : "rsa")); 32*b1cdbd2cSJim Jagielski+ if (count >= sizeof(tempfn)) { 33*b1cdbd2cSJim Jagielski+ PR_fprintf(errorFD, "unable to write key metadata\n"); 34*b1cdbd2cSJim Jagielski+ errorCount++; 35*b1cdbd2cSJim Jagielski+ exit(ERRX); 36*b1cdbd2cSJim Jagielski+ } 37*b1cdbd2cSJim Jagielski+ count = snprintf(fullfn, sizeof(fullfn), "%s/%s", tree, tempfn); 38*b1cdbd2cSJim Jagielski+ if (count >= sizeof(fullfn)) { 39*b1cdbd2cSJim Jagielski+ PR_fprintf(errorFD, "unable to write key metadata\n"); 40*b1cdbd2cSJim Jagielski+ errorCount++; 41*b1cdbd2cSJim Jagielski+ exit(ERRX); 42*b1cdbd2cSJim Jagielski+ } 43*b1cdbd2cSJim Jagielski JzipAdd(fullfn, tempfn, zipfile, compression_level); 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski /* Loop through all files & subdirectories, add to archive */ 46*b1cdbd2cSJim Jagielski@@ -95,22 +107,44 @@ SignArchive(char *tree, char *keyName, c 47*b1cdbd2cSJim Jagielski } 48*b1cdbd2cSJim Jagielski /* mf to zip */ 49*b1cdbd2cSJim Jagielski strcpy(tempfn, "META-INF/manifest.mf"); 50*b1cdbd2cSJim Jagielski- sprintf(fullfn, "%s/%s", tree, tempfn); 51*b1cdbd2cSJim Jagielski+ count = snprintf(fullfn, sizeof(fullfn), "%s/%s", tree, tempfn); 52*b1cdbd2cSJim Jagielski+ if (count >= sizeof(fullfn)) { 53*b1cdbd2cSJim Jagielski+ PR_fprintf(errorFD, "unable to write manifest\n"); 54*b1cdbd2cSJim Jagielski+ errorCount++; 55*b1cdbd2cSJim Jagielski+ exit(ERRX); 56*b1cdbd2cSJim Jagielski+ } 57*b1cdbd2cSJim Jagielski JzipAdd(fullfn, tempfn, zipfile, compression_level); 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielski /* sf to zip */ 60*b1cdbd2cSJim Jagielski- sprintf(tempfn, "META-INF/%s.sf", base); 61*b1cdbd2cSJim Jagielski- sprintf(fullfn, "%s/%s", tree, tempfn); 62*b1cdbd2cSJim Jagielski+ count = snprintf(tempfn, sizeof(tempfn), "META-INF/%s.sf", base); 63*b1cdbd2cSJim Jagielski+ if (count >= sizeof(tempfn)) { 64*b1cdbd2cSJim Jagielski+ PR_fprintf(errorFD, "unable to write sf metadata\n"); 65*b1cdbd2cSJim Jagielski+ errorCount++; 66*b1cdbd2cSJim Jagielski+ exit(ERRX); 67*b1cdbd2cSJim Jagielski+ } 68*b1cdbd2cSJim Jagielski+ count = snprintf(fullfn, sizeof(fullfn), "%s/%s", tree, tempfn); 69*b1cdbd2cSJim Jagielski+ if (count >= sizeof(fullfn)) { 70*b1cdbd2cSJim Jagielski+ PR_fprintf(errorFD, "unable to write sf metadata\n"); 71*b1cdbd2cSJim Jagielski+ errorCount++; 72*b1cdbd2cSJim Jagielski+ exit(ERRX); 73*b1cdbd2cSJim Jagielski+ } 74*b1cdbd2cSJim Jagielski JzipAdd(fullfn, tempfn, zipfile, compression_level); 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski /* Add the rsa/dsa file to the zip archive normally */ 77*b1cdbd2cSJim Jagielski if (!xpi_arc) { 78*b1cdbd2cSJim Jagielski /* rsa/dsa to zip */ 79*b1cdbd2cSJim Jagielski- sprintf(tempfn, "META-INF/%s.%s", base, (keyType == dsaKey ? 80*b1cdbd2cSJim Jagielski- "dsa" 81*b1cdbd2cSJim Jagielski- : 82*b1cdbd2cSJim Jagielski- "rsa")); 83*b1cdbd2cSJim Jagielski- sprintf(fullfn, "%s/%s", tree, tempfn); 84*b1cdbd2cSJim Jagielski+ count = snprintf(tempfn, sizeof(tempfn), "META-INF/%s.%s", base, (keyType == dsaKey ? "dsa" : "rsa")); 85*b1cdbd2cSJim Jagielski+ if (count >= sizeof(tempfn)) { 86*b1cdbd2cSJim Jagielski+ PR_fprintf(errorFD, "unable to write key metadata\n"); 87*b1cdbd2cSJim Jagielski+ errorCount++; 88*b1cdbd2cSJim Jagielski+ exit(ERRX); 89*b1cdbd2cSJim Jagielski+ } 90*b1cdbd2cSJim Jagielski+ count = snprintf(fullfn, sizeof(fullfn), "%s/%s", tree, tempfn); 91*b1cdbd2cSJim Jagielski+ if (count >= sizeof(fullfn)) { 92*b1cdbd2cSJim Jagielski+ PR_fprintf(errorFD, "unable to write key metadata\n"); 93*b1cdbd2cSJim Jagielski+ errorCount++; 94*b1cdbd2cSJim Jagielski+ exit(ERRX); 95*b1cdbd2cSJim Jagielski+ } 96*b1cdbd2cSJim Jagielski JzipAdd(fullfn, tempfn, zipfile, compression_level); 97*b1cdbd2cSJim Jagielski } 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski@@ -413,6 +447,7 @@ static int 100*b1cdbd2cSJim Jagielski manifesto_xpi_fn(char *relpath, char *basedir, char *reldir, char *filename, void *arg) 101*b1cdbd2cSJim Jagielski { 102*b1cdbd2cSJim Jagielski char fullname[FNSIZE]; 103*b1cdbd2cSJim Jagielski+ int count; 104*b1cdbd2cSJim Jagielski 105*b1cdbd2cSJim Jagielski if (verbosity >= 0) { 106*b1cdbd2cSJim Jagielski PR_fprintf(outputFD, "--> %s\n", relpath); 107*b1cdbd2cSJim Jagielski@@ -426,7 +461,10 @@ manifesto_xpi_fn(char *relpath, char *ba 108*b1cdbd2cSJim Jagielski if (!PL_HashTableLookup(extensions, ext)) 109*b1cdbd2cSJim Jagielski return 0; 110*b1cdbd2cSJim Jagielski } 111*b1cdbd2cSJim Jagielski- sprintf(fullname, "%s/%s", basedir, relpath); 112*b1cdbd2cSJim Jagielski+ count = snprintf(fullname, sizeof(fullname), "%s/%s", basedir, relpath); 113*b1cdbd2cSJim Jagielski+ if (count >= sizeof(fullname)) { 114*b1cdbd2cSJim Jagielski+ return 1; 115*b1cdbd2cSJim Jagielski+ } 116*b1cdbd2cSJim Jagielski JzipAdd(fullname, relpath, zipfile, compression_level); 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski return 0; 119