Skip to content

Commit

Permalink
Fix: Set pref_... fields in cleanup-config-prefs
Browse files Browse the repository at this point in the history
The --optimize option cleanup-config-prefs now also sets the fields
pref_nvt, pref_id, pref_type, pref_name if they are missing or invalid
for VT preferences or sets them to NULL for scanner preferences.
  • Loading branch information
timopollmeier authored and a-h-abdelsalam committed Mar 11, 2024
1 parent 57a6d05 commit 097a880
Showing 1 changed file with 20 additions and 7 deletions.
27 changes: 20 additions & 7 deletions src/manage_sql.c
Original file line number Diff line number Diff line change
Expand Up @@ -58340,23 +58340,36 @@ manage_optimize (GSList *log_config, const db_conn_info_t *database,
}
else if (strcasecmp (name, "cleanup-config-prefs") == 0)
{
int removed, fixed_values;
sql ("DELETE FROM config_preferences WHERE id NOT IN"
" (SELECT min(id) FROM config_preferences"
" GROUP BY config, type, name, value);");
removed = sql_changes();

sql ("UPDATE config_preferences"
" SET value = (SELECT value FROM nvt_preferences"
" WHERE name='scanner_plugins_timeout')"
" WHERE name = 'scanner_plugins_timeout'"
" AND value = 'SCANNER_NVT_TIMEOUT';");
fixed_values = sql_changes();

success_text = g_strdup_printf ("Optimized: cleanup-config-prefs."
" Duplicate config preferences removed:"
" %d. Corrected preference values: %d",
removed, fixed_values);
sql ("UPDATE config_preferences"
" SET pref_nvt = NULL,"
" pref_id = NULL,"
" pref_type = NULL,"
" pref_name = NULL"
" WHERE type = 'SERVER_PREFS' AND pref_nvt IS NOT NULL;");

sql ("UPDATE config_preferences"
" SET pref_nvt = substring (name, '^([^:]*)'),"
" pref_id = CAST(substring (name, '^[^:]*:([0-9]+)') AS integer),"
" pref_type = substring (name, '^[^:]*:[0-9]+:([^:]*):'),"
" pref_name = substring (name, '^[^:]*:[0-9]+:[^:]*:(.*)')"
" WHERE type = 'PLUGINS_PREFS'"
" AND (pref_nvt = '(null)' OR pref_nvt IS NULL"
" OR pref_type = '(null)' OR pref_type IS NULL"
" OR pref_name = '(null)' OR pref_name IS NULL)"
" AND name ~ '^[^:]*:[0-9]+:[^:]*:.*'"
" AND type = 'PLUGINS_PREFS';");

success_text = g_strdup_printf ("Optimized: cleanup-config-prefs.");
}
else if (strcasecmp (name, "cleanup-feed-permissions") == 0)
{
Expand Down

0 comments on commit 097a880

Please sign in to comment.