@@ -2366,14 +2366,20 @@ config_insert_preferences (config_t config,
23662366 /* NVT preference */
23672367 /* OID:PrefID:PrefType:PrefName value */
23682368 sql ("INSERT INTO config_preferences"
2369- " (config, type, name, value)"
2370- " VALUES (%llu, 'PLUGINS_PREFS', '%s:%s:%s:%s', '%s');" ,
2369+ " (config, type, name, value, pref_nvt, pref_id, pref_type,"
2370+ " pref_name)"
2371+ " VALUES (%llu, 'PLUGINS_PREFS', '%s:%s:%s:%s', '%s', '%s',"
2372+ " %i, '%s', '%s');" ,
23712373 config ,
23722374 quoted_nvt_oid ,
23732375 quoted_preference_id ,
23742376 quoted_type ,
23752377 quoted_preference_name ,
2376- quoted_value );
2378+ quoted_value ,
2379+ quoted_nvt_oid ,
2380+ atoi (preference -> id ),
2381+ quoted_type ,
2382+ quoted_preference_name );
23772383
23782384 g_free (quoted_nvt_oid );
23792385 g_free (quoted_preference_name );
@@ -2861,8 +2867,10 @@ copy_config (const char* name, const char* comment, const char *config_id,
28612867 sql ("UPDATE configs SET predefined = 0 WHERE id = %llu;" , new );
28622868
28632869 sql ("INSERT INTO config_preferences (config, type, name, value,"
2864- " default_value)"
2865- " SELECT %llu, type, name, value, default_value"
2870+ " default_value, pref_nvt, pref_id,"
2871+ " pref_type, pref_name)"
2872+ " SELECT %llu, type, name, value, default_value, pref_nvt, pref_id,"
2873+ " pref_type, pref_name"
28662874 " FROM config_preferences"
28672875 " WHERE config = %llu;" , new , old );
28682876
@@ -3041,8 +3049,10 @@ delete_config (const char *config_id, int ultimate)
30413049 trash_config = sql_last_insert_id ();
30423050
30433051 sql ("INSERT INTO config_preferences_trash"
3044- " (config, type, name, value, default_value)"
3045- " SELECT %llu, type, name, value, default_value"
3052+ " (config, type, name, value, default_value, pref_nvt, pref_id,"
3053+ " pref_type, pref_name)"
3054+ " SELECT %llu, type, name, value, default_value, pref_nvt, pref_id,"
3055+ " pref_type, pref_name"
30463056 " FROM config_preferences WHERE config = %llu;" ,
30473057 trash_config ,
30483058 config );
@@ -3515,8 +3525,12 @@ modify_config_preference (config_t config, const char* nvt,
35153525 const char * name , const char * value_64 )
35163526{
35173527 gchar * quoted_name , * quoted_value , * value , * * splits ;
3528+ gchar * quoted_pref_nvt , * quoted_pref_type , * quoted_pref_name ;
3529+ int pref_id ;
35183530
35193531 quoted_name = sql_quote (name );
3532+ quoted_pref_nvt = quoted_pref_type = quoted_pref_name = NULL ;
3533+ pref_id = 0 ;
35203534
35213535 if (strlen (value_64 ))
35223536 {
@@ -3543,6 +3557,11 @@ modify_config_preference (config_t config, const char* nvt,
35433557 return 2 ;
35443558 }
35453559
3560+ quoted_pref_nvt = sql_quote (splits [0 ]);
3561+ pref_id = atoi (splits [1 ]);
3562+ quoted_pref_type = sql_quote (splits [2 ]);
3563+ quoted_pref_name = sql_quote (splits [3 ]);
3564+
35463565 /* A radio. Put the new value on the front of the list of options. */
35473566
35483567 old_value = sql_string ("SELECT value FROM config_preferences"
@@ -3605,9 +3624,17 @@ modify_config_preference (config_t config, const char* nvt,
36053624 nvt ? "= 'PLUGINS_PREFS'" : "= 'SERVER_PREFS'" ,
36063625 quoted_name );
36073626 sql ("INSERT INTO config_preferences"
3608- " (config, type, name, value) VALUES (%llu, %s, '%s', '%s');" ,
3627+ " (config, type, name, value, pref_nvt, pref_id, pref_type, pref_name)"
3628+ " VALUES (%llu, %s, '%s', '%s', '%s', %i, '%s', '%s');" ,
36093629 config , nvt ? "'PLUGINS_PREFS'" : "'SERVER_PREFS'" , quoted_name ,
3610- quoted_value );
3630+ quoted_value , quoted_pref_nvt , pref_id , quoted_pref_type ,
3631+ quoted_pref_name );
3632+
3633+ g_free (quoted_value );
3634+ g_free (quoted_name );
3635+ g_free (quoted_pref_nvt );
3636+ g_free (quoted_pref_type );
3637+ g_free (quoted_pref_name );
36113638
36123639 return 0 ;
36133640}
@@ -4159,56 +4186,6 @@ DEF_ACCESS (config_timeout_iterator_nvt_name, 2);
41594186 */
41604187DEF_ACCESS (config_timeout_iterator_value , 3 );
41614188
4162- /**
4163- * @brief Update or optionally insert a NVT preference.
4164- *
4165- * @param[in] config_id UUID of the config to set the preference in
4166- * @param[in] type Type of the preference, e.g. "PLUGINS_PREFS"
4167- * @param[in] preference_name Full name of the preference
4168- * @param[in] new_value The new value to set
4169- * @param[in] insert Whether to insert the preference if missing
4170- */
4171- void
4172- update_config_preference (const char * config_id ,
4173- const char * type ,
4174- const char * preference_name ,
4175- const char * new_value ,
4176- gboolean insert )
4177- {
4178- gchar * quoted_config_id = sql_quote (config_id );
4179- gchar * quoted_type = sql_quote (type );
4180- gchar * quoted_name = sql_quote (preference_name );
4181- gchar * quoted_value = sql_quote (new_value );
4182-
4183- if (sql_int ("SELECT count (*) FROM config_preferences"
4184- " WHERE config = (SELECT id FROM configs WHERE uuid = '%s')"
4185- " AND type = '%s'"
4186- " AND name = '%s';" ,
4187- quoted_config_id , quoted_type , quoted_name ) == 0 )
4188- {
4189- if (insert )
4190- {
4191- sql ("INSERT INTO config_preferences (config, type, name, value)"
4192- " VALUES ((SELECT id FROM configs WHERE uuid = '%s'),"
4193- " '%s', '%s', '%s');" ,
4194- quoted_config_id , quoted_type , quoted_name , quoted_value );
4195- }
4196- }
4197- else
4198- {
4199- sql ("UPDATE config_preferences SET value = '%s'"
4200- " WHERE config = (SELECT id FROM configs WHERE uuid = '%s')"
4201- " AND type = '%s'"
4202- " AND name = '%s';" ,
4203- quoted_value , quoted_config_id , quoted_type , quoted_name );
4204- }
4205-
4206- g_free (quoted_config_id );
4207- g_free (quoted_type );
4208- g_free (quoted_name );
4209- g_free (quoted_value );
4210- }
4211-
42124189/**
42134190 * @brief Update the cached count and growing information in a config.
42144191 *
0 commit comments