From 5b093d3bb57cfef0dbb1b044961b56415f853808 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 9 Feb 2024 17:09:14 +0600 Subject: [PATCH] Fixed saving crash --- source/ubl-settings-usergroups.c | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index bdd4d5d..8759e5d 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -138,33 +138,54 @@ void yon_hide_passwords(template_saving_window *window){ if (strstr(name,"USERADD[")){ int size; config_str parsed = yon_char_parse(new_value,&size,":"); - if (parsed[5][0] !='$'&&parsed[5][0]!='%'){ + if (size>5 &&parsed[5][0] !='$'&&parsed[5][0]!='%'){ parsed[5]="******"; char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",yon_char_parsed_to_string(parsed,size,":"),NULL); gtk_list_store_set(window->list,&iter,7,new_compare,-1); + free(new_compare); + } else { + char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",NULL); + gtk_list_store_set(window->list,&iter,7,new_compare,-1); + free(new_compare); + } } else if (strstr(name,"GROUPADD[")){ int size; config_str parsed = yon_char_parse(new_value,&size,":"); - if (parsed[4][0] !='$'&&parsed[4][0]!='%'){ + if (size>4&&parsed[4][0] !='$'&&parsed[4][0]!='%'){ parsed[4]="******"; char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",yon_char_parsed_to_string(parsed,size,":"),NULL); gtk_list_store_set(window->list,&iter,7,new_compare,-1); + } else { + char *new_compare = yon_char_unite(!yon_char_is_empty(old_value)?"":"",!yon_char_is_empty(old_value)?old_value:"",!yon_char_is_empty(old_value)?"":"","\n",NULL); + gtk_list_store_set(window->list,&iter,7,new_compare,-1); + free(new_compare); + } } else if (strstr(name,"DEFAULTPASSWD")){ - if (new_value[0] !='$'&&new_value[0]!='%'){ - char *new_compare = yon_char_unite("",old_value,"\n******",NULL); + if (!yon_char_is_empty(new_value) && new_value[0] !='$'&&new_value[0]!='%'){ + char *new_compare = yon_char_unite("",old_value,"\n",NULL); gtk_list_store_set(window->list,&iter,7,new_compare,-1); free(new_compare); + } else { + char *new_compare = yon_char_unite("",old_value,"\n",NULL); + gtk_list_store_set(window->list,&iter,7,new_compare,-1); + free(new_compare); + } } else if (strstr(name,"DEFAULTROOTPASSWD")){ - if (new_value[0] !='$'&&new_value[0]!='%'){ + if (!yon_char_is_empty(new_value) &&new_value[0] !='$'&&new_value[0]!='%'){ char *new_compare = yon_char_unite("",old_value,"\n******",NULL); gtk_list_store_set(window->list,&iter,7,new_compare,-1); free(new_compare); + } else { + char *new_compare = yon_char_unite("",old_value,"\n******",NULL); + gtk_list_store_set(window->list,&iter,7,new_compare,-1); + free(new_compare); + } }