summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--thread.c4
2 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 5790f30e0f..54e618969a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Mon Jun 28 21:56:14 2010 Yusuke Endoh <mame@tsg.ne.jp>
+
+ * thread.c (rb_fd_resize, rb_fd_copy): avoid NULL dereference upon
+ failed realloc by using xrealloc instead of not realloc. a patch
+ from Jim Meyering <meyering at redhat.com> in [ruby-core:30920]
+ [Bug #3489]
+
Mon Jun 28 20:32:33 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
* test/win32ole/test_win32ole_method.rb (test_offset_vtbl): check
diff --git a/thread.c b/thread.c
index c897edbed9..be580ac98b 100644
--- a/thread.c
+++ b/thread.c
@@ -2285,7 +2285,7 @@ rb_fd_resize(int n, rb_fdset_t *fds)
if (o < sizeof(fd_set)) o = sizeof(fd_set);
if (m > o) {
- fds->fdset = realloc(fds->fdset, m);
+ fds->fdset = xrealloc(fds->fdset, m);
memset((char *)fds->fdset + o, 0, m - o);
}
if (n >= fds->maxfd) fds->maxfd = n + 1;
@@ -2319,7 +2319,7 @@ rb_fd_copy(rb_fdset_t *dst, const fd_set *src, int max)
if (size < sizeof(fd_set)) size = sizeof(fd_set);
dst->maxfd = max;
- dst->fdset = realloc(dst->fdset, size);
+ dst->fdset = xrealloc(dst->fdset, size);
memcpy(dst->fdset, src, size);
}