5884052.diff   [plain text]


--- string.old.c	2008-04-22 11:19:38.000000000 -0700
+++ string.c	2008-04-23 11:27:23.000000000 -0700
@@ -780,6 +782,9 @@
 	capa = RSTRING(str)->aux.capa;
     }
     len = RSTRING(str)->len+RSTRING(str2)->len;
+    if (len < 0 || (capa+1) > LONG_MAX / 2) {
+    rb_raise(rb_eArgError, "string sizes too big");
+    }
     if (capa <= len) {
 	while (len > capa) {
 	    capa = (capa + 1) * 2;