[Midnightbsd-cvs] CVS Commit: x509.c: x509 fix

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Thu Aug 9 20:46:56 EDT 2007


Log Message:
-----------
x509 fix

Modified Files:
--------------
    src/usr.sbin/pkg_install/sign:
        x509.c (r1.1.1.1 -> r1.2)

-------------- next part --------------
Index: x509.c
===================================================================
RCS file: /home/cvs/src/usr.sbin/pkg_install/sign/x509.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -Lusr.sbin/pkg_install/sign/x509.c -Lusr.sbin/pkg_install/sign/x509.c -u -r1.1.1.1 -r1.2
--- usr.sbin/pkg_install/sign/x509.c
+++ usr.sbin/pkg_install/sign/x509.c
@@ -152,7 +152,8 @@
 		break;
 
 	    default:
-		warnx("Uknown certificate type");
+		warnx("Unknown certificate type: %d", EVP_PKEY_type(X509_get_pubkey(x509)->type));
+		fclose(fp);
 		return 0;
 	    }
 
@@ -234,13 +235,15 @@
 		break;
 
 	    default:
+		warnx("Unknown public key type: %d", EVP_PKEY_type(pkey->type));
+		md_ctx = NULL;
 		break;
 	    }
 
-	    status = EVP_VerifyFinal(md_ctx,
-				     n->signature->data,
-				     n->signature->length,
-				     pkey);
+	    status = (md_ctx == NULL) ? 0 : EVP_VerifyFinal(md_ctx,
+						n->signature->data,
+						n->signature->length,
+						pkey);
 
 	    EVP_PKEY_free(pkey);
 	    X509_free(x509);
@@ -291,13 +294,11 @@
 
 	f = fopen(filename, "r");
 	if (f == NULL) {
-	    free(n);
 	    return 0;
 	}
 	if (gzip_read_header(f, &h, sign) == GZIP_NOT_GZIP) {
 	    warnx("File %s is not a gzip file\n", filename);
 	    fclose(f);
-	    free(n);
 	    return 0;
 	}
 
@@ -314,6 +315,7 @@
 	if (keyf == NULL)
 	{
 	    warnx("Cannot open private key %s.", keyfile);
+	    fclose(f);
 	    return 0;
 	}
 	
@@ -335,16 +337,15 @@
 	{
 	case EVP_PKEY_RSA:
 	    md_type = EVP_sha1();
-printf("*** It's an RSA key.\n");
 	    break;
 
 	case EVP_PKEY_DSA:
 	    md_type = EVP_dss1();
-printf("@@@ It's a DSA key, yippee!\n");
 	    break;
 
 	default:
-	    warnx("Uknown key type");
+	    warnx("Unknown key type");
+	    fclose(f);
 	    return 0;
 	}
 
@@ -353,6 +354,8 @@
 	while ((length = fread(buffer, 1, sizeof buffer, f)) > 0)
 		EVP_SignUpdate(&md_ctx, buffer, length);
 
+	fclose(f);
+
 	sig_buf = malloc(sig_len);
 	if (sig_buf == NULL) {
 	    warnx("Cannot allocated %u bytes for signature buffer", sig_len);


More information about the Midnightbsd-cvs mailing list