Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 7 Jun 2015 16:23:14 GMT
From:      def@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r286795 - in soc2013/def/crashdump-head: sbin/cryptcore sys/kern sys/sys
Message-ID:  <201506071623.t57GNE4e061410@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: def
Date: Sun Jun  7 16:23:14 2015
New Revision: 286795
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286795

Log:
  Let kernel dump key size be size_t.

Modified:
  soc2013/def/crashdump-head/sbin/cryptcore/cryptcore.c
  soc2013/def/crashdump-head/sys/kern/kern_shutdown.c
  soc2013/def/crashdump-head/sys/sys/kerneldump.h

Modified: soc2013/def/crashdump-head/sbin/cryptcore/cryptcore.c
==============================================================================
--- soc2013/def/crashdump-head/sbin/cryptcore/cryptcore.c	Sun Jun  7 15:54:57 2015	(r286794)
+++ soc2013/def/crashdump-head/sbin/cryptcore/cryptcore.c	Sun Jun  7 16:23:14 2015	(r286795)
@@ -146,8 +146,8 @@
 	 * From this moment on keys have to be erased before exit.
 	 */
 	privkeysize = RSA_size(privkey);
-	if (privkeysize != kdk->kdk_encryptedkeylen) {
-		pjdlog_error("RSA modulus size mismatch: equals %db and should be %db.",
+	if (privkeysize != (int)kdk->kdk_encryptedkeylen) {
+		pjdlog_error("RSA modulus size mismatch: equals %db and should be %lub.",
 		    8 * privkeysize, 8 * kdk->kdk_encryptedkeylen);
 		goto failed;
 	}

Modified: soc2013/def/crashdump-head/sys/kern/kern_shutdown.c
==============================================================================
--- soc2013/def/crashdump-head/sys/kern/kern_shutdown.c	Sun Jun  7 15:54:57 2015	(r286794)
+++ soc2013/def/crashdump-head/sys/kern/kern_shutdown.c	Sun Jun  7 16:23:14 2015	(r286795)
@@ -139,7 +139,6 @@
 SYSCTL_INT(_kern_shutdown, OID_AUTO, show_busybufs, CTLFLAG_RW,
 	&show_busybufs, 0, "");
 
-#ifdef EKCD
 MALLOC_DEFINE(M_KDK, "kerneldumpkey", "Kernel dump key structure");
 
 static struct kerneldumpcrypto {
@@ -155,6 +154,7 @@
 
 static struct kerneldumpkey *dumpkey;
 
+#ifdef EKCD
 static int kerneldump_sysctl_keymaterial(SYSCTL_HANDLER_ARGS);
 static int kerneldump_sysctl_encryptedkey(SYSCTL_HANDLER_ARGS);
 
@@ -905,7 +905,7 @@
 kerneldump_sysctl_encryptedkey(SYSCTL_HANDLER_ARGS)
 {
 	struct kerneldumpkey *kdk;
-	size_t kdksize;
+	size_t encryptedkeylen, kdksize;
 	int error;
 
 	if (req->newptr == NULL) {
@@ -916,8 +916,10 @@
 		    dumpkey->kdk_encryptedkeylen, req));
 	}
 
-	kdksize = ((sizeof(*kdk) + req->newlen + KERNELDUMP_BLOCK_SIZE - 1) /
-	    KERNELDUMP_BLOCK_SIZE) * KERNELDUMP_BLOCK_SIZE;
+	encryptedkeylen = req->newlen;
+	kdksize = ((sizeof(*kdk) + encryptedkeylen +
+	    KERNELDUMP_BLOCK_SIZE - 1) / KERNELDUMP_BLOCK_SIZE) *
+	    KERNELDUMP_BLOCK_SIZE;
 
 	kdk = (struct kerneldumpkey *)malloc(kdksize, M_KDK, M_WAITOK);
 	if (kdk == NULL)
@@ -925,7 +927,7 @@
 
 	kdk->kdk_size = kdksize;
 	bcopy(dumpcrypto.kdc_iv, kdk->kdk_iv, sizeof(kdk->kdk_iv));
-	kdk->kdk_encryptedkeylen = req->newlen;
+	kdk->kdk_encryptedkeylen = encryptedkeylen;
 
 	error = sysctl_handle_opaque(oidp, kdk->kdk_encryptedkey,
 	    kdk->kdk_encryptedkeylen, req);
@@ -1064,6 +1066,7 @@
 		    length));
 	}
 #endif
+
 	return (di->dumper(di->priv, virtual, physical, offset, length));
 }
 

Modified: soc2013/def/crashdump-head/sys/sys/kerneldump.h
==============================================================================
--- soc2013/def/crashdump-head/sys/sys/kerneldump.h	Sun Jun  7 15:54:57 2015	(r286794)
+++ soc2013/def/crashdump-head/sys/sys/kerneldump.h	Sun Jun  7 16:23:14 2015	(r286795)
@@ -93,9 +93,9 @@
 };
 
 struct kerneldumpkey {
-	uint32_t	kdk_size;
+	size_t		kdk_size;
 	uint8_t		kdk_iv[KERNELDUMP_IV_SIZE];
-	int		kdk_encryptedkeylen;
+	size_t		kdk_encryptedkeylen;
 	uint8_t		kdk_encryptedkey[];
 };
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201506071623.t57GNE4e061410>