More users will be added in an upcoming commit.
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
#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);
}
return ok;
}
+#ifdef _WIN32
+\f
+/* 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
uint64_t bitwise_get(const void *src, unsigned int src_len,
unsigned int src_ofs, unsigned int n_bits);
+#ifdef _WIN32
+\f
+char *ovs_lasterror_to_string(void);
+#endif
+
#ifdef __cplusplus
}
#endif