tcmu-runner: Make g_runner_handlers an array of pointers
tcmu-runner: Make g_runner_handlers an array of pointers

on_check_config receives a user_data pointer, which points to some
element into g_runner_handlers, the array of struct tcmur_handler. This
is not a problem now because the array never resizes (reallocates) once
built, but that is a very fragile assumption and is prune to memory
corruption in the far future.

Instead, save the pointers. All existing callers of
tcmur_register_handler are passing addresses of a static global
variable, so there is no use-after-free risk.  Future callers must be
more careful of the life cycle of handler because they are no longer
copied by value.

Signed-off-by: Fam Zheng <df9fd617995bad07eac70e27aa3fe5069270e3bd@redhat.com>

open-iscsi/tcmu-runner,lxbsz/tcmu-runner,open-iscsi/tcmu-runner,superlibj/tcmu-runner,liuy/tcmu-runner,agrover/tcmu-runner,yasker/tcmu-runner,JefferyHu/tcmu-runner