From owner-svn-soc-all@freebsd.org Mon Oct 26 20:36:09 2015 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EFB8BA1EB07 for ; Mon, 26 Oct 2015 20:36:09 +0000 (UTC) (envelope-from def@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C7DF71260 for ; Mon, 26 Oct 2015 20:36:09 +0000 (UTC) (envelope-from def@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id t9QKa9Oh058619 for ; Mon, 26 Oct 2015 20:36:09 GMT (envelope-from def@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id t9QKa9uB058603 for svn-soc-all@FreeBSD.org; Mon, 26 Oct 2015 20:36:09 GMT (envelope-from def@FreeBSD.org) Date: Mon, 26 Oct 2015 20:36:09 GMT Message-Id: <201510262036.t9QKa9uB058603@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to def@FreeBSD.org using -f From: def@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r293096 - soc2013/def/crashdump-head/sys/kern MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Oct 2015 20:36:10 -0000 Author: def Date: Mon Oct 26 20:36:08 2015 New Revision: 293096 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=293096 Log: Encode kernel dump key. Modified: soc2013/def/crashdump-head/sys/kern/kern_shutdown.c Modified: soc2013/def/crashdump-head/sys/kern/kern_shutdown.c ============================================================================== --- soc2013/def/crashdump-head/sys/kern/kern_shutdown.c Mon Oct 26 20:34:11 2015 (r293095) +++ soc2013/def/crashdump-head/sys/kern/kern_shutdown.c Mon Oct 26 20:36:08 2015 (r293096) @@ -44,6 +44,7 @@ #include "opt_sched.h" #include "opt_watchdog.h" +#include #include #include #include @@ -878,9 +879,6 @@ sizeof(kdc->kdc_iv) + sizeof(kdc->kdc_encryptedkeysize) + kdc->kdc_encryptedkeysize + KERNELDUMP_BLOCK_SIZE - 1) / KERNELDUMP_BLOCK_SIZE * KERNELDUMP_BLOCK_SIZE; - kdc->kdc_dumpkeysize = (sizeof(struct kerneldumpkey) + - kdc->kdc_encryptedkeysize + KERNELDUMP_BLOCK_SIZE - 1) / - KERNELDUMP_BLOCK_SIZE * KERNELDUMP_BLOCK_SIZE; return (kdc); failed: @@ -1061,23 +1059,28 @@ int dump_write_key(struct dumperinfo *di, vm_offset_t physical, off_t offset) { + uint8_t *buf, *p; struct kerneldumpcrypto *kdc; - struct kerneldumpkey *kdk; int ret; kdc = di->kdc; if (kdc == NULL) return (0); - kdk = malloc(kdc->kdc_dumpkeysize, M_EKCD, M_WAITOK | M_ZERO); - kdk->kdk_algorithm = kdc->kdc_algorithm; - bcopy(kdc->kdc_iv, kdk->kdk_iv, sizeof(kdk->kdk_iv)); - kdk->kdk_encryptedkeysize = kdc->kdc_encryptedkeysize; - bcopy(kdc->kdc_encryptedkey, kdk->kdk_encryptedkey, - kdk->kdk_encryptedkeysize); + buf = malloc(kdc->kdc_dumpkeysize, M_EKCD, M_WAITOK | M_ZERO); + + p = buf; + *p = kdc->kdc_algorithm; + p += sizeof(kdc->kdc_algorithm); + bcopy(kdc->kdc_iv, p, sizeof(kdc->kdc_iv)); + p += sizeof(kdc->kdc_iv); + le32enc(p, kdc->kdc_encryptedkeysize); + p += sizeof(kdc->kdc_encryptedkeysize); + bcopy(kdc->kdc_encryptedkey, p, kdc->kdc_encryptedkeysize); + p += kdc->kdc_encryptedkeysize; - ret = dump_raw_write(di, kdk, physical, offset, kdc->kdc_dumpkeysize); - free(kdk, M_EKCD); + ret = dump_raw_write(di, buf, physical, offset, kdc->kdc_dumpkeysize); + free(buf, M_EKCD); return (ret); }