More users will be added in an upcoming commit. Signed-off-by: Gurucharan Shetty <gshe...@nicira.com> --- lib/entropy.c | 12 +----------- lib/util.c | 16 ++++++++++++++++ lib/util.h | 5 +++++ 3 files changed, 22 insertions(+), 11 deletions(-)
diff --git a/lib/entropy.c b/lib/entropy.c index fd73566..53f7e72 100644 --- a/lib/entropy.c +++ b/lib/entropy.c @@ -56,22 +56,12 @@ get_entropy(void *buffer, size_t n) #else int error = 0; HCRYPTPROV crypt_prov = 0; - LPVOID msg_buf; CryptAcquireContext(&crypt_prov, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT); if (!CryptGenRandom(crypt_prov, n, buffer)) { + char *msg_buf = ovs_lasterror_to_string(); error = EINVAL; - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER - | FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - GetLastError(), - 0, - (LPTSTR)&msg_buf, - 0, - NULL - ); VLOG_ERR("CryptGenRandom: read error (%s)", msg_buf); LocalFree(msg_buf); } diff --git a/lib/util.c b/lib/util.c index 0ebf085..87cc112 100644 --- a/lib/util.c +++ b/lib/util.c @@ -1649,3 +1649,19 @@ exit: return ok; } +#ifdef _WIN32 + +/* Calls FormatMessage() with GetLastError() as an argument. Returns + * pointer to a buffer that receives the null-terminated string that specifies + * the formatted message and that has to be freed by the caller with + * LocalFree(). */ +char * +ovs_lasterror_to_string(void) +{ + char *buffer; + FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), 0, + (char *)&buffer, 0, NULL); + return buffer; +} +#endif diff --git a/lib/util.h b/lib/util.h index 8886a54..2e3d1da 100644 --- a/lib/util.h +++ b/lib/util.h @@ -490,6 +490,11 @@ void bitwise_put(uint64_t value, uint64_t bitwise_get(const void *src, unsigned int src_len, unsigned int src_ofs, unsigned int n_bits); +#ifdef _WIN32 + +char *ovs_lasterror_to_string(void); +#endif + #ifdef __cplusplus } #endif -- 1.7.9.5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev