diff --git a/dap_chain_wallet.c b/dap_chain_wallet.c index cbb8d7d7d63babdeee99e9e88c02b1a7eb4c6f7a..0c323f80bbe84d4742aa59039e007bcce8e748fd 100644 --- a/dap_chain_wallet.c +++ b/dap_chain_wallet.c @@ -81,7 +81,7 @@ dap_chain_wallet_t * dap_chain_wallet_create(const char * a_wallet_name, const c else { log_it(L_ERROR,"Can't save the new wallet in disk: \"%s\"",strerror(errno)); } - + return NULL; } /** @@ -199,7 +199,7 @@ int dap_chain_wallet_save(dap_chain_wallet_t * a_wallet) */ dap_chain_wallet_t * dap_chain_wallet_open_file(const char * a_file_name) { - FILE * l_file = fopen( a_file_name ,"w"); + FILE * l_file = fopen( a_file_name ,"r"); fseek(l_file, 0L, SEEK_END); uint64_t l_file_size = ftell(l_file); rewind(l_file); @@ -214,15 +214,15 @@ dap_chain_wallet_t * dap_chain_wallet_open_file(const char * a_file_name) l_wallet_internal->file_name = strdup(a_file_name); - size_t l_certs_count = 0,i; - while (i < (l_file_size - sizeof(l_file_hdr)) ){ + size_t i = sizeof (l_file_hdr); + while (i < l_file_size ){ dap_chain_wallet_cert_hdr_t l_cert_hdr={0}; fread(&l_cert_hdr,1,sizeof(l_cert_hdr),l_file); i+=sizeof(l_cert_hdr); if (l_cert_hdr.cert_raw_size > 0 ){ - if (l_cert_hdr.cert_raw_size <= (l_file_size - sizeof (l_file_hdr) - i ) ){ + if(l_cert_hdr.cert_raw_size <= (l_file_size - i)) { i+=l_cert_hdr.cert_raw_size; - l_certs_count++; + l_wallet_internal->certs_count++; }else{ log_it(L_WARNING,"Wrong raw cert size %u (too big)",l_cert_hdr.cert_raw_size); break; @@ -238,6 +238,7 @@ dap_chain_wallet_t * dap_chain_wallet_open_file(const char * a_file_name) dap_chain_wallet_cert_hdr_t l_cert_hdr={0}; fread(&l_cert_hdr,1,sizeof(l_cert_hdr),l_file); uint8_t * l_data = DAP_NEW_SIZE(uint8_t,l_cert_hdr.cert_raw_size); + fread(l_data,1,l_cert_hdr.cert_raw_size,l_file); l_wallet_internal->certs[i] = dap_chain_cert_mem_load(l_data,l_cert_hdr.cert_raw_size); DAP_DELETE (l_data); } @@ -267,7 +268,7 @@ dap_chain_wallet_t * dap_chain_wallet_open(const char * a_wallet_name, const cha { size_t l_file_name_size = strlen(a_wallet_name)+strlen(a_wallets_path)+13; char *l_file_name = DAP_NEW_Z_SIZE (char, l_file_name_size); - snprintf(l_file_name,l_file_name_size,"%s/%s.dwallet"); + snprintf(l_file_name, l_file_name_size, "%s/%s.dwallet", a_wallets_path, a_wallet_name); dap_chain_wallet_t * l_wallet = dap_chain_wallet_open_file(l_file_name); DAP_DELETE(l_file_name); return l_wallet;