projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use safestack.h exclusively internally.
[openssl.git]
/
crypto
/
mem.c
diff --git
a/crypto/mem.c
b/crypto/mem.c
index 0584814f73286f1bd1c06d9f9adc3c5b49aadc8f..c171ae486c20953832e77d35ec7b041c23ae1952 100644
(file)
--- a/
crypto/mem.c
+++ b/
crypto/mem.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright 1995-201
6
The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-201
7
The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@
-7,12
+7,13
@@
* https://www.openssl.org/source/license.html
*/
* https://www.openssl.org/source/license.html
*/
+#include "e_os.h"
+#include "internal/cryptlib.h"
+#include "internal/cryptlib_int.h"
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <openssl/crypto.h>
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <openssl/crypto.h>
-#include "internal/cryptlib.h"
-#include "internal/cryptlib_int.h"
#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
# include <execinfo.h>
#endif
#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
# include <execinfo.h>
#endif
@@
-111,6
+112,14
@@
static void parseit(void)
md_failstring = semi;
}
md_failstring = semi;
}
+/*
+ * Windows doesn't have random(), but it has rand()
+ * Some rand() implementations aren't good, but we're not
+ * dealing with secure randomness here.
+ */
+#ifdef _WIN32
+# define random() rand()
+#endif
/*
* See if the current malloc should fail.
*/
/*
* See if the current malloc should fail.
*/
@@
-118,13
+127,16
@@
static int shouldfail(void)
{
int roll = (int)(random() % 100);
int shoulditfail = roll < md_fail_percent;
{
int roll = (int)(random() % 100);
int shoulditfail = roll < md_fail_percent;
+ int len;
char buff[80];
if (md_tracefd > 0) {
BIO_snprintf(buff, sizeof(buff),
"%c C%ld %%%d R%d\n",
shoulditfail ? '-' : '+', md_count, md_fail_percent, roll);
char buff[80];
if (md_tracefd > 0) {
BIO_snprintf(buff, sizeof(buff),
"%c C%ld %%%d R%d\n",
shoulditfail ? '-' : '+', md_count, md_fail_percent, roll);
- write(md_tracefd, buff, strlen(buff));
+ len = strlen(buff);
+ if (write(md_tracefd, buff, len) != len)
+ perror("shouldfail write failed");
#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
if (shoulditfail) {
void *addrs[30];
#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
if (shoulditfail) {
void *addrs[30];
@@
-176,7
+188,7
@@
void *CRYPTO_malloc(size_t num, const char *file, int line)
ret = malloc(num);
}
#else
ret = malloc(num);
}
#else
-
osslargused(file); osslargused
(line);
+
(void)(file); (void)
(line);
ret = malloc(num);
#endif
ret = malloc(num);
#endif
@@
-217,7
+229,7
@@
void *CRYPTO_realloc(void *str, size_t num, const char *file, int line)
return ret;
}
#else
return ret;
}
#else
-
osslargused(file); osslargused
(line);
+
(void)(file); (void)
(line);
#endif
return realloc(str, num);
#endif
return realloc(str, num);