Commit graph

68 commits

Author SHA1 Message Date
Jeremy Evans
ffd0820ab3 Deprecate taint/trust and related methods, and make the methods no-ops
This removes the related tests, and puts the related specs behind
version guards.  This affects all code in lib, including some
libraries that may want to support older versions of Ruby.
2019-11-18 01:00:25 +02:00
nobu
027cf467a4 pack.c: refine warning
* pack.c (unknown_directive): refine warning message at unknown
  directive in unpack too, and quote unprintable characters.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65748 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-16 00:25:54 +00:00
nagachika
4989bad438 infect taint flag on Array#pack and String#unpack
with the directives "B", "b", "H" and "h".

	* pack.c (pack_pack, pack_unpack_internal): infect taint flag.

	* test/ruby/test_pack.rb: add test for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65125 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-17 15:03:10 +00:00
nobu
d02b7bd864 pack.c: fix underflow
* pack.c (pack_unpack_internal): get rid of underflow.
  https://hackerone.com/reports/298246

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62992 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-28 10:12:17 +00:00
shyouhei
91715ee53b long long is a C99ism
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61550 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-02 06:41:47 +00:00
shyouhei
b57915eddc Add FrozenError as a subclass of RuntimeError
FrozenError will be used instead of RuntimeError for exceptions
raised when there is an attempt to modify a frozen object. The
reason for this change is to differentiate exceptions related
to frozen objects from generic exceptions such as those generated
by Kernel#raise without an exception class.

