summaryrefslogtreecommitdiff
path: root/sprintf.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-09-09 13:15:16 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-09-09 13:15:16 +0000
commit2ca6c3a16a4b83f9ff809e95778a5e9c330b6384 (patch)
treef6a4292bbcfc5ff50f08112477081a6401f7265a /sprintf.c
parentad5b3bac0fc0de92edc42b21ec922e3f19a2a4e7 (diff)
* eval.c (rb_call0): prohibit calling tainted method (>2) when
$SAFE == 0. * sprintf.c (rb_f_sprintf): warn "too many argument" on verbose mode (-v/-w); backported from 1.9. [ruby-dev:26963] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9108 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'sprintf.c')
-rw-r--r--sprintf.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sprintf.c b/sprintf.c
index acfbf64d54..9f4d8e404c 100644
--- a/sprintf.c
+++ b/sprintf.c
@@ -771,11 +771,12 @@ rb_f_sprintf(argc, argv)
}
sprint_exit:
- /* XXX - We cannot validiate the number of arguments because
- * the format string may contain `n$'-style argument selector.
+ /* XXX - We cannot validiate the number of arguments if (digit)$ style used.
*/
- if (RTEST(ruby_debug) && posarg >= 0 && nextarg < argc) {
- rb_raise(rb_eArgError, "too many arguments for format string");
+ if (posarg >= 0 && nextarg < argc) {
+ const char *mesg = "too many arguments for format string";
+ if (RTEST(ruby_debug)) rb_raise(rb_eArgError, mesg);
+ if (RTEST(ruby_verbose)) rb_warn(mesg);
}
rb_str_resize(result, blen);