diff options
Diffstat (limited to 'ext/socket/socket.c')
-rw-r--r-- | ext/socket/socket.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/ext/socket/socket.c b/ext/socket/socket.c index cbd3dd86ce..0e7b539588 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -476,6 +476,9 @@ s_recvfrom(sock, argc, argv, from) retry: rb_str_locktmp(str); rb_thread_wait_fd(fd); + if (buflen != RSTRING(str)->len) { + rb_raise(rb_eRuntimeError, "buffer modified"); + } TRAP_BEG; slen = recvfrom(fd, RSTRING(str)->ptr, buflen, flags, (struct sockaddr*)buf, &alen); TRAP_END; |