From: Jeremy Evans <code@jeremyevans.net>
Signed-off-by: Urabe Shyouhei <shyouhei@ruby-lang.org>


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61131 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-12 00:46:34 +00:00
nobu
d35b5a4726 pack.c: unpack "M" may be ASCII only
* pack.c (pack_unpack_internal): set ASCII only properly on "M",
  may be ASCII only.  [ruby-core:83055] [Bug #13949]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60059 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-29 08:00:47 +00:00
rhe
c326ab8c74 test/ruby/test_pack.rb: fix test case added by r57187
The test case for String#unpack added by r57187 is not properly testing
because the String will be filled after the block invocation.
[ruby-core:78841] [Bug #13075]

Thanks to nagachika for pointing this out:

  http://d.hatena.ne.jp/nagachika/20161226/ruby_trunk_changes_57184_57194#r57187

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-29 16:16:32 +00:00
rhe
b65b41861f pack.c: avoid returning uninitialized String
Fix unpacking with 'b', 'B', 'h' and 'H' format. Do not return an
uninitialized String to Ruby before filling the content bytes.
Fixes r11175 ("pack.c (pack_unpack): execute block if given with
unpacked value instead of creating an array", 2006-10-15).
[ruby-core:78841] [Bug #13075]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57187 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-26 06:32:00 +00:00
naruse
306f43acfe String#unpack1 [Feature #12752]
Returns the first value of String#unpack.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-01 14:18:32 +00:00
usa
b6e137e93c Remove offset: from Array#pack
* pack.c (pack_pack): can use `@` instead of `offset:`.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-01 13:20:47 +00:00
usa
0dd9c302d9 Supports buffer and offset in Array#pack
* pack.c (pack_pack): Supports `buffer` and `offset` in `Array#pack`.
  [Feature #12754] [ruby-dev:49798]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-01 13:08:20 +00:00
nobu
404bf57aaf assertions.rb: set default internal encoding
* test/lib/test/unit/assertions.rb (assert_raise_with_message):
  set default internal encoding to the excpected message, which
  affects String#inspect in messages.

* test/lib/test/unit/assertions.rb (assert_warning): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-09 01:25:11 +00:00
naruse
3e92b635fb Add frozen_string_literal: false for all files
When you change this to true, you may need to add more tests.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16 05:07:31 +00:00
nobu
d10d5a974d pack.c: check index range
* pack.c (pack_pack): always check index range against the
  receiver array length, which can be shortened by elements
  conversion.  reported by Marcin 'Icewall' Noga of Cisco Talos.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53080 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 09:33:40 +00:00
usa
dc0d502b71 * pack.c (pack_{un,}pack): new template character j and J, pointer
with signed and unsigned integers.

* NEWS: mention bout this featre.
  [Feature #11215] [ruby-dev:49015]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-06-12 12:22:36 +00:00
nobu
1f53145dd4 pack.c: escape and encoding
* pack.c (pack_pack): escape unprintable characters and preserve
  the encoding of warning message.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-06 14:58:43 +00:00
nobu
fa892d27af test_pack.rb: test_invalid_warning
* test/ruby/test_pack.rb (test_invalid_warning): add test for
  invalid directive warnings.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-06 14:55:44 +00:00
akr
108627d911 * pack.c (pack_unpack): Add casts for char references for 'u'.
Fix line ending recognition algorithm.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-10-17 14:28:34 +00:00
nobu
8a608d2b1f pack.c: fix buffer overrun
* pack.c (encodes): fix buffer overrun by tail_lf.  Thanks to
  Mamoru Tasaka and Tomas Hoger.  [ruby-core:63604] [Bug #10019]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46778 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-07-11 01:09:05 +00:00
nobu
4b146b2533 pack.c: use ivar for associated objects
* pack.c (str_associate, str_associated): keep associated objects
  in an instance variables, instead of in the internal structure.
* string.c (rb_str_associate, rb_str_associated): deprecate.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44804 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-04 05:07:21 +00:00
nobu
bebc52a4a7 string.c: enable capacity when setting capa
* string.c (rb_str_modify_expand): enable capacity and disable
  assocation with packed objects when setting capa, so that
  pack("p") string fails to unpack properly after modified.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44803 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-04 03:55:32 +00:00
nobu
36e09fc28b test/ruby: better assertions
* test/ruby: use better assertions instead of mere assert.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44177 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-12-13 14:20:53 +00:00
shugo
1f828497d1 * safe.c (rb_set_safe_level, safe_setter): raise an ArgumentError
when $SAFE is set to 4.  $SAFE=4 is now obsolete.
  [ruby-core:55222] [Feature #8468]

* object.c (rb_obj_untrusted, rb_obj_untrust, rb_obj_trust):
  Kernel#untrusted?, untrust, and trust are now deprecated.
  Their behavior is same as tainted?, taint, and untaint,
  respectively.

* include/ruby/ruby.h (OBJ_UNTRUSTED, OBJ_UNTRUST): OBJ_UNTRUSTED()
  and OBJ_UNTRUST() are aliases of OBJ_TAINTED() and OBJ_TAINT(),
  respectively.

* array.c, class.c, debug.c, dir.c, encoding.c, error.c, eval.c,
  ext/curses/curses.c, ext/dbm/dbm.c, ext/dl/cfunc.c,
  ext/dl/cptr.c, ext/dl/dl.c, ext/etc/etc.c, ext/fiddle/fiddle.c,
  ext/fiddle/pointer.c, ext/gdbm/gdbm.c, ext/readline/readline.c,
  ext/sdbm/init.c, ext/socket/ancdata.c, ext/socket/basicsocket.c,
  ext/socket/socket.c, ext/socket/udpsocket.c,
  ext/stringio/stringio.c, ext/syslog/syslog.c, ext/tk/tcltklib.c,
  ext/win32ole/win32ole.c, file.c, gc.c, hash.c, io.c, iseq.c,
  load.c, marshal.c, object.c, proc.c, process.c, random.c, re.c,
  safe.c, string.c, thread.c, transcode.c, variable.c,
  vm_insnhelper.c, vm_method.c, vm_trace.c: remove code for
  $SAFE=4.

* test/dl/test_dl2.rb, test/erb/test_erb.rb,
  test/readline/test_readline.rb,
  test/readline/test_readline_history.rb, test/ruby/test_alias.rb,
  test/ruby/test_array.rb, test/ruby/test_dir.rb,
  test/ruby/test_encoding.rb, test/ruby/test_env.rb,
  test/ruby/test_eval.rb, test/ruby/test_exception.rb,
  test/ruby/test_file_exhaustive.rb, test/ruby/test_hash.rb,
  test/ruby/test_io.rb, test/ruby/test_method.rb,
  test/ruby/test_module.rb, test/ruby/test_object.rb,
  test/ruby/test_pack.rb, test/ruby/test_rand.rb,
  test/ruby/test_regexp.rb, test/ruby/test_settracefunc.rb,
  test/ruby/test_struct.rb, test/ruby/test_thread.rb,
  test/ruby/test_time.rb: remove tests for $SAFE=4.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41259 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-12 14:20:51 +00:00
naruse
3e2fdaf1dd * pack.c (pack_unpack): output characters even if the input doesn't
have paddings. [Bug #8286]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-18 05:03:00 +00:00
akr
37872dbf2b add a comment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-06 00:10:22 +00:00
akr
694207c737 Add comment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-03 12:36:57 +00:00
akr
583c8e8915 * pack.c: Support Q! and q! for long long.
(natstr): Moved to toplevel.  Add q and Q if there is long long type.
  (endstr): Moved to toplevel.
  (NATINT_PACK): Consider long long.
  (NATINT_LEN_Q): New macro.
  (pack_pack): Support Q! and q!.
  (pack_unpack): Ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40067 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-02 11:28:57 +00:00
naruse
58ef0f06c6 * ruby.c (load_file_internal): set default source encoding as
UTF-8 instead of US-ASCII. [ruby-core:46021] [Feature #6679]

* parse.y (parser_initialize): set default parser encoding as
  UTF-8 instead of US-ASCII.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37485 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-06 00:49:57 +00:00
eregon
b0e40509c3 set encoding to ASCII for appropriate String#unpack modifiers
* pack.c (pack_unpack): set encoding of the
  'H','h','B' and 'B' modifiers to US-ASCII.
* test/ruby/test_pack.rb: tests for the above.
  [ruby-core:47653][Bug #7050]
* test/test_securerandom.rb: tests for SecureRandom.hex
  from tenderlove. [ruby-core:46792][Bug #6799]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-19 13:13:32 +00:00
nobu
7b8e78f747 test_pack.rb: fix assertion
* pack.c (pack_unpack): fix indent.
* test/ruby/test_pack.rb (test_pack_unpack_M): fix assertion.  ignore
  invalid quoted-printable and just skip.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36517 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-24 04:24:20 +00:00
usa
f83a2eee05 * test/ruby/test_pack.rb (test_pack_unpack_M): was redefined
accidentally.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36512 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-24 02:36:15 +00:00
nobu
c0087df044 pack.c: round down too long uuencode width
* pack.c (pack_pack): round down too long uuencode width.  folding
  width in uuencode format cannot be longer than 63 bytes.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-18 14:57:40 +00:00
naruse
3e13081214 Set $VERBOSE=false in case of ruby -w.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35294 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-11 01:15:56 +00:00
drbrain
6ba4bd5858 * pack.c (pack_pack): Warn when an invalid character is found in the
format string when $VERBOSE is true.  [ruby-trunk - Feature #5219]
* pack.c (pack_unpack):  ditto
* test/ruby/test_pack.rb (class TestPack):  Test for warnings on
  invalid format characters.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35292 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-10 22:33:58 +00:00
naruse
b7df3e9f4e * pack.c (pack_unpack): when unpack('M') occurs an illegal byte
sequence, output the "=" character and the following character in
  the decoded data without any transformation.
  [ruby-dev:44875] [Bug #5635]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-11 14:59:42 +00:00
nobu
7f46fadd9d * lib/test/unit.rb (assert_include): add alias.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30853 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-12 14:17:54 +00:00
naruse
2dbf7d11f2 * pack.c (pack_unpack): the resulted string of unpack('M') must have
ASCII-8BIT encoding (and ENC_CODERANGE_VALID). [ruby-core:34482]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-14 05:03:22 +00:00
nobu
8b09bf2a72 * pack.c (PACK_ITEM_ADJUST): return nil not result array and yield
values if block is given.  [ruby-core:33193]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29804 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-15 21:39:39 +00:00
naruse
799f4754c9 Revert r29527. [ruby-dev:42419]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-18 06:33:50 +00:00
naruse
0a8d8b8a68 * pack.c (pack_pack): Add native size option ! to q and Q.
[ruby-dev:42375]

* pack.c (pack_unpack): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-18 04:12:35 +00:00
naruse
ccaf61d5af * pack.c (pack_pack): fix more than one modifiers appear in the
format string. [ruby-core:32793]

* pack.c (pack_unpack): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-15 07:42:21 +00:00
naruse
5825359dd8 * pack.c (pack_pack): support endian modifiers: < and >.
[ruby-dev:42376] Feature #3491

* pack.c (pack_unpack): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-14 13:12:56 +00:00
nobu
921b2d1cfb * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
use more descriptive assertions.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27545 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-29 05:46:04 +00:00
akr
e599c936d8 * pack.c: consider DYNAMIC_ENDIAN. refactored.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-25 14:00:48 +00:00
akr
e53e5edab2 * pack.c (pack_unpack): don't use OFF32 for gcc 4.5.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26753 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-24 15:32:06 +00:00
akr
e8665a6bc2 * pack.c (pack_unpack): call PACK_ITEM_ADJUST for 'Q'.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26705 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-02-18 12:53:31 +00:00
nobu
92e0f99d37 * pack.c (pack_pack): fixed length for odd length string.
[ruby-dev:37283]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20580 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-08 09:31:44 +00:00
yugui
4b983b90c4 * pack.c (pack_pack): 'u0' is not special differently from 'm0'.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20564 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-06 08:55:57 +00:00
nobu
3056933cc0 * test/ruby/test_array.rb (test_pack): use utf-8.
* test/ruby/test_pack.rb (test_pack_U): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-29 09:40:38 +00:00