prom: return error when http_static not loaded 15/42915/1
authorMatus Fabian <[email protected]>
Thu, 1 May 2025 09:04:35 +0000 (05:04 -0400)
committerMatus Fabian <[email protected]>
Thu, 1 May 2025 09:04:35 +0000 (05:04 -0400)
return error if vlib_get_plugin_symbol return 0 when
http_static_plugin.so is not loaded instead of crashing

Type: fix

Change-Id: Ic281c559c72d3c9f34bc9daae3aa55f0bb711a8a
Signed-off-by: Matus Fabian <[email protected]>
src/plugins/prom/prom.c
src/plugins/prom/prom.h
src/plugins/prom/prom_cli.c

index 475e98b..0ddc96f 100644 (file)
@@ -382,13 +382,16 @@ prom_stat_segment_client_init (void)
     stat_segment_adjust (scm, (void *) scm->shared_header->directory_vector);
 }
 
-void
+clib_error_t *
 prom_enable (vlib_main_t *vm)
 {
   prom_main_t *pm = &prom_main;
 
   pm->register_url = vlib_get_plugin_symbol ("http_static_plugin.so",
                                             "hss_register_url_handler");
+  if (pm->register_url == 0)
+    return clib_error_return (0, "http_static_plugin.so not loaded");
+
   pm->send_data =
     vlib_get_plugin_symbol ("http_static_plugin.so", "hss_session_send_data");
   pm->register_url (prom_stats_dump, "stats.prom", HTTP_REQ_GET);
@@ -400,6 +403,8 @@ prom_enable (vlib_main_t *vm)
 
   prom_scraper_process_enable (vm);
   prom_stat_segment_client_init ();
+
+  return 0;
 }
 
 static clib_error_t *
index 898e4c2..a06302c 100644 (file)
@@ -44,7 +44,7 @@ typedef enum prom_process_evt_codes_
   PROM_SCRAPER_EVT_RUN,
 } prom_process_evt_codes_t;
 
-void prom_enable (vlib_main_t *vm);
+clib_error_t *prom_enable (vlib_main_t *vm);
 prom_main_t *prom_get_main (void);
 
 void prom_stat_patterns_set (u8 **patterns);
index 705e54a..09407d4 100644 (file)
@@ -131,7 +131,7 @@ prom_command_fn (vlib_main_t *vm, unformat_input_t *input,
 no_input:
 
   if (is_enable && !pm->is_enabled)
-    prom_enable (vm);
+    return prom_enable (vm);
 
   return 0;
 }