diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-10-01 16:14:59 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-10-01 16:20:22 +0900 |
commit | 15d3b7fe6dd421cc4ff77d106d17b0e9fd1ead45 (patch) | |
tree | a7565787c48b8efa02ae3324c9f3d2a2b2791380 /struct.c | |
parent | 27adf5321eabb588ecf20a0c3879e931a7345151 (diff) |
Fix an out of bound access
Diffstat (limited to 'struct.c')
-rw-r--r-- | struct.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -1793,6 +1793,12 @@ rb_data_initialize_m(int argc, const VALUE *argv, VALUE self) VALUE members = struct_ivar_get(klass, id_members); size_t num_members = RARRAY_LEN(members); + if (argc == 0) { + if (num_members > 0) { + rb_exc_raise(rb_keyword_error_new("missing", members)); + } + return Qnil; + } if (argc > 1 || !RB_TYPE_P(argv[0], T_HASH)) { rb_raise(rb_eArgError, "wrong number of arguments (given %d, expected 0)", argc); } |