libtpms/src/tpm_debug.c
Marc-André Lureau e60c35ecf9 Move common debug, memory & nvfile units to src/
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2021-08-06 08:04:37 -04:00

135 lines
4.5 KiB
C

/********************************************************************************/
/* */
/* TPM Debug Utilities */
/* Written by Ken Goldman */
/* IBM Thomas J. Watson Research Center */
/* $Id: tpm_debug.c 4179 2010-11-10 20:10:24Z kgoldman $ */
/* */
/* (c) Copyright IBM Corporation 2006, 2010. */
/* */
/* All rights reserved. */
/* */
/* Redistribution and use in source and binary forms, with or without */
/* modification, are permitted provided that the following conditions are */
/* met: */
/* */
/* Redistributions of source code must retain the above copyright notice, */
/* this list of conditions and the following disclaimer. */
/* */
/* Redistributions in binary form must reproduce the above copyright */
/* notice, this list of conditions and the following disclaimer in the */
/* documentation and/or other materials provided with the distribution. */
/* */
/* Neither the names of the IBM Corporation nor the names of its */
/* contributors may be used to endorse or promote products derived from */
/* this software without specific prior written permission. */
/* */
/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */
/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
/* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */
/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */
/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */
/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
/********************************************************************************/
#include <stdio.h>
#include "tpm_debug.h"
#undef printf
#if 0
int swallow_rc = 0;
int tpm_swallow_printf_args(const char *format, ...)
{
format = format; /* to silence compiler */
return 0;
}
#else
void TPM_PrintFourLimit(const char *string,
const unsigned char *buff, size_t buflen)
{
if (buff != NULL) {
switch (buflen) {
case 0:
TPMLIB_LogPrintf("%s (no data)\n", string);
break;
case 1:
TPMLIB_LogPrintf("%s %02x\n",
string,
buff[0]);
break;
case 2:
TPMLIB_LogPrintf("%s %02x %02x\n",
string,
buff[0],
buff[1]);
break;
case 3:
TPMLIB_LogPrintf("%s %02x %02x %02x\n",
string,
buff[0],
buff[1],
buff[2]);
break;
default:
TPMLIB_LogPrintf("%s %02x %02x %02x %02x\n",
string,
buff[0],
buff[1],
buff[2],
buff[3]);
}
}
else {
TPMLIB_LogPrintf("%s null\n", string);
}
return;
}
/* TPM_PrintFour() prints a prefix plus 4 bytes of a buffer */
void TPM_PrintFour(const char *string, const unsigned char* buff)
{
TPM_PrintFourLimit(string, buff, 4);
}
#endif
/* TPM_PrintAll() prints 'string', the length, and then the entire byte array
*/
void TPM_PrintAll(const char *string, const unsigned char* buff, uint32_t length)
{
uint32_t i;
int indent;
if (buff != NULL) {
indent = TPMLIB_LogPrintf("%s length %u\n", string, length);
if (indent < 0)
return;
for (i = 0 ; i < length ; i++) {
if (i && !( i % 16 ))
TPMLIB_LogPrintfA(0, "\n");
if (!(i % 16))
TPMLIB_LogPrintf(" %.2X ", buff[i]);
else
TPMLIB_LogPrintfA(0, "%.2X ", buff[i]);
}
TPMLIB_LogPrintfA(0, "\n");
} else {
TPMLIB_LogPrintf("%s null\n", string);
}
return;
}