~mdw
/
sgt
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add context help to a couple of message boxes. Unfortunately the ones
[sgt/putty]
/
misc.c
diff --git
a/misc.c
b/misc.c
index
59e91f2
..
fea96a9
100644
(file)
--- a/
misc.c
+++ b/
misc.c
@@
-5,6
+5,7
@@
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
+#include <limits.h>
#include <ctype.h>
#include <assert.h>
#include "putty.h"
#include <ctype.h>
#include <assert.h>
#include "putty.h"
@@
-388,14
+389,21
@@
void mlog(char *file, int line)
}
#endif
}
#endif
-void *safemalloc(size_t size)
+void *safemalloc(size_t
n, size_t
size)
{
void *p;
{
void *p;
+
+ if (n > INT_MAX / size) {
+ p = NULL;
+ } else {
+ size *= n;
#ifdef MINEFIELD
#ifdef MINEFIELD
- p = minefield_c_malloc(size);
+
p = minefield_c_malloc(size);
#else
#else
- p = malloc(size);
+
p = malloc(size);
#endif
#endif
+ }
+
if (!p) {
char str[200];
#ifdef MALLOC_LOG
if (!p) {
char str[200];
#ifdef MALLOC_LOG
@@
-415,22
+423,29
@@
void *safemalloc(size_t size)
return p;
}
return p;
}
-void *saferealloc(void *ptr, size_t size)
+void *saferealloc(void *ptr, size_t
n, size_t
size)
{
void *p;
{
void *p;
- if (!ptr) {
+
+ if (n > INT_MAX / size) {
+ p = NULL;
+ } else {
+ size *= n;
+ if (!ptr) {
#ifdef MINEFIELD
#ifdef MINEFIELD
- p = minefield_c_malloc(size);
+
p = minefield_c_malloc(size);
#else
#else
- p = malloc(size);
+
p = malloc(size);
#endif
#endif
- } else {
+
} else {
#ifdef MINEFIELD
#ifdef MINEFIELD
- p = minefield_c_realloc(ptr, size);
+
p = minefield_c_realloc(ptr, size);
#else
#else
- p = realloc(ptr, size);
+
p = realloc(ptr, size);
#endif
#endif
+ }
}
}
+
if (!p) {
char str[200];
#ifdef MALLOC_LOG
if (!p) {
char str[200];
#ifdef MALLOC_LOG