--- freehdl-0.0.8.orig/kernel/sigacl_list.cc 2002-01-02 16:20:57.000000000 +0200 +++ freehdl-0.0.8/kernel/sigacl_list.cc 2020-03-30 00:16:36.155392220 +0300 @@ -4,6 +4,7 @@ sigacl_list::sigacl_list(int size) { count = 0; list = new _items[size]; + list_size = size; } @@ -18,8 +19,15 @@ void sigacl_list::add(sig_info_base *s, acl *a) { + if (count >= list_size) + { + std::cout << "WARNING: sigacl_list::add()" << "\n" << "list index greater than list length\n" ; + return; + } + list[count].signal = s; - list[count].aclp = a->clone(); + if (a != NULL) list[count].aclp = a->clone(); + else list[count].aclp = NULL; count++; } --- freehdl-0.0.8.orig/freehdl/kernel-sigacl-list.hh 2000-02-03 16:50:59.000000000 +0200 +++ freehdl-0.0.8/freehdl/kernel-sigacl-list.hh 2020-03-30 00:16:34.923370868 +0300 @@ -20,6 +20,9 @@ sigacl_list(int size); ~sigacl_list(); void add(sig_info_base *s, acl *a = NULL); + +private: + int list_size; }; --- freehdl-0.0.8.orig/kernel/dump.cc 2006-07-19 22:35:05.000000000 +0300 +++ freehdl-0.0.8/kernel/dump.cc 2020-03-30 00:16:36.243393745 +0300 @@ -24,6 +24,7 @@ dump_buffer.clean(); dump_buffer << dumped_name; + if (a != NULL) if (!a->end()) for (int i = 0; i < a->get_size(); i++) dump_buffer << "(" << a->get(i) << ")"; @@ -32,6 +33,7 @@ reader_pointer = s->reader_pointer; type = s->type; + if (a != NULL) if (! a->end()) { reader_pointer = s->type->element(s->reader_pointer, a); type = s->type->get_info(s->reader_pointer, a);