@@ -285,11 +285,12 @@ static int hawkbit_settings_set(const char *name, size_t len, settings_read_cb r
285285
286286#ifdef CONFIG_HAWKBIT_SET_SETTINGS_RUNTIME
287287 if (settings_name_steq (name , "server_addr" , & next ) && !next ) {
288- if (len != sizeof (hb_cfg .server_addr )) {
288+ rc = read_cb (cb_arg , & hb_cfg .server_addr , MIN (len , sizeof (hb_cfg .server_addr )));
289+ if (strnlen (hb_cfg .server_addr , sizeof (hb_cfg .server_addr )) ==
290+ sizeof (hb_cfg .server_addr )) {
291+ memset (hb_cfg .server_addr , 0 , sizeof (hb_cfg .server_addr ));
289292 return - EINVAL ;
290293 }
291-
292- rc = read_cb (cb_arg , & hb_cfg .server_addr , sizeof (hb_cfg .server_addr ));
293294 LOG_DBG ("<%s> = %s" , "hawkbit/server_addr" , hb_cfg .server_addr );
294295 if (rc >= 0 ) {
295296 return 0 ;
@@ -358,7 +359,7 @@ static int hawkbit_settings_export(int (*cb)(const char *name, const void *value
358359 LOG_DBG ("export hawkbit settings" );
359360 (void )cb ("hawkbit/action_id" , & hb_cfg .action_id , sizeof (hb_cfg .action_id ));
360361#ifdef CONFIG_HAWKBIT_SET_SETTINGS_RUNTIME
361- (void )cb ("hawkbit/server_addr" , & hb_cfg .server_addr , sizeof (hb_cfg .server_addr ));
362+ (void )cb ("hawkbit/server_addr" , & hb_cfg .server_addr , strlen (hb_cfg .server_addr ) + 1 );
362363 uint16_t hawkbit_port = atoi (hb_cfg .server_port );
363364 (void )cb ("hawkbit/server_port" , & hawkbit_port , sizeof (hawkbit_port ));
364365#ifndef CONFIG_HAWKBIT_DDI_NO_SECURITY
0 commit comments