This patch adds a suite of tests for OEMCrypto that verifying buffer overflow and off-by-one errors. The reference code has also been updated to pass these tests. The ODK library and the OEMCrypto API have not changed since the release of version 16.4.
65 lines
2.2 KiB
C++
65 lines
2.2 KiB
C++
// Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary
|
|
// source code may only be used and distributed under the Widevine License
|
|
// Agreement.
|
|
//
|
|
// Log - Platform independent interface for a Logging class
|
|
//
|
|
#ifndef WVCDM_UTIL_LOG_H_
|
|
#define WVCDM_UTIL_LOG_H_
|
|
|
|
#include "util_common.h"
|
|
|
|
namespace wvcdm {
|
|
|
|
// Simple logging class. The implementation is platform dependent.
|
|
|
|
typedef enum {
|
|
// This log level should only be used for |g_cutoff|, in order to silence all
|
|
// logging. It should never be passed to |Log()| as a log level.
|
|
LOG_SILENT = -1,
|
|
|
|
LOG_ERROR = 0,
|
|
LOG_WARN = 1,
|
|
LOG_INFO = 2,
|
|
LOG_DEBUG = 3,
|
|
LOG_VERBOSE = 4,
|
|
} LogPriority;
|
|
|
|
extern LogPriority g_cutoff;
|
|
|
|
// Enable/disable verbose logging (LOGV).
|
|
// This function is supplied for cases where the system layer does not
|
|
// initialize logging. This is also needed to initialize logging in
|
|
// unit tests.
|
|
CORE_UTIL_EXPORT void InitLogging();
|
|
|
|
// Only enable format specifier warnings on LP64 systems. There is
|
|
// no easy portable method to handle format specifiers for int64_t.
|
|
#if (defined(__GNUC__) || defined(__clang__)) && defined(__LP64__)
|
|
[[gnu::format(printf, 5, 6)]] CORE_UTIL_EXPORT void Log(const char* file,
|
|
const char* function,
|
|
int line,
|
|
LogPriority level,
|
|
const char* fmt, ...);
|
|
#else
|
|
CORE_UTIL_EXPORT void Log(const char* file, const char* function, int line,
|
|
LogPriority level, const char* fmt, ...);
|
|
#endif
|
|
|
|
// Log APIs
|
|
#ifndef LOGE
|
|
# define LOGE(...) \
|
|
Log(__FILE__, __func__, __LINE__, wvcdm::LOG_ERROR, __VA_ARGS__)
|
|
# define LOGW(...) \
|
|
Log(__FILE__, __func__, __LINE__, wvcdm::LOG_WARN, __VA_ARGS__)
|
|
# define LOGI(...) \
|
|
Log(__FILE__, __func__, __LINE__, wvcdm::LOG_INFO, __VA_ARGS__)
|
|
# define LOGD(...) \
|
|
Log(__FILE__, __func__, __LINE__, wvcdm::LOG_DEBUG, __VA_ARGS__)
|
|
# define LOGV(...) \
|
|
Log(__FILE__, __func__, __LINE__, wvcdm::LOG_VERBOSE, __VA_ARGS__)
|
|
#endif
|
|
} // namespace wvcdm
|
|
|
|
#endif // WVCDM_UTIL_LOG_H_
|