ソースを参照

CArray: add some bound check to blit

for #770
Yuxiao Mao 4 ヶ月 前
コミット
4edaf4b7c8
1 ファイル変更4 行追加0 行削除
  1. 4 0
      src/std/array.c

+ 4 - 0
src/std/array.c

@@ -79,6 +79,10 @@ HL_PRIM void *hl_alloc_carray( hl_type *at, int size ) {
 }
 
 HL_PRIM void hl_carray_blit( void *dst, hl_type *at, int dpos, void *src, int spos, int len ) {
+	if( at->kind != HOBJ && at->kind != HSTRUCT )
+		hl_error("Invalid array type");
+	if( dpos < 0 || spos < 0 || len < 0 )
+		hl_error("Invalid array size or length");
 	hl_runtime_obj *rt = at->obj->rt;
 	if( rt == NULL || rt->methods == NULL ) rt = hl_get_obj_proto(at);
 	int size = rt->size;