is_rd_string_name() reads type_name[1..3] unconditionally, so calling it with a short string (e.g. "C" or "") is undefined behavior (out-of-bounds read). Since this code path is now expected to throw on invalid inputs (for fuzzing/error handling), add a length guard before calling is_rd_string_name() in rd_type_create_from_name().
is_rd_string_name() reads type_name[1..3] unconditionally, so calling it with a short string (e.g. "C" or "") is undefined behavior (out-of-bounds read). Since this code path is now expected to throw on invalid inputs (for fuzzing/error handling), add a length guard before calling is_rd_string_name() in rd_type_create_from_name().