diff --git a/project/backend/manager.c b/project/backend/manager.c index 33c8602..263521c 100644 --- a/project/backend/manager.c +++ b/project/backend/manager.c @@ -103,14 +103,6 @@ Manager* manager_init() { void manager_savepass(Password* pass) { // Our resulting string char* result = store_load("Data"); - - // Storing important bits from password - const char* name = pass->name; - const char* user = pass->user; - const char* phrase = pass->phrase; - - // Freeing password - pass_free(pass); // Is the result empty? if(!result) { @@ -118,10 +110,10 @@ void manager_savepass(Password* pass) { FuriString* n_result = furi_string_alloc(); // Setting stuff - furi_string_printf(n_result, "%s|%s|%s|0", name, user, phrase); + furi_string_printf(n_result, "%s|%s|%s|0", pass->name, pass->user, pass->phrase); // Saving the data - char* data = malloc(sizeof(char)); + char* data = malloc(sizeof(char) * furi_string_size(n_result)); strcpy(data, furi_string_get_cstr(n_result)); store_save("Data", data); @@ -133,10 +125,10 @@ void manager_savepass(Password* pass) { FuriString* new_result = furi_string_alloc(); // Appending addon to result - furi_string_printf(new_result, "%s|%s|%s|%s|0", result, name, user, phrase); + furi_string_printf(new_result, "%s|%s|%s|%s|0", result, pass->name, pass->user, pass->phrase); // Saving the data - char* data = malloc(sizeof(char)); + char* data = malloc(sizeof(char) * furi_string_size(new_result)); strcpy(data, furi_string_get_cstr(new_result)); store_save("Data", data); @@ -145,6 +137,9 @@ void manager_savepass(Password* pass) { free(result); free(data); } + + // Freeing password + pass_free(pass); } void manager_loadpass(Manager* manager, char* name) { // Freeing previous password diff --git a/project/ui/scenes/create.c b/project/ui/scenes/create.c index 150917b..497984f 100644 --- a/project/ui/scenes/create.c +++ b/project/ui/scenes/create.c @@ -1,6 +1,9 @@ // Header #include "create.h" +// Constants +#define KEYBOARD_STR_LEN 64 + // Structures typedef enum { FP_Scene_Create_Event_Name, @@ -34,34 +37,18 @@ void FP_Scene_Enter_Create(void* context) { // Checking what we selected switch (app->selection) { case 0: // Name - // Does name already exist? - if (app->manager->new->name) { - free(app->manager->new->name); - app->manager->new->name = malloc(sizeof(char*)); - } - - // Copying it + free(app->manager->new->name); + app->manager->new->name = malloc(sizeof(char) * KEYBOARD_STR_LEN); strcpy(app->manager->new->name, app->keyboard); - break; case 1: // Username - // Does user already exist? - if (app->manager->new->user) { - free(app->manager->new->user); - app->manager->new->user = malloc(sizeof(char*)); - } - - // Copying it + free(app->manager->new->user); + app->manager->new->user = malloc(sizeof(char) * KEYBOARD_STR_LEN); strcpy(app->manager->new->user, app->keyboard); break; case 2: // Password - // Does phrase already exist? - if (app->manager->new->phrase) { - free(app->manager->new->phrase); - app->manager->new->phrase = malloc(sizeof(char*)); - } - - // Copying it + free(app->manager->new->phrase); + app->manager->new->phrase = malloc(sizeof(char) * KEYBOARD_STR_LEN); strcpy(app->manager->new->phrase, app->keyboard); break; } diff --git a/project/ui/scenes/type.c b/project/ui/scenes/type.c index 4eda264..ee497c1 100644 --- a/project/ui/scenes/type.c +++ b/project/ui/scenes/type.c @@ -35,7 +35,7 @@ void FP_Scene_Enter_Type(void* context) { } // Creating keyboard string - app->keyboard = malloc(sizeof(char*) * KEYBOARD_STR_LEN); + app->keyboard = malloc(sizeof(char) * KEYBOARD_STR_LEN); // Setting stuff text_input_set_result_callback(