Merge pull request #13456 from s-hadinger/berry_fix_setmbr

Berry fix possible memory corruption
This commit is contained in:
s-hadinger 2021-10-24 10:37:24 +02:00 committed by GitHub
commit 41bf1714ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 6 additions and 0 deletions

View File

@ -882,28 +882,34 @@ newframe: /* a new call frame */
binstance *obj = var_toobj(a);
bstring *attr = var_tostr(b);
if (!be_instance_setmember(vm, obj, attr, c)) {
reg = vm->reg;
vm_error(vm, "attribute_error",
"class '%s' cannot assign to attribute '%s'",
str(be_instance_name(obj)), str(attr));
}
reg = vm->reg;
dispatch();
}
if (var_isclass(a) && var_isstr(b)) {
bclass *obj = var_toobj(a);
bstring *attr = var_tostr(b);
if (!be_class_setmember(vm, obj, attr, c)) {
reg = vm->reg;
vm_error(vm, "attribute_error",
"class '%s' cannot assign to static attribute '%s'",
str(be_class_name(obj)), str(attr));
}
reg = vm->reg;
dispatch();
}
if (var_ismodule(a) && var_isstr(b)) {
bmodule *obj = var_toobj(a);
bstring *attr = var_tostr(b);
if (be_module_setmember(vm, obj, attr, c)) {
reg = vm->reg;
dispatch();
} else {
reg = vm->reg;
// fall through exception below
}
}