symbol.c (sym_intern): check NUL before calling strlen()

To avoid accidental buffer overrun if a string without NUL termination
is provided.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2023-05-02 09:45:47 +09:00
parent 19b2c1c73d
commit 077d8ad514
+1 -1
View File
@@ -207,7 +207,7 @@ sym_intern(mrb_state *mrb, const char *name, size_t len, mrb_bool lit)
mrb->symcapa = symcapa;
}
sym_flags_clear(mrb, sym);
if ((lit || mrb_ro_data_p(name)) && strlen(name) == len) {
if ((lit || mrb_ro_data_p(name)) && name[len] == 0 && strlen(name) == len) {
sym_lit_set(mrb, sym);
mrb->symtbl[sym] = name;
}