Skip to content

Commit 81835b4

Browse files
committed
sync JNI code
1 parent 094c3c9 commit 81835b4

File tree

1 file changed

+49
-42
lines changed

1 file changed

+49
-42
lines changed

jni-c-toxcore/jni-c-toxcore.c

Lines changed: 49 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -841,6 +841,11 @@ void update_savedata_file(const Tox *tox, const uint8_t *passphrase, size_t pass
841841
dbg(9, "update_savedata_file:ERROR:tox ptr is NULL");
842842
return;
843843
}
844+
845+
bool save_unencrypted = false;
846+
size_t size_enc = 0;
847+
uint8_t *savedata_enc = NULL;
848+
844849
size_t size = tox_get_savedata_size(tox);
845850
// dbg(9, "update_savedata_file:tox_get_savedata_size=%d", (int)size);
846851

@@ -875,42 +880,56 @@ void update_savedata_file(const Tox *tox, const uint8_t *passphrase, size_t pass
875880
snprintf(full_path_filename_tmp, (size_t)MAX_FULL_PATH_LENGTH, "%s/%s", app_data_dir, savedata_tmp_filename);
876881
#endif
877882

878-
size_t size_enc = size + TOX_PASS_ENCRYPTION_EXTRA_LENGTH;
879-
// dbg(9, "update_savedata_file:size_enc=%d", (int)size_enc);
880-
uint8_t *savedata_enc = calloc(1, size_enc);
881-
// dbg(9, "update_savedata_file:savedata_enc=%p", savedata_enc);
882-
TOX_ERR_ENCRYPTION error;
883-
tox_pass_encrypt((const uint8_t *)savedata, size, passphrase, passphrase_len, savedata_enc, &error);
884-
// dbg(9, "update_savedata_file:tox_pass_encrypt:%d", (int)error);
885-
886-
if ((size_enc < TOX_PASS_ENCRYPTION_EXTRA_LENGTH) || (error != TOX_ERR_ENCRYPTION_OK))
883+
if ((passphrase == NULL) || (passphrase_len == 0))
887884
{
888-
dbg(9, "update_savedata_file:ERROR:size_enc < TOX_PASS_ENCRYPTION_EXTRA_LENGTH or error != TOX_ERR_ENCRYPTION_OK: error=%d", (int)error);
889-
if(savedata)
890-
{
891-
free(savedata);
892-
}
893-
if(savedata_enc)
894-
{
895-
free(savedata_enc);
896-
}
897-
return;
885+
// HINT: caller wants to save UN-encrypted
886+
dbg(9, "update_savedata_file:!!!!!!! saving UN-encrypted !!!!!!!");
887+
save_unencrypted = true;
898888
}
899889
else
900890
{
901-
bool res = false;
902-
res = tox_is_data_encrypted((const uint8_t *)savedata_enc);
903-
if (!res)
891+
size_enc = size + TOX_PASS_ENCRYPTION_EXTRA_LENGTH;
892+
// dbg(9, "update_savedata_file:size_enc=%d", (int)size_enc);
893+
savedata_enc = calloc(1, size_enc);
894+
// dbg(9, "update_savedata_file:savedata_enc=%p", savedata_enc);
895+
TOX_ERR_ENCRYPTION error;
896+
tox_pass_encrypt((const uint8_t *)savedata, size, passphrase, passphrase_len, savedata_enc, &error);
897+
// dbg(9, "update_savedata_file:tox_pass_encrypt:%d", (int)error);
898+
899+
if ((size_enc < TOX_PASS_ENCRYPTION_EXTRA_LENGTH) || (error != TOX_ERR_ENCRYPTION_OK))
904900
{
905-
dbg(9, "update_savedata_file:ERROR:savedata_enc is corrupted");
901+
dbg(9, "update_savedata_file:ERROR:size_enc < TOX_PASS_ENCRYPTION_EXTRA_LENGTH or error != TOX_ERR_ENCRYPTION_OK: error=%d", (int)error);
906902
free(savedata);
907903
free(savedata_enc);
904+
free(full_path_filename);
905+
free(full_path_filename_tmp);
908906
return;
909907
}
908+
else
909+
{
910+
bool res = false;
911+
res = tox_is_data_encrypted((const uint8_t *)savedata_enc);
912+
if (!res)
913+
{
914+
dbg(9, "update_savedata_file:ERROR:savedata_enc is corrupted");
915+
free(savedata);
916+
free(savedata_enc);
917+
free(full_path_filename);
918+
free(full_path_filename_tmp);
919+
return;
920+
}
921+
}
910922
}
911923

912924
FILE *f = fopen(full_path_filename_tmp, "wb");
913-
fwrite((const void *)savedata_enc, size_enc, 1, f);
925+
if (save_unencrypted)
926+
{
927+
fwrite((const void *)savedata, size, 1, f);
928+
}
929+
else
930+
{
931+
fwrite((const void *)savedata_enc, size_enc, 1, f);
932+
}
914933
fseek(f, 0, SEEK_END);
915934
long fsize = ftell(f);
916935
// dbg(0, "update_savedata_file:ftell:savedata size=%ld", fsize);
@@ -920,14 +939,10 @@ void update_savedata_file(const Tox *tox, const uint8_t *passphrase, size_t pass
920939
if (fsize < 1)
921940
{
922941
dbg(9, "update_savedata_file:ERROR:fsize < 1");
923-
if(savedata)
924-
{
925-
free(savedata);
926-
}
927-
if(savedata_enc)
928-
{
929-
free(savedata_enc);
930-
}
942+
free(savedata);
943+
free(savedata_enc);
944+
free(full_path_filename);
945+
free(full_path_filename_tmp);
931946
return;
932947
}
933948

@@ -940,18 +955,10 @@ void update_savedata_file(const Tox *tox, const uint8_t *passphrase, size_t pass
940955

941956
int res_rename = rename(full_path_filename_tmp, full_path_filename);
942957
// dbg(9, "update_savedata_file:rename src=%s dst=%s res=%d", full_path_filename_tmp, full_path_filename, res_rename);
958+
free(savedata);
959+
free(savedata_enc);
943960
free(full_path_filename);
944961
free(full_path_filename_tmp);
945-
946-
if(savedata)
947-
{
948-
free(savedata);
949-
}
950-
951-
if(savedata_enc)
952-
{
953-
free(savedata_enc);
954-
}
955962
}
956963

957964

0 commit comments

Comments
 (0)