131 remove custom memory management wrappers (#137)
* psync_free removed * psync_malloc removed * psync_realloc removed * remove dead code * remove pmemlock * remove dead code
This commit is contained in:
parent
3fd249f3f8
commit
9da561c767
|
|
@ -308,11 +308,11 @@ static binresult *do_parse_result(unsigned char **restrict indata,
|
|||
arr = NULL;
|
||||
cnt = 0;
|
||||
alloc = 128;
|
||||
arr = (binresult **)psync_malloc(sizeof(binresult *) * alloc);
|
||||
arr = (binresult **)malloc(sizeof(binresult *) * alloc);
|
||||
while (**indata != RPARAM_END) {
|
||||
if (cnt == alloc) {
|
||||
alloc *= 2;
|
||||
arr = (binresult **)psync_realloc(arr, sizeof(binresult *) * alloc);
|
||||
arr = (binresult **)realloc(arr, sizeof(binresult *) * alloc);
|
||||
}
|
||||
arr[cnt++] = do_parse_result(indata, odata, strings, nextstrid);
|
||||
}
|
||||
|
|
@ -321,7 +321,7 @@ static binresult *do_parse_result(unsigned char **restrict indata,
|
|||
ret->array = (struct _binresult **)*odata;
|
||||
*odata += sizeof(struct _binresult *) * cnt;
|
||||
memcpy(ret->array, arr, sizeof(struct _binresult *) * cnt);
|
||||
psync_free(arr);
|
||||
free(arr);
|
||||
return ret;
|
||||
} else if (type == RPARAM_HASH) {
|
||||
struct _hashpair *arr;
|
||||
|
|
@ -333,11 +333,11 @@ static binresult *do_parse_result(unsigned char **restrict indata,
|
|||
arr = NULL;
|
||||
cnt = 0;
|
||||
alloc = 32;
|
||||
arr = (struct _hashpair *)psync_malloc(sizeof(struct _hashpair) * alloc);
|
||||
arr = (struct _hashpair *)malloc(sizeof(struct _hashpair) * alloc);
|
||||
while (**indata != RPARAM_END) {
|
||||
if (cnt == alloc) {
|
||||
alloc *= 2;
|
||||
arr = (struct _hashpair *)psync_realloc(arr, sizeof(struct _hashpair) *
|
||||
arr = (struct _hashpair *)realloc(arr, sizeof(struct _hashpair) *
|
||||
alloc);
|
||||
}
|
||||
key = do_parse_result(indata, odata, strings, nextstrid);
|
||||
|
|
@ -352,7 +352,7 @@ static binresult *do_parse_result(unsigned char **restrict indata,
|
|||
ret->hash = (struct _hashpair *)*odata;
|
||||
*odata += sizeof(struct _hashpair) * cnt;
|
||||
memcpy(ret->hash, arr, sizeof(struct _hashpair) * cnt);
|
||||
psync_free(arr);
|
||||
free(arr);
|
||||
return ret;
|
||||
} else if (type == RPARAM_DATA) {
|
||||
ret = (binresult *)(*odata);
|
||||
|
|
@ -381,7 +381,7 @@ static binresult *parse_result(unsigned char *data, size_t datalen) {
|
|||
strings = psync_new_cnt(binresult *, strcnt);
|
||||
strcnt = 0;
|
||||
res = do_parse_result(&data, &datac, strings, &strcnt);
|
||||
psync_free(strings);
|
||||
free(strings);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
@ -395,15 +395,15 @@ binresult *papi_result(psock_t *sock) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
data = (unsigned char *)psync_malloc(ressize);
|
||||
data = (unsigned char *)malloc(ressize);
|
||||
|
||||
if (unlikely_log(psock_readall(sock, data, ressize) != ressize)) {
|
||||
psync_free(data);
|
||||
free(data);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
res = parse_result(data, ressize);
|
||||
psync_free(data);
|
||||
free(data);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
@ -415,14 +415,14 @@ binresult *papi_result_thread(psock_t *sock) {
|
|||
if (unlikely_log(psock_readall_thread(
|
||||
sock, &ressize, sizeof(uint32_t)) != sizeof(uint32_t)))
|
||||
return NULL;
|
||||
data = (unsigned char *)psync_malloc(ressize);
|
||||
data = (unsigned char *)malloc(ressize);
|
||||
if (unlikely_log(psock_readall_thread(sock, data, ressize) !=
|
||||
ressize)) {
|
||||
psync_free(data);
|
||||
free(data);
|
||||
return NULL;
|
||||
}
|
||||
res = parse_result(data, ressize);
|
||||
psync_free(data);
|
||||
free(data);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
@ -435,7 +435,7 @@ void papi_rdr_alloc(async_result_reader *reader) {
|
|||
|
||||
void papi_rdr_free(async_result_reader *reader) {
|
||||
if (reader->state == 1)
|
||||
psync_free(reader->data);
|
||||
free(reader->data);
|
||||
}
|
||||
|
||||
int papi_result_async(psock_t *sock, async_result_reader *reader) {
|
||||
|
|
@ -447,7 +447,7 @@ again:
|
|||
return ASYNC_RES_NEEDMORE;
|
||||
else if (rd == PSYNC_SOCKET_ERROR || rd == 0) {
|
||||
if (reader->state == 1)
|
||||
psync_free(reader->data);
|
||||
free(reader->data);
|
||||
papi_rdr_alloc(reader);
|
||||
reader->result = NULL;
|
||||
return ASYNC_RES_READY;
|
||||
|
|
@ -458,12 +458,12 @@ again:
|
|||
reader->state = 1;
|
||||
reader->bytesread = 0;
|
||||
reader->bytestoread = reader->respsize;
|
||||
reader->data = (unsigned char *)psync_malloc(reader->respsize);
|
||||
reader->data = (unsigned char *)malloc(reader->respsize);
|
||||
goto again;
|
||||
} else {
|
||||
assert(reader->state == 1);
|
||||
reader->result = parse_result(reader->data, reader->respsize);
|
||||
psync_free(reader->data);
|
||||
free(reader->data);
|
||||
papi_rdr_alloc(reader);
|
||||
return ASYNC_RES_READY;
|
||||
}
|
||||
|
|
@ -496,7 +496,7 @@ unsigned char *papi_prepare(const char *command, size_t cmdlen,
|
|||
}
|
||||
if (unlikely_log(plen > 0xffff))
|
||||
return NULL;
|
||||
sdata = data = (unsigned char *)psync_malloc(plen + 2 + additionalalloc);
|
||||
sdata = data = (unsigned char *)malloc(plen + 2 + additionalalloc);
|
||||
memcpy(data, &plen, 2);
|
||||
data += 2;
|
||||
if (datalen != -1) {
|
||||
|
|
@ -543,16 +543,16 @@ binresult *papi_send(psock_t *sock, const char *command,
|
|||
|
||||
if (readres & 2) {
|
||||
if (unlikely_log(psock_writeall_thread(sock, sdata, plen) != plen)) {
|
||||
psync_free(sdata);
|
||||
free(sdata);
|
||||
return NULL;
|
||||
}
|
||||
} else {
|
||||
if (unlikely_log(psock_writeall(sock, sdata, plen) != plen)) {
|
||||
psync_free(sdata);
|
||||
free(sdata);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
psync_free(sdata);
|
||||
free(sdata);
|
||||
if (readres & 1) {
|
||||
return papi_result(sock);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -102,12 +102,12 @@ int do_psync_account_stopshare(psync_shareid_t usershareids[], int nusershareid,
|
|||
if (unlikely(numparam == 1))
|
||||
return -3;
|
||||
|
||||
t = (binparam *)psync_malloc(numparam * sizeof(binparam));
|
||||
t = (binparam *)malloc(numparam * sizeof(binparam));
|
||||
|
||||
init_param_str(t, "auth", psync_my_auth);
|
||||
|
||||
if (nusershareid) {
|
||||
ids1 = (char *)psync_malloc(nusershareid * FOLDERID_ENTRY_SIZE);
|
||||
ids1 = (char *)malloc(nusershareid * FOLDERID_ENTRY_SIZE);
|
||||
idsp = ids1;
|
||||
for (i = 0; i < nusershareid; ++i) {
|
||||
k = sprintf(idsp, "%lld", (long long)usershareids[i]);
|
||||
|
|
@ -123,7 +123,7 @@ int do_psync_account_stopshare(psync_shareid_t usershareids[], int nusershareid,
|
|||
}
|
||||
|
||||
if (nteamshareid) {
|
||||
ids2 = (char *)psync_malloc(nteamshareid * FOLDERID_ENTRY_SIZE);
|
||||
ids2 = (char *)malloc(nteamshareid * FOLDERID_ENTRY_SIZE);
|
||||
idsp = ids2;
|
||||
for (i = 0; i < nteamshareid; ++i) {
|
||||
k = sprintf(idsp, "%lld", (long long)teamshareids[i]);
|
||||
|
|
@ -177,12 +177,12 @@ int do_psync_account_stopshare(psync_shareid_t usershareids[], int nusershareid,
|
|||
}
|
||||
|
||||
if (ids1)
|
||||
psync_free(ids1);
|
||||
free(ids1);
|
||||
if (ids2)
|
||||
psync_free(ids2);
|
||||
free(ids2);
|
||||
|
||||
psync_free(bres);
|
||||
psync_free(t);
|
||||
free(bres);
|
||||
free(t);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -208,14 +208,14 @@ int do_psync_account_modifyshare(psync_shareid_t usrshrids[], uint32_t uperms[],
|
|||
if (unlikely(numparam == 1))
|
||||
return -3;
|
||||
|
||||
t = (binparam *)psync_malloc(numparam * sizeof(binparam));
|
||||
t = (binparam *)malloc(numparam * sizeof(binparam));
|
||||
|
||||
init_param_str(t, "auth", psync_my_auth);
|
||||
|
||||
if (nushid) {
|
||||
ids1 = (char *)psync_malloc(nushid * FOLDERID_ENTRY_SIZE);
|
||||
ids1 = (char *)malloc(nushid * FOLDERID_ENTRY_SIZE);
|
||||
idsp = ids1;
|
||||
perms1 = (char *)psync_malloc(nushid * FOLDERID_ENTRY_SIZE);
|
||||
perms1 = (char *)malloc(nushid * FOLDERID_ENTRY_SIZE);
|
||||
permsp = perms1;
|
||||
for (i = 0; i < nushid; ++i) {
|
||||
k = sprintf(idsp, "%lld", (long long)usrshrids[i]);
|
||||
|
|
@ -240,9 +240,9 @@ int do_psync_account_modifyshare(psync_shareid_t usrshrids[], uint32_t uperms[],
|
|||
}
|
||||
|
||||
if (ntmshid) {
|
||||
ids2 = (char *)psync_malloc(ntmshid * FOLDERID_ENTRY_SIZE);
|
||||
ids2 = (char *)malloc(ntmshid * FOLDERID_ENTRY_SIZE);
|
||||
idsp = ids2;
|
||||
perms2 = (char *)psync_malloc(ntmshid * FOLDERID_ENTRY_SIZE);
|
||||
perms2 = (char *)malloc(ntmshid * FOLDERID_ENTRY_SIZE);
|
||||
permsp = perms2;
|
||||
|
||||
for (i = 0; i < ntmshid; ++i) {
|
||||
|
|
@ -306,16 +306,16 @@ int do_psync_account_modifyshare(psync_shareid_t usrshrids[], uint32_t uperms[],
|
|||
}
|
||||
|
||||
if (ids1)
|
||||
psync_free(ids1);
|
||||
free(ids1);
|
||||
if (ids2)
|
||||
psync_free(ids2);
|
||||
free(ids2);
|
||||
if (perms1)
|
||||
psync_free(perms1);
|
||||
free(perms1);
|
||||
if (perms2)
|
||||
psync_free(perms2);
|
||||
free(perms2);
|
||||
|
||||
psync_free(bres);
|
||||
psync_free(t);
|
||||
free(bres);
|
||||
free(t);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -330,7 +330,7 @@ void get_ba_member_email(uint64_t userid, char **email /*OUT*/,
|
|||
psync_sql_bind_uint(res, 1, userid);
|
||||
if ((row = psync_sql_fetch_row(res))) {
|
||||
cstr = psync_get_lstring(row[0], length);
|
||||
*email = (char *)psync_malloc(*length);
|
||||
*email = (char *)malloc(*length);
|
||||
memcpy(*email, cstr, *length);
|
||||
psync_sql_free_result(res);
|
||||
return;
|
||||
|
|
@ -357,7 +357,7 @@ void get_ba_member_email(uint64_t userid, char **email /*OUT*/,
|
|||
|
||||
users = papi_find_result2(bres, "users", PARAM_ARRAY);
|
||||
if (!users->length) {
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
debug(D_WARNING, "Account_users returned empty result!\n");
|
||||
return;
|
||||
} else {
|
||||
|
|
@ -368,7 +368,7 @@ void get_ba_member_email(uint64_t userid, char **email /*OUT*/,
|
|||
fname = papi_find_result2(users->array[0], "firstname", PARAM_STR)->str;
|
||||
lname = papi_find_result2(users->array[0], "lastname", PARAM_STR)->str;
|
||||
}
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
if (*length) {
|
||||
psync_sql_res *q;
|
||||
|
|
@ -396,7 +396,7 @@ void get_ba_team_name(uint64_t teamid, char **name /*OUT*/,
|
|||
psync_sql_bind_uint(res, 1, teamid);
|
||||
if ((row = psync_sql_fetch_row(res))) {
|
||||
cstr = psync_get_lstring(row[0], length);
|
||||
*name = (char *)psync_malloc(*length);
|
||||
*name = (char *)malloc(*length);
|
||||
memcpy(*name, cstr, *length);
|
||||
psync_sql_free_result(res);
|
||||
return;
|
||||
|
|
@ -422,7 +422,7 @@ void get_ba_team_name(uint64_t teamid, char **name /*OUT*/,
|
|||
// debug(D_NOTICE, "Result contains %d teams\n", users->length);
|
||||
|
||||
if (!teams->length) {
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
debug(D_WARNING, "Account_teams returned empty result!\n");
|
||||
return;
|
||||
} else {
|
||||
|
|
@ -431,7 +431,7 @@ void get_ba_team_name(uint64_t teamid, char **name /*OUT*/,
|
|||
*length = strlen(teamret);
|
||||
*name = psync_strndup(teamret, *length);
|
||||
}
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
psync_sql_res *q;
|
||||
q = psync_sql_prep_statement(
|
||||
|
|
@ -515,7 +515,7 @@ void cache_account_emails() {
|
|||
psync_sql_commit_transaction();
|
||||
}
|
||||
end_close:
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
}
|
||||
|
||||
void cache_account_teams() {
|
||||
|
|
@ -549,7 +549,7 @@ void cache_account_teams() {
|
|||
// debug(D_NOTICE, "Result contains %d teams\n", users->length);
|
||||
|
||||
if (!users->length) {
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
debug(D_WARNING, "Account_teams returned empty result!\n");
|
||||
return;
|
||||
} else {
|
||||
|
|
@ -577,7 +577,7 @@ void cache_account_teams() {
|
|||
}
|
||||
psync_sql_commit_transaction();
|
||||
}
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -622,7 +622,7 @@ void cache_ba_my_teams() {
|
|||
users = papi_find_result2(bres, "users", PARAM_ARRAY);
|
||||
|
||||
if (!users->length) {
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
debug(D_WARNING, "Account_users returned empty result!\n");
|
||||
return;
|
||||
}
|
||||
|
|
@ -634,7 +634,7 @@ void cache_ba_my_teams() {
|
|||
teams = papi_find_result2(user, "teams", PARAM_ARRAY);
|
||||
for (i = 0; i < teams->length; i++)
|
||||
cache_my_team(teams->array[i]);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
psync_sql_unlock();
|
||||
}
|
||||
|
||||
|
|
@ -642,7 +642,7 @@ int api_error_result(binresult *res) {
|
|||
uint64_t result;
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (result) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_process_api_error(result);
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -741,20 +741,20 @@ static psync_folderid_t create_index_folder(const char *path) {
|
|||
while (ind < 100) {
|
||||
bufflen = strlen(path) + 1 /*zero char*/ + 3 /*parenthesis*/ +
|
||||
3 /*up to 3 digit index*/;
|
||||
buff = (char *)psync_malloc(bufflen);
|
||||
buff = (char *)malloc(bufflen);
|
||||
snprintf(buff, bufflen - 1, "%s (%d)", path, ind);
|
||||
if (psync_create_remote_folder_by_path(buff, &err) != 0)
|
||||
debug(D_NOTICE, "Unable to create folder %s error is %s.", buff, err);
|
||||
folderid = pfolder_id(buff);
|
||||
if ((folderid != PSYNC_INVALID_FOLDERID) &&
|
||||
check_write_permissions(folderid)) {
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
break;
|
||||
}
|
||||
++ind;
|
||||
if (err)
|
||||
psync_free(err);
|
||||
psync_free(buff);
|
||||
free(err);
|
||||
free(buff);
|
||||
}
|
||||
return folderid;
|
||||
}
|
||||
|
|
@ -765,7 +765,7 @@ psync_folderid_t psync_check_and_create_folder(const char *path) {
|
|||
if (folderid == PSYNC_INVALID_FOLDERID) {
|
||||
if (psync_create_remote_folder_by_path(path, &err) != 0) {
|
||||
debug(D_NOTICE, "Unable to create folder %s error is %s.", path, err);
|
||||
psync_free(err);
|
||||
free(err);
|
||||
folderid = create_index_folder(path);
|
||||
}
|
||||
} else if (!check_write_permissions(folderid))
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ static void cache_timer(psync_timer_t timer, void *ptr) {
|
|||
psync_list_del(&he->list);
|
||||
pthread_mutex_unlock(&cachelocks[hash_to_lock(he->hash)]);
|
||||
he->free(he->value);
|
||||
psync_free(he);
|
||||
free(he);
|
||||
ptimer_stop(timer);
|
||||
}
|
||||
|
||||
|
|
@ -131,7 +131,7 @@ void *pcache_get(const char *key) {
|
|||
psync_list_del(&he->list);
|
||||
pthread_mutex_unlock(&cachelocks[hash_to_lock(h)]);
|
||||
val = he->value;
|
||||
psync_free(he);
|
||||
free(he);
|
||||
return val;
|
||||
}
|
||||
pthread_mutex_unlock(&cachelocks[hash_to_lock(h)]);
|
||||
|
|
@ -164,7 +164,7 @@ void pcache_add(const char *key, void *ptr, time_t freeafter,
|
|||
uint32_t h;
|
||||
h = compute_hash(key, &l);
|
||||
l++;
|
||||
he = (cache_entry_t *)psync_malloc(offsetof(cache_entry_t, key) + l);
|
||||
he = (cache_entry_t *)malloc(offsetof(cache_entry_t, key) + l);
|
||||
he->value = ptr;
|
||||
he->free = freefunc;
|
||||
he->hash = h;
|
||||
|
|
@ -178,7 +178,7 @@ void pcache_add(const char *key, void *ptr, time_t freeafter,
|
|||
!strcmp(key, he2->key) &&
|
||||
++l == maxkeys)) {
|
||||
pthread_mutex_unlock(&cachelocks[hash_to_lock(h)]);
|
||||
psync_free(he);
|
||||
free(he);
|
||||
freefunc(ptr);
|
||||
// debug(D_NOTICE, "not adding key %s to cache as there already %u
|
||||
// elements present", key, (unsigned int)maxkeys);
|
||||
|
|
@ -218,7 +218,7 @@ restart:
|
|||
psync_list_del(&he->list);
|
||||
pthread_mutex_unlock(&cachelocks[hash_to_lock(h)]);
|
||||
he->free(he->value);
|
||||
psync_free(he);
|
||||
free(he);
|
||||
goto restart;
|
||||
}
|
||||
pthread_mutex_unlock(&cachelocks[hash_to_lock(h)]);
|
||||
|
|
@ -235,7 +235,7 @@ void pcache_clean() {
|
|||
if (!ptimer_stop(he->timer)) {
|
||||
psync_list_del(l1);
|
||||
he->free(he->value);
|
||||
psync_free(he);
|
||||
free(he);
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&cachelocks[hash_to_lock(h)]);
|
||||
|
|
@ -262,7 +262,7 @@ void pcache_clean_oneof(const char **prefixes, size_t cnt) {
|
|||
if (!ptimer_stop(he->timer)) {
|
||||
psync_list_del(l1);
|
||||
he->free(he->value);
|
||||
psync_free(he);
|
||||
free(he);
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&cachelocks[hash_to_lock(h)]);
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ int do_call_contactlist(result_visitor vis, void *param) {
|
|||
contacts = papi_find_result2(bres, "contacts", PARAM_ARRAY);
|
||||
|
||||
if (!contacts->length) {
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
debug(D_WARNING, "Account_users returned empty result!\n");
|
||||
return -2;
|
||||
} else {
|
||||
|
|
@ -80,7 +80,7 @@ int do_call_contactlist(result_visitor vis, void *param) {
|
|||
psync_sql_commit_transaction();
|
||||
}
|
||||
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -361,7 +361,7 @@ void cache_shares() {
|
|||
debug(D_WARNING, "command listshares returned error code %u message %s",
|
||||
(unsigned)result, errorret);
|
||||
psync_process_api_error(result);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -406,5 +406,5 @@ void cache_shares() {
|
|||
|
||||
psync_sql_commit_transaction();
|
||||
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@
|
|||
|
||||
#include "pcrypto.h"
|
||||
#include "plibs.h"
|
||||
#include "pmemlock.h"
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
|
||||
|
|
@ -161,7 +160,7 @@ static void copy_iv_and_xor_with_counter(unsigned char *dest,
|
|||
|
||||
psync_symmetric_key_t pcrypto_key_len(size_t len) {
|
||||
psync_symmetric_key_t key;
|
||||
key = (psync_symmetric_key_t)pmemlock_malloc(
|
||||
key = (psync_symmetric_key_t)malloc(
|
||||
offsetof(psync_symmetric_key_struct_t, key) + len);
|
||||
key->keylen = len;
|
||||
pssl_rand_strong(key->key, len);
|
||||
|
|
@ -193,7 +192,7 @@ void pcrypto_ctr_encdec_free(
|
|||
pcrypto_ctr_encdec_t enc) {
|
||||
paes_free_encoder(enc->encoder);
|
||||
putil_wipe(enc->iv, PSYNC_AES256_BLOCK_SIZE);
|
||||
psync_free(enc);
|
||||
free(enc);
|
||||
}
|
||||
|
||||
void pcrypto_ctr_encdec_decode(
|
||||
|
|
@ -343,7 +342,7 @@ pcrypto_decode_text(pcrypto_textdec_t enc,
|
|||
while (ret + len < outptr) {
|
||||
if (unlikely(ret[len] != 0)) {
|
||||
debug(D_WARNING, "non-zero in the padding found");
|
||||
psync_free(ret);
|
||||
free(ret);
|
||||
return NULL;
|
||||
}
|
||||
len++;
|
||||
|
|
@ -388,7 +387,7 @@ pcrypto_decode_text(pcrypto_textdec_t enc,
|
|||
while (ret + len < outptr) {
|
||||
if (unlikely(ret[len] != 0)) {
|
||||
debug(D_WARNING, "non-zero in the padding found");
|
||||
psync_free(ret);
|
||||
free(ret);
|
||||
return NULL;
|
||||
}
|
||||
len++;
|
||||
|
|
@ -406,7 +405,7 @@ pcrypto_textenc_create(psync_symmetric_key_t key) {
|
|||
enc = paes_create_encoder(key);
|
||||
if (unlikely_log(enc == PSYNC_INVALID_ENCODER))
|
||||
return PSYNC_CRYPTO_INVALID_ENCODER;
|
||||
ret = (pcrypto_textenc_t)pmemlock_malloc(
|
||||
ret = (pcrypto_textenc_t)malloc(
|
||||
offsetof(pcrypto_key_iv_t, iv) + key->keylen -
|
||||
PSYNC_AES256_KEY_SIZE);
|
||||
ret->encoder = enc;
|
||||
|
|
@ -419,7 +418,7 @@ void pcrypto_textenc_free(
|
|||
pcrypto_textenc_t enc) {
|
||||
paes_free_encoder(enc->encoder);
|
||||
putil_wipe(enc->iv, enc->ivlen);
|
||||
pmemlock_free(enc);
|
||||
free(enc);
|
||||
}
|
||||
|
||||
pcrypto_textdec_t
|
||||
|
|
@ -432,7 +431,7 @@ pcrypto_textdec_create(psync_symmetric_key_t key) {
|
|||
enc = paes_create_decoder(key);
|
||||
if (unlikely_log(enc == PSYNC_INVALID_ENCODER))
|
||||
return PSYNC_CRYPTO_INVALID_ENCODER;
|
||||
ret = (pcrypto_textenc_t)pmemlock_malloc(
|
||||
ret = (pcrypto_textenc_t)malloc(
|
||||
offsetof(pcrypto_key_iv_t, iv) + key->keylen -
|
||||
PSYNC_AES256_KEY_SIZE);
|
||||
ret->encoder = enc;
|
||||
|
|
@ -445,7 +444,7 @@ void pcrypto_textdec_free(
|
|||
pcrypto_textdec_t enc) {
|
||||
paes_free_encoder(enc->encoder);
|
||||
putil_wipe(enc->iv, enc->ivlen);
|
||||
pmemlock_free(enc);
|
||||
free(enc);
|
||||
}
|
||||
|
||||
pcrypto_sector_encdec_t
|
||||
|
|
@ -463,7 +462,7 @@ pcrypto_sec_encdec_create(psync_symmetric_key_t key) {
|
|||
paes_free_encoder(enc);
|
||||
return PSYNC_CRYPTO_INVALID_ENCODER;
|
||||
}
|
||||
ret = (pcrypto_sector_encdec_t)pmemlock_malloc(
|
||||
ret = (pcrypto_sector_encdec_t)malloc(
|
||||
offsetof(pcrypto_encdec_iv_t, iv) + key->keylen -
|
||||
PSYNC_AES256_KEY_SIZE);
|
||||
ret->encoder = enc;
|
||||
|
|
@ -478,7 +477,7 @@ void pcrypto_sec_encdec_free(
|
|||
paes_free_encoder(enc->encoder);
|
||||
paes_free_decoder(enc->decoder);
|
||||
putil_wipe(enc->iv, enc->ivlen);
|
||||
pmemlock_free(enc);
|
||||
free(enc);
|
||||
}
|
||||
|
||||
static int memcmp_const(const unsigned char *s1, const unsigned char *s2,
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@
|
|||
#include "pfoldersync.h"
|
||||
#include "pfs.h"
|
||||
#include "plibs.h"
|
||||
#include "pmemlock.h"
|
||||
#include "pnetlibs.h"
|
||||
#include "psettings.h"
|
||||
#include "pssl.h"
|
||||
|
|
@ -185,7 +184,7 @@ static int setup_do_upload(const unsigned char *rsapriv,
|
|||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (!result)
|
||||
*cryptoexpires = papi_find_result2(res, "cryptoexpires", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (result != 0)
|
||||
debug(D_WARNING, "crypto_setuserkeys returned %u", (unsigned)result);
|
||||
if (result == 0)
|
||||
|
|
@ -207,7 +206,7 @@ static void load_str_to(const psync_variant *v, unsigned char **ptr,
|
|||
const char *str;
|
||||
size_t l;
|
||||
str = psync_get_lstring(*v, &l);
|
||||
*ptr = (unsigned char *)psync_malloc(l);
|
||||
*ptr = (unsigned char *)malloc(l);
|
||||
memcpy(*ptr, str, l);
|
||||
*len = l;
|
||||
}
|
||||
|
|
@ -239,7 +238,7 @@ static int download_keys(unsigned char **rsapriv, size_t *rsaprivlen, unsigned c
|
|||
}
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (result) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_process_api_error(result);
|
||||
switch (result) {
|
||||
case 2111:
|
||||
|
|
@ -257,7 +256,7 @@ static int download_keys(unsigned char **rsapriv, size_t *rsaprivlen, unsigned c
|
|||
data = papi_find_result2(res, "publickey", PARAM_STR);
|
||||
rsapubstruct = psync_base64_decode((const unsigned char *)data->str,
|
||||
data->length, &rsapubstructlen);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
sha1hex(rsaprivstruct, rsaprivstructlen, privatesha1);
|
||||
sha1hex(rsapubstruct, rsapubstructlen, publicsha1);
|
||||
debug(D_NOTICE, "rsapubstruct=%s", rsapubstruct);
|
||||
|
|
@ -266,14 +265,14 @@ static int download_keys(unsigned char **rsapriv, size_t *rsaprivlen, unsigned c
|
|||
if (offsetof(pub_key_ver1, key) >= rsapubstructlen)
|
||||
goto def1;
|
||||
*rsapublen = rsapubstructlen - offsetof(pub_key_ver1, key);
|
||||
*rsapub = (unsigned char *)psync_malloc(*rsapublen);
|
||||
*rsapub = (unsigned char *)malloc(*rsapublen);
|
||||
memcpy(*rsapub, rsapubstruct + offsetof(pub_key_ver1, key), *rsapublen);
|
||||
break;
|
||||
default:
|
||||
def1:
|
||||
putil_wipe(rsaprivstruct, rsaprivstructlen);
|
||||
psync_free(rsaprivstruct);
|
||||
psync_free(rsapubstruct);
|
||||
free(rsaprivstruct);
|
||||
free(rsapubstruct);
|
||||
return PRINT_RETURN_CONST(PSYNC_CRYPTO_START_UNKNOWN_KEY_FORMAT);
|
||||
}
|
||||
switch (*((uint32_t *)rsaprivstruct)) {
|
||||
|
|
@ -281,10 +280,10 @@ static int download_keys(unsigned char **rsapriv, size_t *rsaprivlen, unsigned c
|
|||
if (offsetof(priv_key_ver1, key) >= rsaprivstructlen)
|
||||
goto def2;
|
||||
*rsaprivlen = rsaprivstructlen - offsetof(priv_key_ver1, key);
|
||||
*rsapriv = (unsigned char *)psync_malloc(*rsaprivlen);
|
||||
*rsapriv = (unsigned char *)malloc(*rsaprivlen);
|
||||
memcpy(*rsapriv, rsaprivstruct + offsetof(priv_key_ver1, key), *rsaprivlen);
|
||||
*saltlen = PSYNC_CRYPTO_PBKDF2_SALT_LEN;
|
||||
*salt = (unsigned char *)psync_malloc(PSYNC_CRYPTO_PBKDF2_SALT_LEN);
|
||||
*salt = (unsigned char *)malloc(PSYNC_CRYPTO_PBKDF2_SALT_LEN);
|
||||
memcpy(*salt, rsaprivstruct + offsetof(priv_key_ver1, salt),
|
||||
PSYNC_CRYPTO_PBKDF2_SALT_LEN);
|
||||
*iterations = PSYNC_CRYPTO_PASS_TO_KEY_ITERATIONS;
|
||||
|
|
@ -292,15 +291,15 @@ static int download_keys(unsigned char **rsapriv, size_t *rsaprivlen, unsigned c
|
|||
break;
|
||||
default:
|
||||
def2:
|
||||
psync_free(*rsapub);
|
||||
free(*rsapub);
|
||||
putil_wipe(rsaprivstruct, rsaprivstructlen);
|
||||
psync_free(rsaprivstruct);
|
||||
psync_free(rsapubstruct);
|
||||
free(rsaprivstruct);
|
||||
free(rsapubstruct);
|
||||
return PRINT_RETURN_CONST(PSYNC_CRYPTO_START_UNKNOWN_KEY_FORMAT);
|
||||
}
|
||||
putil_wipe(rsaprivstruct, rsaprivstructlen);
|
||||
psync_free(rsaprivstruct);
|
||||
psync_free(rsapubstruct);
|
||||
free(rsaprivstruct);
|
||||
free(rsapubstruct);
|
||||
return PSYNC_CRYPTO_START_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
@ -333,12 +332,12 @@ setup_upload(const unsigned char *rsapriv, size_t rsaprivlen,
|
|||
int ret;
|
||||
*cryptoexpires = 0;
|
||||
priv =
|
||||
(priv_key_ver1 *)psync_malloc(offsetof(priv_key_ver1, key) + rsaprivlen);
|
||||
(priv_key_ver1 *)malloc(offsetof(priv_key_ver1, key) + rsaprivlen);
|
||||
priv->type = PSYNC_CRYPTO_TYPE_RSA4096_64BYTESALT_20000IT;
|
||||
priv->flags = 0;
|
||||
memcpy(priv->salt, salt, PSYNC_CRYPTO_PBKDF2_SALT_LEN);
|
||||
memcpy(priv->key, rsapriv, rsaprivlen);
|
||||
pub = (pub_key_ver1 *)psync_malloc(offsetof(pub_key_ver1, key) + rsapublen);
|
||||
pub = (pub_key_ver1 *)malloc(offsetof(pub_key_ver1, key) + rsapublen);
|
||||
pub->type = PSYNC_CRYPTO_PUB_TYPE_RSA4096;
|
||||
pub->flags = 0;
|
||||
memcpy(pub->key, rsapub, rsapublen);
|
||||
|
|
@ -351,12 +350,12 @@ setup_upload(const unsigned char *rsapriv, size_t rsaprivlen,
|
|||
b64pub =
|
||||
psync_base64_encode((unsigned char *)pub,
|
||||
offsetof(pub_key_ver1, key) + rsapublen, &b64publen);
|
||||
psync_free(priv);
|
||||
psync_free(pub);
|
||||
free(priv);
|
||||
free(pub);
|
||||
ret = setup_do_upload(b64priv, b64privlen, b64pub,
|
||||
b64publen, hint, cryptoexpires);
|
||||
psync_free(b64priv);
|
||||
psync_free(b64pub);
|
||||
free(b64priv);
|
||||
free(b64pub);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -483,7 +482,7 @@ int pcryptofolder_get_hint(char **hint) {
|
|||
}
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (result) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_process_api_error(result);
|
||||
switch (result) {
|
||||
case 2122:
|
||||
|
|
@ -496,7 +495,7 @@ int pcryptofolder_get_hint(char **hint) {
|
|||
return PRINT_RETURN_CONST(PSYNC_CRYPTO_HINT_UNKNOWN_ERROR);
|
||||
}
|
||||
*hint = psync_strdup(papi_find_result2(res, "hint", PARAM_STR)->str);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return PSYNC_CRYPTO_HINT_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
@ -505,27 +504,27 @@ static int crypto_keys_match() {
|
|||
psync_encrypted_symmetric_key_t enckey;
|
||||
int res;
|
||||
debug(D_NOTICE, "trying encrypt/decrypt operation with loaded keys");
|
||||
key = (psync_symmetric_key_t)psync_malloc(
|
||||
key = (psync_symmetric_key_t)malloc(
|
||||
offsetof(psync_symmetric_key_struct_t, key) + 64);
|
||||
key->keylen = 64;
|
||||
pssl_rand_strong(key->key, key->keylen);
|
||||
enckey = psymkey_encrypt(crypto_pubkey, key);
|
||||
if (enckey == PSYNC_INVALID_ENC_SYM_KEY) {
|
||||
psync_free(key);
|
||||
free(key);
|
||||
return 0;
|
||||
}
|
||||
|
||||
deckey = prsa_decrypt_symm_key_lock(&crypto_privkey, &enckey);
|
||||
|
||||
psync_free(enckey);
|
||||
free(enckey);
|
||||
if (deckey == PSYNC_INVALID_SYM_KEY) {
|
||||
psync_free(key);
|
||||
free(key);
|
||||
return 0;
|
||||
}
|
||||
res = key->keylen == deckey->keylen &&
|
||||
!memcmp(key->key, deckey->key, key->keylen);
|
||||
psymkey_free(deckey);
|
||||
psync_free(key);
|
||||
free(key);
|
||||
if (res)
|
||||
debug(D_NOTICE, "encrypt/decrypt operation succeeded");
|
||||
return res;
|
||||
|
|
@ -595,9 +594,9 @@ int pcryptofolder_unlock(const char *password) {
|
|||
debug(D_BUG,
|
||||
"only some of records found in the database, should not happen");
|
||||
putil_wipe(rsapriv, rsaprivlen);
|
||||
psync_free(rsapriv);
|
||||
psync_free(rsapub);
|
||||
psync_free(salt);
|
||||
free(rsapriv);
|
||||
free(rsapub);
|
||||
free(salt);
|
||||
}
|
||||
ret = download_keys(
|
||||
&rsapriv, &rsaprivlen, &rsapub, &rsapublen, &salt, &saltlen,
|
||||
|
|
@ -619,10 +618,10 @@ int pcryptofolder_unlock(const char *password) {
|
|||
pthread_rwlock_unlock(&crypto_lock);
|
||||
debug(D_WARNING, "could not load public key");
|
||||
putil_wipe(rsapriv, rsaprivlen);
|
||||
psync_free(rsapriv);
|
||||
psync_free(rsapub);
|
||||
free(rsapriv);
|
||||
free(rsapub);
|
||||
putil_wipe(salt, saltlen);
|
||||
psync_free(salt);
|
||||
free(salt);
|
||||
return PRINT_RETURN_CONST(PSYNC_CRYPTO_START_UNKNOWN_KEY_FORMAT);
|
||||
}
|
||||
debug(D_NOTICE, "successfully loaded public key");
|
||||
|
|
@ -631,7 +630,7 @@ int pcryptofolder_unlock(const char *password) {
|
|||
aeskey = psymkey_generate(password, PSYNC_AES256_KEY_SIZE + PSYNC_AES256_BLOCK_SIZE, salt, saltlen, iterations);
|
||||
enc = pcrypto_ctr_encdec_create(aeskey);
|
||||
psymkey_free(aeskey);
|
||||
rsaprivdec = (unsigned char *)pmemlock_malloc(rsaprivlen);
|
||||
rsaprivdec = (unsigned char *)malloc(rsaprivlen);
|
||||
memcpy(rsaprivdec, rsapriv, rsaprivlen);
|
||||
pcrypto_ctr_encdec_decode(enc, rsaprivdec, rsaprivlen, 0);
|
||||
pcrypto_ctr_encdec_free(enc);
|
||||
|
|
@ -641,17 +640,17 @@ int pcryptofolder_unlock(const char *password) {
|
|||
debug(D_NOTICE, "trying to load private key");
|
||||
crypto_privkey = prsa_load_private(rsaprivdec, rsaprivlen);
|
||||
putil_wipe(rsaprivdec, rsaprivlen);
|
||||
pmemlock_free(rsaprivdec);
|
||||
free(rsaprivdec);
|
||||
if (crypto_privkey == PSYNC_INVALID_RSA) {
|
||||
debug(D_NOTICE, "failed to load private key");
|
||||
prsa_free_public(crypto_pubkey);
|
||||
crypto_pubkey = PSYNC_INVALID_RSA;
|
||||
pthread_rwlock_unlock(&crypto_lock);
|
||||
putil_wipe(rsapriv, rsaprivlen);
|
||||
psync_free(rsapriv);
|
||||
psync_free(rsapub);
|
||||
free(rsapriv);
|
||||
free(rsapub);
|
||||
putil_wipe(salt, saltlen);
|
||||
psync_free(salt);
|
||||
free(salt);
|
||||
return PRINT_RETURN_CONST(PSYNC_CRYPTO_START_BAD_PASSWORD);
|
||||
}
|
||||
debug(D_NOTICE, "successfully loaded private key");
|
||||
|
|
@ -665,10 +664,10 @@ int pcryptofolder_unlock(const char *password) {
|
|||
pthread_rwlock_unlock(&crypto_lock);
|
||||
debug(D_ERROR, "keys don't match");
|
||||
putil_wipe(rsapriv, rsaprivlen);
|
||||
psync_free(rsapriv);
|
||||
psync_free(rsapub);
|
||||
free(rsapriv);
|
||||
free(rsapub);
|
||||
putil_wipe(salt, saltlen);
|
||||
psync_free(salt);
|
||||
free(salt);
|
||||
return PRINT_RETURN_CONST(PSYNC_CRYPTO_START_KEYS_DONT_MATCH);
|
||||
}
|
||||
debug(D_NOTICE, "public and private keys match, setting crypto started");
|
||||
|
|
@ -683,10 +682,10 @@ int pcryptofolder_unlock(const char *password) {
|
|||
publicsha1, privatesha1, flags);
|
||||
}
|
||||
putil_wipe(rsapriv, rsaprivlen);
|
||||
psync_free(rsapriv);
|
||||
psync_free(rsapub);
|
||||
free(rsapriv);
|
||||
free(rsapub);
|
||||
putil_wipe(salt, saltlen);
|
||||
psync_free(salt);
|
||||
free(salt);
|
||||
debug(D_NOTICE, "crypto successfully started");
|
||||
return PSYNC_CRYPTO_START_SUCCESS;
|
||||
}
|
||||
|
|
@ -699,7 +698,7 @@ static void psync_fs_refresh_crypto_folders() {
|
|||
psync_fs_refresh_folder(*fid);
|
||||
fid++;
|
||||
}
|
||||
psync_free(fids);
|
||||
free(fids);
|
||||
}
|
||||
|
||||
int pcryptofolder_lock() {
|
||||
|
|
@ -754,7 +753,7 @@ int pcryptofolder_reset() {
|
|||
}
|
||||
}
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (result)
|
||||
debug(D_WARNING, "crypto_reset returned error %u", (unsigned)result);
|
||||
if (result == 0)
|
||||
|
|
@ -847,7 +846,7 @@ static psync_encrypted_symmetric_key_t download_fldr_enckey(psync_folderid_t fol
|
|||
(unsigned long)result);
|
||||
crypto_api_errno = result;
|
||||
set_crypto_err_msg(res);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_process_api_error(result);
|
||||
return (psync_encrypted_symmetric_key_t)errptr(
|
||||
PRINT_RETURN_CONST(PSYNC_CRYPTO_API_ERR_INTERNAL));
|
||||
|
|
@ -855,13 +854,13 @@ static psync_encrypted_symmetric_key_t download_fldr_enckey(psync_folderid_t fol
|
|||
b64key = papi_find_result2(res, "key", PARAM_STR);
|
||||
key = psync_base64_decode((const unsigned char *)b64key->str, b64key->length,
|
||||
&keylen);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (!key)
|
||||
return (psync_encrypted_symmetric_key_t)errptr(
|
||||
PRINT_RETURN_CONST(PSYNC_CRYPTO_INVALID_KEY));
|
||||
ret = psymkey_alloc_encrypted(keylen);
|
||||
memcpy(ret->data, key, keylen);
|
||||
psync_free(key);
|
||||
free(key);
|
||||
save_folder_key(folderid, ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -900,7 +899,7 @@ static psync_encrypted_symmetric_key_t download_file_enckey(psync_fileid_t filei
|
|||
(unsigned long)result);
|
||||
crypto_api_errno = result;
|
||||
set_crypto_err_msg(res);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return (psync_encrypted_symmetric_key_t)errptr(
|
||||
PRINT_RETURN_CONST(PSYNC_CRYPTO_API_ERR_INTERNAL));
|
||||
}
|
||||
|
|
@ -908,13 +907,13 @@ static psync_encrypted_symmetric_key_t download_file_enckey(psync_fileid_t filei
|
|||
b64key = papi_find_result2(res, "key", PARAM_STR);
|
||||
key = psync_base64_decode((const unsigned char *)b64key->str, b64key->length,
|
||||
&keylen);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (!key)
|
||||
return (psync_encrypted_symmetric_key_t)errptr(
|
||||
PRINT_RETURN_CONST(PSYNC_CRYPTO_INVALID_KEY));
|
||||
ret = psymkey_alloc_encrypted(keylen);
|
||||
memcpy(ret->data, key, keylen);
|
||||
psync_free(key);
|
||||
free(key);
|
||||
save_file_key_to_db(fileid, result, ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -981,7 +980,7 @@ static psync_symmetric_key_t get_fldr_symkey_safe(psync_folderid_t folderid) {
|
|||
|
||||
symkey = prsa_decrypt_symm_key_lock(&crypto_privkey, &enckey);
|
||||
|
||||
psync_free(enckey);
|
||||
free(enckey);
|
||||
if (symkey == PSYNC_INVALID_SYM_KEY)
|
||||
return (psync_symmetric_key_t)errptr(
|
||||
PRINT_RETURN_CONST(PSYNC_CRYPTO_INVALID_KEY));
|
||||
|
|
@ -1009,7 +1008,7 @@ static psync_symmetric_key_t get_file_symkey_safe(psync_fileid_t fileid, uint64_
|
|||
|
||||
symkey = prsa_decrypt_symm_key_lock(&crypto_privkey, &enckey);
|
||||
|
||||
psync_free(enckey);
|
||||
free(enckey);
|
||||
if (unlikely_log(symkey == PSYNC_INVALID_SYM_KEY))
|
||||
return (psync_symmetric_key_t)errptr(
|
||||
PRINT_RETURN_CONST(PSYNC_CRYPTO_INVALID_KEY));
|
||||
|
|
@ -1040,7 +1039,7 @@ static void psync_crypto_release_file_symkey_locked(psync_fileid_t fileid,
|
|||
|
||||
static psync_symmetric_key_t symkeyv1_to_symkey(sym_key_ver1 *v1) {
|
||||
psync_symmetric_key_t key;
|
||||
key = (psync_symmetric_key_t)pmemlock_malloc(
|
||||
key = (psync_symmetric_key_t)malloc(
|
||||
offsetof(psync_symmetric_key_struct_t, key) + PSYNC_AES256_KEY_SIZE +
|
||||
PSYNC_CRYPTO_HMAC_SHA512_KEY_LEN);
|
||||
key->keylen = PSYNC_AES256_KEY_SIZE + PSYNC_CRYPTO_HMAC_SHA512_KEY_LEN;
|
||||
|
|
@ -1148,7 +1147,7 @@ static pcrypto_textenc_t get_tmp_fldrencoder_safe(psync_fsfolderid_t folderid) {
|
|||
psync_sql_free_result(res);
|
||||
if (enckey) {
|
||||
symkey = prsa_decrypt_data(crypto_privkey, enckey, enckeylen);
|
||||
psync_free(enckey);
|
||||
free(enckey);
|
||||
} else
|
||||
symkey = PSYNC_INVALID_SYM_KEY;
|
||||
} else {
|
||||
|
|
@ -1205,7 +1204,7 @@ static pcrypto_textdec_t get_tmp_fldrdecoder_safe(psync_fsfolderid_t folderid) {
|
|||
if (enckey) {
|
||||
symkey = prsa_decrypt_data(crypto_privkey, enckey, enckeylen);
|
||||
|
||||
psync_free(enckey);
|
||||
free(enckey);
|
||||
if (symkey == PSYNC_INVALID_SYM_KEY)
|
||||
debug(D_WARNING, "got key from database that fails rsa decrypt");
|
||||
} else {
|
||||
|
|
@ -1296,7 +1295,7 @@ char *pcryptofolder_flddecode_filename(pcrypto_textdec_t decoder,
|
|||
return NULL;
|
||||
filenamedec =
|
||||
pcrypto_decode_text(decoder, filenameenc, filenameenclen);
|
||||
psync_free(filenameenc);
|
||||
free(filenameenc);
|
||||
return (char *)filenamedec;
|
||||
}
|
||||
|
||||
|
|
@ -1362,7 +1361,7 @@ char * pcryptofolder_fldencode_filename(pcrypto_textenc_t encoder,
|
|||
strlen(name), &filenameenc, &filenameenclen);
|
||||
filenameb32 =
|
||||
psync_base32_encode(filenameenc, filenameenclen, &filenameenclen);
|
||||
psync_free(filenameenc);
|
||||
free(filenameenc);
|
||||
return (char *)filenameb32;
|
||||
}
|
||||
|
||||
|
|
@ -1434,7 +1433,7 @@ static pcrypto_sector_encdec_t get_fileencoder_tmp(psync_fsfileid_t fileid,
|
|||
if (enckey) {
|
||||
symkey = prsa_decrypt_data(crypto_privkey, enckey, enckeylen);
|
||||
|
||||
psync_free(enckey);
|
||||
free(enckey);
|
||||
} else
|
||||
symkey = PSYNC_INVALID_SYM_KEY;
|
||||
if (symkey == PSYNC_INVALID_SYM_KEY)
|
||||
|
|
@ -1519,7 +1518,7 @@ pcrypto_sector_encdec_t pcryptofolder_filencoder_from_binresult(psync_fileid_t f
|
|||
PRINT_RETURN_CONST(PSYNC_CRYPTO_INVALID_KEY));
|
||||
esym = psymkey_alloc_encrypted(keylen);
|
||||
memcpy(esym->data, key, keylen);
|
||||
psync_free(key);
|
||||
free(key);
|
||||
hash = papi_find_result2(res, "hash", PARAM_NUM)->num;
|
||||
save_file_key_to_db(fileid, hash, esym);
|
||||
pthread_rwlock_rdlock(&crypto_lock);
|
||||
|
|
@ -1536,7 +1535,7 @@ pcrypto_sector_encdec_t pcryptofolder_filencoder_from_binresult(psync_fileid_t f
|
|||
enc = get_fileencoder(fileid, hash, 0);
|
||||
}
|
||||
pthread_rwlock_unlock(&crypto_lock);
|
||||
psync_free(esym);
|
||||
free(esym);
|
||||
return enc;
|
||||
}
|
||||
|
||||
|
|
@ -1570,7 +1569,7 @@ static char *get_name_encoded(psync_folderid_t folderid,
|
|||
strlen(name), &nameenc, &nameenclen);
|
||||
ret = (char *)psync_base32_encode(nameenc, nameenclen, &nameenclen);
|
||||
free_direncoder(folderid, enc);
|
||||
psync_free(nameenc);
|
||||
free(nameenc);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1663,7 +1662,7 @@ int psync_cloud_crypto_send_mkdir(psync_folderid_t folderid, const char *name,
|
|||
set_crypto_err_msg(res);
|
||||
debug(D_NOTICE, "createfolder returned error %lu %s", (unsigned long)result,
|
||||
crypto_api_err);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
*err = crypto_api_err;
|
||||
psync_process_api_error(result);
|
||||
return result;
|
||||
|
|
@ -1676,7 +1675,7 @@ int psync_cloud_crypto_send_mkdir(psync_folderid_t folderid, const char *name,
|
|||
save_folder_key(papi_find_result2(meta, "folderid", PARAM_NUM)->num,
|
||||
encsym);
|
||||
psync_sql_commit_transaction();
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return PSYNC_CRYPTO_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
@ -1690,7 +1689,7 @@ char *pcryptofolder_filencoder_key_get(psync_fsfileid_t fileid,
|
|||
if (is_err(encsym))
|
||||
return (char *)encsym;
|
||||
ret = (char *)psync_base64_encode(encsym->data, encsym->datalen, keylen);
|
||||
psync_free(encsym);
|
||||
free(encsym);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1718,7 +1717,7 @@ char *pcryptofolder_filencoder_key_new(uint32_t flags, size_t *keylen) {
|
|||
}
|
||||
putil_wipe(&sym, sizeof(sym));
|
||||
ret = (char *)psync_base64_encode(encsym->data, encsym->datalen, keylen);
|
||||
psync_free(encsym);
|
||||
free(encsym);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1748,7 +1747,7 @@ char *pcryptofolder_filencoder_key_newplain(
|
|||
*deckey = symkeyv1_to_symkey(&sym);
|
||||
putil_wipe(&sym, sizeof(sym));
|
||||
ret = (char *)psync_base64_encode(encsym->data, encsym->datalen, keylen);
|
||||
psync_free(encsym);
|
||||
free(encsym);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1779,20 +1778,20 @@ int pcryptofolder_mkdir(psync_folderid_t folderid, const char *name,
|
|||
pthread_rwlock_unlock(&crypto_lock);
|
||||
if (ret) {
|
||||
if (encsym != PSYNC_INVALID_ENC_SYM_KEY)
|
||||
psync_free(encsym);
|
||||
free(encsym);
|
||||
return ret;
|
||||
}
|
||||
if (encsym == PSYNC_INVALID_ENC_SYM_KEY) {
|
||||
psync_free(ename);
|
||||
free(ename);
|
||||
debug(D_ERROR, "RSA encryption failed");
|
||||
return set_err(PRINT_RETURN_CONST(PSYNC_CRYPTO_RSA_ERROR), err);
|
||||
}
|
||||
b64encsym = psync_base64_encode(encsym->data, encsym->datalen, &b64encsymlen);
|
||||
ret = psync_cloud_crypto_send_mkdir(folderid, ename, err, (char *)b64encsym,
|
||||
b64encsymlen, encsym, newfolderid);
|
||||
psync_free(encsym);
|
||||
psync_free(ename);
|
||||
psync_free(b64encsym);
|
||||
free(encsym);
|
||||
free(ename);
|
||||
free(b64encsym);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1843,7 +1842,7 @@ int psync_pcloud_crypto_reencode_key(
|
|||
psymkey_free(aeskey);
|
||||
if (unlikely(enc == PSYNC_CRYPTO_INVALID_ENCODER))
|
||||
goto err_nm_1;
|
||||
rsaprivdec = (unsigned char *)psync_malloc(rsaprivlen);
|
||||
rsaprivdec = (unsigned char *)malloc(rsaprivlen);
|
||||
if (unlikely(!rsaprivdec)) {
|
||||
pcrypto_ctr_encdec_free(enc);
|
||||
goto err_nm_1;
|
||||
|
|
@ -1852,7 +1851,7 @@ int psync_pcloud_crypto_reencode_key(
|
|||
pcrypto_ctr_encdec_decode(enc, rsaprivdec, rsaprivlen,
|
||||
0);
|
||||
pcrypto_ctr_encdec_free(enc);
|
||||
newpriv = (unsigned char *)psync_malloc(offsetof(priv_key_ver1, key) +
|
||||
newpriv = (unsigned char *)malloc(offsetof(priv_key_ver1, key) +
|
||||
rsaprivlen);
|
||||
if (unlikely(!newpriv))
|
||||
goto err_nm_1;
|
||||
|
|
@ -1877,7 +1876,7 @@ int psync_pcloud_crypto_reencode_key(
|
|||
newprivlen = offsetof(priv_key_ver1, key) + rsaprivlen;
|
||||
priv = prsa_load_private(rsaprivdec, rsaprivlen);
|
||||
putil_wipe(rsaprivdec, rsaprivlen);
|
||||
psync_free(rsaprivdec);
|
||||
free(rsaprivdec);
|
||||
if (unlikely(priv == PSYNC_INVALID_RSA))
|
||||
goto err_ph_1;
|
||||
break;
|
||||
|
|
@ -1891,21 +1890,21 @@ int psync_pcloud_crypto_reencode_key(
|
|||
psync_sha256(newpriv, newprivlen, newprivsha);
|
||||
rsasign = prsa_sign_sha256_hash(priv, newprivsha);
|
||||
if (is_err(rsasign)) {
|
||||
psync_free(is_err);
|
||||
free(rsasign);
|
||||
prsa_free_public(pub);
|
||||
prsa_free_private(priv);
|
||||
return to_err(rsasign);
|
||||
}
|
||||
*privenc = (char *)psync_base64_encode(newpriv, newprivlen, &dummy);
|
||||
*sign = (char *)psync_base64_encode(rsasign->data, rsasign->datalen, &dummy);
|
||||
psync_free(rsasign);
|
||||
psync_free(newpriv);
|
||||
free(rsasign);
|
||||
free(newpriv);
|
||||
prsa_free_public(pub);
|
||||
prsa_free_private(priv);
|
||||
|
||||
if (!*privenc || !*sign) {
|
||||
psync_free(*privenc);
|
||||
psync_free(*sign);
|
||||
free(*privenc);
|
||||
free(*sign);
|
||||
return PERROR_NO_MEMORY;
|
||||
}
|
||||
|
||||
|
|
@ -1915,13 +1914,13 @@ err_bk_1:
|
|||
err_bk_0:
|
||||
return PSYNC_CRYPTO_BAD_KEY;
|
||||
err_nm_1:
|
||||
psync_free(newpriv);
|
||||
free(newpriv);
|
||||
prsa_free_public(pub);
|
||||
return PERROR_NO_MEMORY;
|
||||
err_ph_2:
|
||||
prsa_free_private(priv);
|
||||
err_ph_1:
|
||||
psync_free(newpriv);
|
||||
free(newpriv);
|
||||
prsa_free_public(pub);
|
||||
return PSYNC_CRYPTO_BAD_PASSPHRASE;
|
||||
}
|
||||
|
|
@ -1941,7 +1940,7 @@ int psync_pcloud_crypto_encode_key(const char *newpassphrase, uint32_t flags,
|
|||
goto err_nm_0;
|
||||
rsaprivlen = rsapriv->datalen;
|
||||
newpriv =
|
||||
(unsigned char *)psync_malloc(offsetof(priv_key_ver1, key) + rsaprivlen);
|
||||
(unsigned char *)malloc(offsetof(priv_key_ver1, key) + rsaprivlen);
|
||||
if (unlikely(!newpriv))
|
||||
goto err_nm_1;
|
||||
rsapriv_struct = (priv_key_ver1 *)newpriv;
|
||||
|
|
@ -1967,27 +1966,27 @@ int psync_pcloud_crypto_encode_key(const char *newpassphrase, uint32_t flags,
|
|||
rsasign = prsa_sign_sha256_hash(crypto_privkey, newprivsha);
|
||||
if (is_err(rsasign)) {
|
||||
putil_wipe(newpriv, rsaprivlen);
|
||||
psync_free(newpriv);
|
||||
free(newpriv);
|
||||
prsa_free_binary(rsapriv);
|
||||
return to_err(rsasign);
|
||||
}
|
||||
*privenc = (char *)psync_base64_encode(newpriv, rsaprivlen, &dummy);
|
||||
*sign = (char *)psync_base64_encode(rsasign->data, rsasign->datalen, &dummy);
|
||||
psync_free(rsasign);
|
||||
free(rsasign);
|
||||
putil_wipe(newpriv, rsaprivlen);
|
||||
psync_free(newpriv);
|
||||
free(newpriv);
|
||||
prsa_free_binary(rsapriv);
|
||||
|
||||
if (!*privenc || !*sign) {
|
||||
psync_free(*privenc);
|
||||
psync_free(*sign);
|
||||
free(*privenc);
|
||||
free(*sign);
|
||||
return PERROR_NO_MEMORY;
|
||||
}
|
||||
|
||||
return PSYNC_CRYPTO_SUCCESS;
|
||||
|
||||
err_nm_1:
|
||||
psync_free(newpriv);
|
||||
free(newpriv);
|
||||
prsa_free_binary(rsapriv);
|
||||
err_nm_0:
|
||||
return PERROR_NO_MEMORY;
|
||||
|
|
@ -2026,21 +2025,21 @@ int pcryptofolder_change_pass(const char *oldpassphrase,
|
|||
rowcnt++;
|
||||
if (!strcmp(id, "crypto_private_key")) {
|
||||
load_str_to(&row[1], &privkey, &privkeylen);
|
||||
privatekey_struct = (priv_key_ver1 *)psync_malloc(
|
||||
privatekey_struct = (priv_key_ver1 *)malloc(
|
||||
offsetof(priv_key_ver1, key) + privkeylen);
|
||||
memset(privatekey_struct, 0, offsetof(priv_key_ver1, key) + privkeylen);
|
||||
memcpy(privatekey_struct->key, privkey, privkeylen);
|
||||
privatekey_struct->type = PSYNC_CRYPTO_TYPE_RSA4096_64BYTESALT_20000IT;
|
||||
putil_wipe(privkey, privkeylen);
|
||||
psync_free(privkey);
|
||||
free(privkey);
|
||||
} else if (!strcmp(id, "crypto_public_key")) {
|
||||
load_str_to(&row[1], &pubkey, &pubkeylen);
|
||||
pubkey_struct = (pub_key_ver1 *)psync_malloc(
|
||||
pubkey_struct = (pub_key_ver1 *)malloc(
|
||||
offsetof(pub_key_ver1, key) + pubkeylen);
|
||||
memset(pubkey_struct, 0, offsetof(pub_key_ver1, key) + pubkeylen);
|
||||
memcpy(pubkey_struct->key, pubkey, pubkeylen);
|
||||
pubkey_struct->type = PSYNC_CRYPTO_PUB_TYPE_RSA4096;
|
||||
psync_free(pubkey);
|
||||
free(pubkey);
|
||||
} else if (!strcmp(id, "crypto_private_salt")) {
|
||||
load_str_to(&row[1], &salt, &saltlen);
|
||||
if (!privatekey_struct) {
|
||||
|
|
@ -2050,15 +2049,15 @@ int pcryptofolder_change_pass(const char *oldpassphrase,
|
|||
}
|
||||
memcpy(privatekey_struct->salt, salt, saltlen);
|
||||
putil_wipe(salt, saltlen);
|
||||
psync_free(salt);
|
||||
free(salt);
|
||||
}
|
||||
}
|
||||
psync_sql_free_result(res);
|
||||
}
|
||||
psync_sql_unlock();
|
||||
if (rowcnt < 3) {
|
||||
psync_free(privatekey_struct);
|
||||
psync_free(pubkey_struct);
|
||||
free(privatekey_struct);
|
||||
free(pubkey_struct);
|
||||
if (!psync_my_auth[0])
|
||||
return PERROR_NET_ERROR;
|
||||
debug(D_NOTICE, "downloading keys");
|
||||
|
|
@ -2071,7 +2070,7 @@ int pcryptofolder_change_pass(const char *oldpassphrase,
|
|||
if (unlikely(result)) {
|
||||
debug(D_WARNING, "crypto_getuserkeys returned error %d: %s", (int)result,
|
||||
papi_find_result2(bres, "error", PARAM_STR)->str);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
cres = (int)result;
|
||||
goto ex;
|
||||
}
|
||||
|
|
@ -2085,10 +2084,10 @@ int pcryptofolder_change_pass(const char *oldpassphrase,
|
|||
data = papi_find_result2(bres, "salt", PARAM_STR);
|
||||
salt = psync_base64_decode((const unsigned char *)data->str, data->length,
|
||||
&saltlen);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
if (unlikely(!privkey || !pubkey)) {
|
||||
psync_free(privkey);
|
||||
psync_free(pubkey);
|
||||
free(privkey);
|
||||
free(pubkey);
|
||||
cres = PERROR_NO_MEMORY;
|
||||
goto ex;
|
||||
}
|
||||
|
|
@ -2096,11 +2095,11 @@ int pcryptofolder_change_pass(const char *oldpassphrase,
|
|||
cres = psync_pcloud_crypto_reencode_key(
|
||||
pubkey, pubkeylen, privkey, privkeylen, oldpassphrase, newpassphrase,
|
||||
flags, privenc, sign);
|
||||
psync_free(pubkey);
|
||||
free(pubkey);
|
||||
putil_wipe(privkey, privkeylen);
|
||||
psync_free(privkey);
|
||||
free(privkey);
|
||||
putil_wipe(salt, saltlen);
|
||||
psync_free(salt);
|
||||
free(salt);
|
||||
if (cres)
|
||||
goto ex;
|
||||
} else {
|
||||
|
|
@ -2111,8 +2110,8 @@ int pcryptofolder_change_pass(const char *oldpassphrase,
|
|||
privkeylen + offsetof(priv_key_ver1, key), oldpassphrase, newpassphrase,
|
||||
flags, privenc, sign);
|
||||
putil_wipe(privatekey_struct, privkeylen + offsetof(priv_key_ver1, key));
|
||||
psync_free(privatekey_struct);
|
||||
psync_free(pubkey_struct);
|
||||
free(privatekey_struct);
|
||||
free(pubkey_struct);
|
||||
if (cres)
|
||||
goto ex;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ psync_deflate_t *pdeflate_init(int level) {
|
|||
if (likely_log(ret == Z_OK))
|
||||
return def;
|
||||
else {
|
||||
psync_free(def);
|
||||
free(def);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
|
@ -81,8 +81,8 @@ void pdeflate_destroy(psync_deflate_t *def) {
|
|||
deflateEnd(&def->stream);
|
||||
else
|
||||
inflateEnd(&def->stream);
|
||||
psync_free(def->flushbuff);
|
||||
psync_free(def);
|
||||
free(def->flushbuff);
|
||||
free(def);
|
||||
}
|
||||
|
||||
static int psync_deflate_set_out_buff(psync_deflate_t *def) {
|
||||
|
|
@ -150,7 +150,7 @@ static int psync_deflate_finish_flush_add_buffer(psync_deflate_t *def,
|
|||
if (ret != Z_BUF_ERROR)
|
||||
return ret;
|
||||
if (used == 0) {
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
return Z_OK;
|
||||
}
|
||||
def->flushbuff = buff;
|
||||
|
|
@ -168,7 +168,7 @@ static int psync_deflate_finish_flush_add_buffer(psync_deflate_t *def,
|
|||
}
|
||||
used += current;
|
||||
alloced *= 2;
|
||||
buff = (unsigned char *)psync_realloc(buff, alloced);
|
||||
buff = (unsigned char *)realloc(buff, alloced);
|
||||
current = alloced - used;
|
||||
}
|
||||
}
|
||||
|
|
@ -212,7 +212,7 @@ int pdeflate_read(psync_deflate_t *def, void *data, int len) {
|
|||
memcpy(data, def->flushbuff + def->flushbuffoff, len);
|
||||
def->flushbuffoff += len;
|
||||
if (def->flushbuffoff == def->flushbufflen) {
|
||||
psync_free(def->flushbuff);
|
||||
free(def->flushbuff);
|
||||
def->flushbuff = NULL;
|
||||
}
|
||||
return len;
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ char *pdevice_id() {
|
|||
path =
|
||||
psync_strcat("/sys/class/power_supply/", de->d_name, "/type", NULL);
|
||||
fd = open(path, O_RDONLY);
|
||||
psync_free(path);
|
||||
free(path);
|
||||
if (fd == -1)
|
||||
continue;
|
||||
if (read(fd, buf, 7) == 7 && !memcmp(buf, "Battery", 7)) {
|
||||
|
|
|
|||
126
pclsync/pdiff.c
126
pclsync/pdiff.c
|
|
@ -176,7 +176,7 @@ static void psync_notify_cache_change(psync_changetype_t event) {
|
|||
if (callback)
|
||||
prun_thread1("cache start callback", callback, chtype);
|
||||
else
|
||||
psync_free(chtype);
|
||||
free(chtype);
|
||||
}
|
||||
|
||||
static binresult *get_userinfo_user_digest(psock_t *sock, const char *username,
|
||||
|
|
@ -220,7 +220,7 @@ static binresult *get_userinfo_user_pass(psock_t *sock, const char *username,
|
|||
return res;
|
||||
|
||||
if (papi_find_result2(res, "result", PARAM_NUM)->num != 0) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
@ -235,7 +235,7 @@ static binresult *get_userinfo_user_pass(psock_t *sock, const char *username,
|
|||
uc[i] = tolower(username[i]);
|
||||
|
||||
psync_sha1(uc, ul, sha1bin);
|
||||
psync_free(uc);
|
||||
free(uc);
|
||||
psync_binhex(sha1hex, sha1bin, PSYNC_SHA1_DIGEST_LEN);
|
||||
psync_sha1_init(&ctx);
|
||||
psync_sha1_update(&ctx, password, strlen(password));
|
||||
|
|
@ -248,7 +248,7 @@ static binresult *get_userinfo_user_pass(psock_t *sock, const char *username,
|
|||
dig->length, osversion, appversion, deviceid,
|
||||
devicestring);
|
||||
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -259,10 +259,10 @@ static int check_active_subscribtion(const binresult *res) {
|
|||
if (sub) {
|
||||
status = psync_strdup(papi_find_result2(sub, "status", PARAM_STR)->str);
|
||||
if (!strcmp(status, "active")) {
|
||||
psync_free(status);
|
||||
free(status);
|
||||
return 1;
|
||||
}
|
||||
psync_free(status);
|
||||
free(status);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
@ -284,14 +284,14 @@ static int check_user_relocated(uint64_t luserid, psock_t *sock) {
|
|||
debug(D_NOTICE, "getolduserids returned error %lu %s",
|
||||
(unsigned long)result,
|
||||
papi_find_result2(res, "error", PARAM_STR)->str);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return 0;
|
||||
}
|
||||
|
||||
userids = papi_find_result2(res, "userids", PARAM_ARRAY);
|
||||
cnt = userids->length;
|
||||
if (!cnt) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -321,7 +321,7 @@ static psock_t *get_connected_socket() {
|
|||
int saveauth, isbusiness, cryptosetup, digest, lid, isFirstLogin;
|
||||
|
||||
digest = 1;
|
||||
psync_free(psync_my_2fa_token);
|
||||
free(psync_my_2fa_token);
|
||||
auth = user = pass = psync_my_2fa_token = NULL;
|
||||
psync_is_business = 0;
|
||||
deviceid = psync_sql_cellstr("SELECT value FROM setting WHERE id='deviceid'");
|
||||
|
|
@ -346,9 +346,9 @@ static psock_t *get_connected_socket() {
|
|||
devicestring = pdevice_name();
|
||||
|
||||
while (1) {
|
||||
psync_free(auth);
|
||||
psync_free(user);
|
||||
psync_free(pass);
|
||||
free(auth);
|
||||
free(user);
|
||||
free(pass);
|
||||
pstatus_wait(PSTATUS_TYPE_RUN, PSTATUS_RUN_RUN | PSTATUS_RUN_PAUSE);
|
||||
|
||||
auth = psync_sql_cellstr("SELECT value FROM setting WHERE id='auth'");
|
||||
|
|
@ -449,7 +449,7 @@ static psock_t *get_connected_socket() {
|
|||
res = papi_send2(sock, "userinfo", params);
|
||||
}
|
||||
|
||||
psync_free(osversion);
|
||||
free(osversion);
|
||||
|
||||
if (unlikely_log(!res)) {
|
||||
psock_close(sock);
|
||||
|
|
@ -467,7 +467,7 @@ static psock_t *get_connected_socket() {
|
|||
papi_find_result2(res, "error", PARAM_STR)->str);
|
||||
// here we only handle statuses that need to access the result
|
||||
if (result == 2297) {
|
||||
psync_free(psync_my_2fa_token);
|
||||
free(psync_my_2fa_token);
|
||||
psync_my_2fa_token =
|
||||
psync_strdup(papi_find_result2(res, "token", PARAM_STR)->str);
|
||||
psync_my_2fa_has_devices =
|
||||
|
|
@ -478,18 +478,18 @@ static psock_t *get_connected_socket() {
|
|||
pstatus_set(PSTATUS_TYPE_AUTH, PSTATUS_AUTH_TFAREQ);
|
||||
pstatus_wait(PSTATUS_TYPE_AUTH, PSTATUS_AUTH_PROVIDED);
|
||||
psock_close(sock);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (result == 2306) {
|
||||
psync_free(psync_my_verify_token);
|
||||
free(psync_my_verify_token);
|
||||
psync_my_verify_token =
|
||||
psync_strdup(papi_find_result2(res, "verifytoken", PARAM_STR)->str);
|
||||
pstatus_set(PSTATUS_TYPE_AUTH, PSTATUS_AUTH_VERIFYREQ);
|
||||
pstatus_wait(PSTATUS_TYPE_AUTH, PSTATUS_AUTH_PROVIDED);
|
||||
psock_close(sock);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -504,7 +504,7 @@ static psock_t *get_connected_socket() {
|
|||
}
|
||||
|
||||
psock_close(sock);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -513,12 +513,12 @@ static psock_t *get_connected_socket() {
|
|||
pstatus_set(PSTATUS_TYPE_AUTH, PSTATUS_AUTH_RELOCATING);
|
||||
pstatus_wait(PSTATUS_TYPE_AUTH, PSTATUS_AUTH_PROVIDED);
|
||||
psock_close(sock);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
continue;
|
||||
}
|
||||
|
||||
psock_close(sock);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
|
||||
if (result == 2000 || result == 2012 || result == 2064 ||
|
||||
result == 2074 || result == 2092) {
|
||||
|
|
@ -537,7 +537,7 @@ static psock_t *get_connected_socket() {
|
|||
continue;
|
||||
} else {
|
||||
pstatus_set(PSTATUS_TYPE_AUTH, PSTATUS_AUTH_BADLOGIN);
|
||||
psync_free(psync_my_pass);
|
||||
free(psync_my_pass);
|
||||
psync_my_pass = NULL;
|
||||
}
|
||||
} else {
|
||||
|
|
@ -587,7 +587,7 @@ static psock_t *get_connected_socket() {
|
|||
}
|
||||
psync_sql_rollback_transaction();
|
||||
psock_close(sock);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
pstatus_wait(PSTATUS_TYPE_AUTH, PSTATUS_AUTH_PROVIDED);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -677,7 +677,7 @@ static psock_t *get_connected_socket() {
|
|||
if (pstatus_get(PSTATUS_TYPE_AUTH) != PSTATUS_AUTH_PROVIDED) {
|
||||
psync_sql_rollback_transaction();
|
||||
psock_close(sock);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
pstatus_wait(PSTATUS_TYPE_AUTH, PSTATUS_AUTH_PROVIDED);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -725,8 +725,8 @@ static psock_t *get_connected_socket() {
|
|||
strcmp(privatesha1,
|
||||
papi_find_result2(res, "privatesha1", PARAM_STR)->str))
|
||||
psync_delete_cached_crypto_keys();
|
||||
psync_free(privatesha1);
|
||||
psync_free(publicsha1);
|
||||
free(privatesha1);
|
||||
free(publicsha1);
|
||||
} else
|
||||
psync_delete_cached_crypto_keys();
|
||||
psync_sql_bind_string(q, 1, "cryptosubscription");
|
||||
|
|
@ -750,7 +750,7 @@ static psock_t *get_connected_socket() {
|
|||
"UPDATE setting SET value=? WHERE id='pass'");
|
||||
psync_sql_bind_string(q, 1, psync_my_pass);
|
||||
psync_sql_run_free(q);
|
||||
psync_free(psync_my_pass);
|
||||
free(psync_my_pass);
|
||||
psync_my_pass = NULL;
|
||||
}
|
||||
pthread_mutex_unlock(&psync_my_auth_mutex);
|
||||
|
|
@ -762,7 +762,7 @@ static psock_t *get_connected_socket() {
|
|||
"binapi", PARAM_ARRAY);
|
||||
if (cres->length)
|
||||
psync_apipool_set_server(cres->array[0]->str);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
|
||||
// If the flag is up, send a first login event to track the number of
|
||||
// sucessful installs.
|
||||
|
|
@ -813,20 +813,20 @@ static psock_t *get_connected_socket() {
|
|||
debug(D_WARNING,
|
||||
"account_info returned %lu, continuing without business info",
|
||||
(unsigned long)result);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_sql_sync();
|
||||
}
|
||||
|
||||
psync_free(chrUserid);
|
||||
psync_free(auth);
|
||||
psync_free(user);
|
||||
psync_free(pass);
|
||||
psync_free(psync_my_2fa_token);
|
||||
free(chrUserid);
|
||||
free(auth);
|
||||
free(user);
|
||||
free(pass);
|
||||
free(psync_my_2fa_token);
|
||||
psync_my_2fa_token = NULL;
|
||||
psync_my_2fa_code_type = 0;
|
||||
psync_my_2fa_code[0] = 0;
|
||||
psync_free(deviceid);
|
||||
psync_free(devicestring);
|
||||
free(deviceid);
|
||||
free(devicestring);
|
||||
psync_sql_sync();
|
||||
return sock;
|
||||
}
|
||||
|
|
@ -1205,10 +1205,10 @@ static void process_modifyfolder(const binresult *entry) {
|
|||
syncid, psync_get_result_cell(fres2, i, 2), folderid, localfolderid);
|
||||
needdownload = 1;
|
||||
}
|
||||
psync_free(fres1);
|
||||
psync_free(fres2);
|
||||
free(fres1);
|
||||
free(fres2);
|
||||
}
|
||||
psync_free(oldname);
|
||||
free(oldname);
|
||||
}
|
||||
|
||||
static void process_deletefolder(const binresult *entry) {
|
||||
|
|
@ -1255,7 +1255,7 @@ static void process_deletefolder(const binresult *entry) {
|
|||
if (psync_sql_affected_rows() == 1) {
|
||||
path = pfolder_path(folderid, NULL);
|
||||
ptask_ldir_rm(row[0], folderid, row[1], path);
|
||||
psync_free(path);
|
||||
free(path);
|
||||
needdownload = 1;
|
||||
}
|
||||
}
|
||||
|
|
@ -1522,7 +1522,7 @@ static void process_modifyfile(const binresult *entry) {
|
|||
pdownload_tasks_delete(fileid, 0, 1);
|
||||
path = pfolder_file_path(fileid, NULL);
|
||||
ptask_lfile_rm(fileid, path);
|
||||
psync_free(path);
|
||||
free(path);
|
||||
needdownload = 1;
|
||||
return;
|
||||
}
|
||||
|
|
@ -1591,11 +1591,11 @@ static void process_modifyfile(const binresult *entry) {
|
|||
fileid, path);
|
||||
pdownload_tasks_delete(
|
||||
fileid, psync_get_result_cell(fres1, i, 0), 1);
|
||||
psync_free(path);
|
||||
free(path);
|
||||
needdownload = 1;
|
||||
}
|
||||
psync_free(fres1);
|
||||
psync_free(fres2);
|
||||
free(fres1);
|
||||
free(fres2);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1624,7 +1624,7 @@ static void process_deletefile(const binresult *entry) {
|
|||
path = pfolder_file_path(fileid, NULL);
|
||||
if (likely(path)) {
|
||||
ptask_lfile_rm(fileid, path);
|
||||
psync_free(path);
|
||||
free(path);
|
||||
needdownload = 1;
|
||||
}
|
||||
}
|
||||
|
|
@ -1858,7 +1858,7 @@ static void send_share_notify(psync_eventtype_t eventid, const binresult *share,
|
|||
if ((row = psync_sql_fetch_row(res))) {
|
||||
cstr = psync_get_lstring(row[0], &sharenamelen);
|
||||
stringslen += ++sharenamelen;
|
||||
sharename = (char *)psync_malloc(sharenamelen);
|
||||
sharename = (char *)malloc(sharenamelen);
|
||||
memcpy(sharename, cstr, sharenamelen);
|
||||
freesharename = 1;
|
||||
ctime = psync_get_number(row[1]);
|
||||
|
|
@ -1871,14 +1871,14 @@ static void send_share_notify(psync_eventtype_t eventid, const binresult *share,
|
|||
return;
|
||||
}
|
||||
}
|
||||
e = (psync_share_event_t *)psync_malloc(sizeof(psync_share_event_t) +
|
||||
e = (psync_share_event_t *)malloc(sizeof(psync_share_event_t) +
|
||||
stringslen);
|
||||
str = (char *)(e + 1);
|
||||
memset(e, 0, sizeof(psync_share_event_t));
|
||||
e->folderid = papi_find_result2(share, "folderid", PARAM_NUM)->num;
|
||||
fill_str(e->sharename, sharename, sharenamelen);
|
||||
if (freesharename)
|
||||
psync_free(sharename);
|
||||
free(sharename);
|
||||
|
||||
fill_str(e->message, message, messagelen);
|
||||
if ((br = papi_check_result2(share, "userid", PARAM_NUM)))
|
||||
|
|
@ -1915,7 +1915,7 @@ static void send_share_notify(psync_eventtype_t eventid, const binresult *share,
|
|||
}
|
||||
}
|
||||
if (isba) {
|
||||
notify_paramst *params = psync_malloc(sizeof(notify_paramst));
|
||||
notify_paramst *params = malloc(sizeof(notify_paramst));
|
||||
params->eventid = eventid;
|
||||
params->event_data = e;
|
||||
params->touserid = touserid;
|
||||
|
|
@ -1938,14 +1938,14 @@ static void do_send_eventdata(void *param) {
|
|||
|
||||
get_ba_member_email(data->fromuserid, &email, &emaillen);
|
||||
fill_str(data->event_data->fromemail, email, emaillen);
|
||||
psync_free(email);
|
||||
free(email);
|
||||
|
||||
if (data->touserid)
|
||||
get_ba_member_email(data->touserid, &email, &emaillen);
|
||||
else
|
||||
get_ba_team_name(data->teamid, &email, &emaillen);
|
||||
fill_str(data->event_data->toemail, email, emaillen);
|
||||
psync_free(email);
|
||||
free(email);
|
||||
|
||||
if (email) {
|
||||
pdiff_lock();
|
||||
|
|
@ -1953,7 +1953,7 @@ static void do_send_eventdata(void *param) {
|
|||
pdiff_unlock();
|
||||
}
|
||||
|
||||
psync_free(param);
|
||||
free(param);
|
||||
}
|
||||
|
||||
static void process_requestsharein(const binresult *entry) {
|
||||
|
|
@ -2269,7 +2269,7 @@ static void process_establishbshareout(const binresult *entry) {
|
|||
|
||||
psync_sql_run_free(q);
|
||||
if (email)
|
||||
psync_free(email);
|
||||
free(email);
|
||||
}
|
||||
|
||||
static void delete_share_request(const binresult *share) {
|
||||
|
|
@ -2711,7 +2711,7 @@ static void psync_diff_refresh_fs_add_folder(psync_folderid_t folderid) {
|
|||
refresh_allocated *= 2;
|
||||
else
|
||||
refresh_allocated = 8;
|
||||
refresh_folders = (psync_folderid_t *)psync_realloc(
|
||||
refresh_folders = (psync_folderid_t *)realloc(
|
||||
refresh_folders, sizeof(psync_folderid_t) * refresh_allocated);
|
||||
}
|
||||
refresh_folders[refresh_last++] = folderid;
|
||||
|
|
@ -2732,8 +2732,8 @@ static void psync_diff_refresh_thread(void *ptr) {
|
|||
psync_fs_refresh_folder(fr->refresh_folders[i]);
|
||||
lastfolderid = fr->refresh_folders[i];
|
||||
}
|
||||
psync_free(fr->refresh_folders);
|
||||
psync_free(fr);
|
||||
free(fr->refresh_folders);
|
||||
free(fr);
|
||||
}
|
||||
|
||||
static void psync_diff_refresh_fs(const binresult *entries) {
|
||||
|
|
@ -2805,13 +2805,13 @@ static void psync_run_analyze_if_needed() {
|
|||
--tablecnt;
|
||||
debug(D_NOTICE, "running ANALYZE on %s", tablenames[tablecnt]);
|
||||
sql = psync_strcat("ANALYZE ", tablenames[tablecnt], ";", NULL);
|
||||
psync_free(tablenames[tablecnt]);
|
||||
free(tablenames[tablecnt]);
|
||||
psync_sql_statement(sql);
|
||||
psync_free(sql);
|
||||
free(sql);
|
||||
debug(D_NOTICE, "table done");
|
||||
psys_sleep_milliseconds(5);
|
||||
}
|
||||
psync_free(tablenames);
|
||||
free(tablenames);
|
||||
res = psync_sql_prep_statement(
|
||||
"REPLACE INTO setting (id, value) VALUES (?, ?)");
|
||||
psync_sql_bind_string(res, 1, "lastanalyze");
|
||||
|
|
@ -2850,7 +2850,7 @@ static int psync_diff_check_quota(psock_t *sock) {
|
|||
"binapi", PARAM_ARRAY);
|
||||
if (uq->length)
|
||||
psync_apipool_set_server(uq->array[0]->str);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -2862,7 +2862,7 @@ static void psync_diff_adapter_hash(void *out) {
|
|||
pcrc32c_fast_hash256_update(&ctx, list->interfaces,
|
||||
list->interfacecnt * sizeof(psock_iface_t));
|
||||
pcrc32c_fast_hash256_final(out, &ctx);
|
||||
psync_free(list);
|
||||
free(list);
|
||||
}
|
||||
|
||||
static void psync_diff_adapter_timer(psync_timer_t timer, void *ptr) {
|
||||
|
|
@ -2940,7 +2940,7 @@ restart:
|
|||
}
|
||||
result = entries->length;
|
||||
if (should_free_res) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
should_free_res = 0;
|
||||
res = NULL;
|
||||
}
|
||||
|
|
@ -3086,7 +3086,7 @@ restart:
|
|||
}
|
||||
|
||||
if (should_free_res) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
should_free_res = 0;
|
||||
res = NULL;
|
||||
}
|
||||
|
|
@ -3094,7 +3094,7 @@ restart:
|
|||
|
||||
cleanup:
|
||||
if (should_free_res && res) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
}
|
||||
psock_close(sock);
|
||||
close(exceptionsock);
|
||||
|
|
|
|||
|
|
@ -160,8 +160,8 @@ static void do_move(void *ptr, ppath_stat *st) {
|
|||
oldpath = psync_strcat(arr[0], st->name, NULL);
|
||||
newpath = psync_strcat(arr[1], st->name, NULL);
|
||||
pfile_rename(oldpath, newpath);
|
||||
psync_free(newpath);
|
||||
psync_free(oldpath);
|
||||
free(newpath);
|
||||
free(oldpath);
|
||||
}
|
||||
|
||||
static int move_folder_contents(const char *oldpath, const char *newpath) {
|
||||
|
|
@ -241,7 +241,7 @@ static int call_func_for_folder(psync_folderid_t localfolderid,
|
|||
psyncer_folder_dec_tasks(localfolderid);
|
||||
debug(D_NOTICE, "%s %s", debug, localpath);
|
||||
}
|
||||
psync_free(localpath);
|
||||
free(localpath);
|
||||
} else {
|
||||
debug(D_ERROR, "could not get path for local folder id %lu, syncid %u",
|
||||
(long unsigned)localfolderid, (unsigned)syncid);
|
||||
|
|
@ -268,7 +268,7 @@ static int call_func_for_folder_name(psync_folderid_t localfolderid,
|
|||
psyncer_folder_dec_tasks(localfolderid);
|
||||
debug(D_NOTICE, "%s %s", debug, localpath);
|
||||
}
|
||||
psync_free(localpath);
|
||||
free(localpath);
|
||||
} else {
|
||||
debug(D_ERROR, "could not get path for local folder id %lu, syncid %u",
|
||||
(long unsigned)localfolderid, (unsigned)syncid);
|
||||
|
|
@ -374,7 +374,7 @@ static int task_renamefolder(psync_syncid_t newsyncid,
|
|||
newpath = pfolder_lpath_lfldr(localfolderid, newsyncid, NULL);
|
||||
if (unlikely(!newpath)) {
|
||||
psync_sql_rollback_transaction();
|
||||
psync_free(oldpath);
|
||||
free(oldpath);
|
||||
debug(D_ERROR, "could not get local path for folder id %lu",
|
||||
(unsigned long)localfolderid);
|
||||
return 0;
|
||||
|
|
@ -389,8 +389,8 @@ static int task_renamefolder(psync_syncid_t newsyncid,
|
|||
folderid);
|
||||
debug(D_NOTICE, "local folder renamed from %s to %s", oldpath, newpath);
|
||||
}
|
||||
psync_free(newpath);
|
||||
psync_free(oldpath);
|
||||
free(newpath);
|
||||
free(oldpath);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -666,7 +666,7 @@ static int task_download_file(download_task_t *dt) {
|
|||
debug(D_NOTICE, "file %s copied from %s", dt->localname, tmpold);
|
||||
} else
|
||||
debug(D_WARNING, "failed to copy %s from %s", dt->localname, tmpold);
|
||||
psync_free(tmpold);
|
||||
free(tmpold);
|
||||
tmpold = NULL;
|
||||
if (likely_log(rt == PSYNC_NET_OK))
|
||||
return 0;
|
||||
|
|
@ -700,10 +700,10 @@ static int task_download_file(download_task_t *dt) {
|
|||
debug(D_WARNING, "got error %lu from getfilelink", (long unsigned)result);
|
||||
psync_process_api_error(result);
|
||||
if (psync_handle_api_result(result) == PSYNC_NET_TEMPFAIL) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return -1;
|
||||
} else {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -718,7 +718,7 @@ static int task_download_file(download_task_t *dt) {
|
|||
psync_strcat(dt->localpath, "/", dt->filename,
|
||||
"-old", PSYNC_APPEND_PARTIAL_FILES, NULL);
|
||||
if (pfile_rename_overwrite(dt->tmpname, tmpold)) {
|
||||
psync_free(tmpold);
|
||||
free(tmpold);
|
||||
tmpold = NULL;
|
||||
} else
|
||||
oldfiles[oldcnt++] = tmpold;
|
||||
|
|
@ -740,7 +740,7 @@ static int task_download_file(download_task_t *dt) {
|
|||
requestpath = papi_find_result2(res, "path", PARAM_STR)->str;
|
||||
psync_slprintf(cookie, sizeof(cookie), "Cookie: dwltag=%s\015\012",
|
||||
papi_find_result2(res, "dwltag", PARAM_STR)->str);
|
||||
buff = psync_malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
buff = malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
http = NULL;
|
||||
psync_hash_init(&hashctx);
|
||||
psync_list_for_each_element(range, &ranges, psync_range_list_t, list) {
|
||||
|
|
@ -835,7 +835,7 @@ static int task_download_file(download_task_t *dt) {
|
|||
}
|
||||
if (unlikely_log(pfile_sync(fd)))
|
||||
goto err2;
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
psync_hash_final(localhashbin, &hashctx);
|
||||
if (unlikely_log(pfile_close(fd)))
|
||||
goto err0;
|
||||
|
|
@ -859,29 +859,27 @@ static int task_download_file(download_task_t *dt) {
|
|||
// pqevent_queue_sync_event_id(PEVENT_FILE_DOWNLOAD_FINISHED, syncid, name,
|
||||
// fileid);
|
||||
debug(D_NOTICE, "file downloaded %s", dt->localname);
|
||||
psync_list_for_each_element_call(&ranges, psync_range_list_t, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&ranges, psync_range_list_t, list, free);
|
||||
if (tmpold) {
|
||||
pfile_delete(tmpold);
|
||||
psync_free(tmpold);
|
||||
free(tmpold);
|
||||
}
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return 0;
|
||||
err2:
|
||||
psync_hash_final(localhashbin, &hashctx); /* just in case */
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
if (http)
|
||||
psync_http_close(http);
|
||||
err1:
|
||||
pfile_close(fd);
|
||||
err0:
|
||||
psync_list_for_each_element_call(&ranges, psync_range_list_t, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&ranges, psync_range_list_t, list, free);
|
||||
if (tmpold) {
|
||||
pfile_delete(tmpold);
|
||||
psync_free(tmpold);
|
||||
free(tmpold);
|
||||
}
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -909,7 +907,7 @@ static int task_delete_file(psync_syncid_t syncid, psync_fileid_t fileid,
|
|||
(int)errno);
|
||||
if (errno == EBUSY || errno == EROFS) {
|
||||
ret = -1;
|
||||
psync_free(name);
|
||||
free(name);
|
||||
continue;
|
||||
}
|
||||
} else
|
||||
|
|
@ -918,7 +916,7 @@ static int task_delete_file(psync_syncid_t syncid, psync_fileid_t fileid,
|
|||
// events are not fully implemented anyway
|
||||
// pqevent_queue_sync_event_path(PEVENT_LOCAL_FILE_DELETED, row[1], name,
|
||||
// fileid, remotepath);
|
||||
psync_free(name);
|
||||
free(name);
|
||||
}
|
||||
stmt = psync_sql_prep_statement("DELETE FROM localfile WHERE id=?");
|
||||
psync_sql_bind_uint(stmt, 1, row[0]);
|
||||
|
|
@ -971,7 +969,7 @@ static int task_rename_file(psync_syncid_t oldsyncid, psync_syncid_t newsyncid,
|
|||
return 0;
|
||||
oldpath = pfolder_lpath_lfile(lfileid, NULL);
|
||||
if (unlikely_log(!oldpath)) {
|
||||
psync_free(newfolder);
|
||||
free(newfolder);
|
||||
return 0;
|
||||
}
|
||||
newpath = psync_strcat(newfolder, "/", newname, NULL);
|
||||
|
|
@ -1002,9 +1000,9 @@ static int task_rename_file(psync_syncid_t oldsyncid, psync_syncid_t newsyncid,
|
|||
}
|
||||
psync_resume_localscan();
|
||||
}
|
||||
psync_free(newpath);
|
||||
psync_free(oldpath);
|
||||
psync_free(newfolder);
|
||||
free(newpath);
|
||||
free(oldpath);
|
||||
free(newfolder);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1037,10 +1035,10 @@ static void free_download_task(download_task_t *dt) {
|
|||
}
|
||||
if (dt->lock)
|
||||
psync_unlock_file(dt->lock);
|
||||
psync_free(dt->localpath);
|
||||
psync_free(dt->localname);
|
||||
psync_free(dt->tmpname);
|
||||
psync_free(dt);
|
||||
free(dt->localpath);
|
||||
free(dt->localname);
|
||||
free(dt->tmpname);
|
||||
free(dt);
|
||||
}
|
||||
|
||||
static void free_task_timer_thread(void *ptr) {
|
||||
|
|
@ -1201,7 +1199,7 @@ static int task_run_download_file(uint64_t taskid, psync_syncid_t syncid,
|
|||
tmpname = psync_strcat(localpath, "/", filename,
|
||||
PSYNC_APPEND_PARTIAL_FILES, NULL);
|
||||
len = strlen(filename);
|
||||
dt = (download_task_t *)psync_malloc(offsetof(download_task_t, filename) +
|
||||
dt = (download_task_t *)malloc(offsetof(download_task_t, filename) +
|
||||
len + 1);
|
||||
memset(dt, 0, offsetof(download_task_t, filename));
|
||||
dt->taskid = taskid;
|
||||
|
|
@ -1340,7 +1338,7 @@ static void task_del_folder_rec_do(const char *localpath,
|
|||
psync_get_string(vrow[1]), NULL);
|
||||
debug(D_NOTICE, "deleting %s", nm);
|
||||
pfile_delete(nm);
|
||||
psync_free(nm);
|
||||
free(nm);
|
||||
}
|
||||
psync_sql_free_result(res);
|
||||
res = psync_sql_prep_statement(
|
||||
|
|
@ -1356,7 +1354,7 @@ static void task_del_folder_rec_do(const char *localpath,
|
|||
nm = psync_strcat(localpath, "/",
|
||||
psync_get_string(vrow[1]), NULL);
|
||||
task_del_folder_rec_do(nm, psync_get_number(vrow[0]), syncid);
|
||||
psync_free(nm);
|
||||
free(nm);
|
||||
}
|
||||
psync_sql_free_result(res);
|
||||
res = psync_sql_prep_statement(
|
||||
|
|
@ -1466,7 +1464,7 @@ static int download_task(uint64_t taskid, uint32_t type, psync_syncid_t syncid,
|
|||
debug(D_WARNING, "task of type %u, syncid %u, id %lu localid %lu failed",
|
||||
(unsigned)type, (unsigned)syncid, (unsigned long)itemid,
|
||||
(unsigned long)localitemid);
|
||||
psync_free(vname);
|
||||
free(vname);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
@ -1498,7 +1496,7 @@ static void download_thread() {
|
|||
}
|
||||
} else if (type != PSYNC_DOWNLOAD_FILE)
|
||||
psys_sleep_milliseconds(PSYNC_SLEEP_ON_FAILED_DOWNLOAD);
|
||||
psync_free(row);
|
||||
free(row);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -1593,7 +1591,7 @@ download_hashes_t *pdownload_get_hashes() {
|
|||
cnt = 0;
|
||||
pthread_mutex_lock(¤t_downloads_mutex);
|
||||
psync_list_for_each_element(dwl, &downloads, download_list_t, list) cnt++;
|
||||
ret = (download_hashes_t *)psync_malloc(
|
||||
ret = (download_hashes_t *)malloc(
|
||||
offsetof(download_hashes_t, hashes) +
|
||||
sizeof(psync_hex_hash) * cnt);
|
||||
cnt = 0;
|
||||
|
|
|
|||
|
|
@ -266,7 +266,7 @@ static void psync_file_preread_thread(void *ptr) {
|
|||
pr->count -= rd;
|
||||
}
|
||||
pfile_close(pr->fd);
|
||||
psync_free(pr);
|
||||
free(pr);
|
||||
}
|
||||
|
||||
int pfile_preread(int fd, uint64_t offset, size_t count) {
|
||||
|
|
@ -415,7 +415,7 @@ int pfile_run_update(const char *path) {
|
|||
ex = psync_strcat(PSYNC_RUN_CMD " \"", path, "\"", NULL);
|
||||
execl("/bin/sh", "/bin/sh", "-c", ex, NULL);
|
||||
debug(D_ERROR, "exec of %s failed", ex);
|
||||
psync_free(ex);
|
||||
free(ex);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -195,9 +195,9 @@ psync_folderid_t pfolder_id_create(const char *path) {
|
|||
->num;
|
||||
if (papi_find_result2(bres, "created", PARAM_BOOL)->num)
|
||||
pdiff_wake();
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
} else {
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
psync_process_api_error(result);
|
||||
if (psync_handle_api_result(result) == PSYNC_NET_TEMPFAIL)
|
||||
goto errnet;
|
||||
|
|
@ -220,12 +220,12 @@ errnet:
|
|||
}
|
||||
|
||||
static void psync_free_string_list(psync_list *lst) {
|
||||
psync_list_for_each_element_call(lst, string_list, list, psync_free);
|
||||
psync_list_for_each_element_call(lst, string_list, list, free);
|
||||
}
|
||||
|
||||
static string_list *str_to_list_element(const char *str, size_t len) {
|
||||
string_list *le;
|
||||
le = (string_list *)psync_malloc(sizeof(string_list) + len + 1);
|
||||
le = (string_list *)malloc(sizeof(string_list) + len + 1);
|
||||
le->str = (char *)(le + 1);
|
||||
le->len = len;
|
||||
memcpy(le->str, str, len + 1);
|
||||
|
|
@ -240,7 +240,7 @@ static int psync_add_path_to_list(psync_list *lst, psync_folderid_t folderid) {
|
|||
size_t len;
|
||||
while (1) {
|
||||
if (folderid == 0) {
|
||||
e = (string_list *)psync_malloc(sizeof(string_list));
|
||||
e = (string_list *)malloc(sizeof(string_list));
|
||||
e->str = (char *)e;
|
||||
e->len = 0;
|
||||
psync_list_add_head(lst, &e->list);
|
||||
|
|
@ -268,18 +268,18 @@ static string_list *str_list_decode(psync_folderid_t folderid, string_list *e) {
|
|||
char *fn;
|
||||
dec = pcryptofolder_flddecoder_get(folderid);
|
||||
if (psync_crypto_is_error(dec)) {
|
||||
psync_free(e);
|
||||
free(e);
|
||||
debug(D_WARNING, "got error %d getting decoder for folderid %lu",
|
||||
psync_crypto_to_error(dec), (unsigned long)folderid);
|
||||
return NULL;
|
||||
}
|
||||
fn = pcryptofolder_flddecode_filename(dec, e->str);
|
||||
pcryptofolder_flddecoder_release(folderid, dec);
|
||||
psync_free(e);
|
||||
free(e);
|
||||
if (unlikely_log(!fn))
|
||||
return NULL;
|
||||
e = str_to_list_element(fn, strlen(fn));
|
||||
psync_free(fn);
|
||||
free(fn);
|
||||
return e;
|
||||
}
|
||||
|
||||
|
|
@ -297,7 +297,7 @@ static int psync_add_path_to_list_decode(psync_list *lst,
|
|||
if (folderid == 0) {
|
||||
if (e)
|
||||
psync_list_add_head(lst, &e->list);
|
||||
e = (string_list *)psync_malloc(sizeof(string_list));
|
||||
e = (string_list *)malloc(sizeof(string_list));
|
||||
e->str = (char *)e;
|
||||
e->len = 0;
|
||||
psync_list_add_head(lst, &e->list);
|
||||
|
|
@ -343,7 +343,7 @@ char *psync_join_string_list(const char *sep, psync_list *lst, size_t *retlen) {
|
|||
if (unlikely(!cnt))
|
||||
return psync_strdup("");
|
||||
seplen = strlen(sep);
|
||||
ret = str = psync_malloc(slen + cnt * seplen + 1);
|
||||
ret = str = malloc(slen + cnt * seplen + 1);
|
||||
psync_list_for_each_element(e, lst, string_list, list) {
|
||||
memcpy(str, e->str, e->len);
|
||||
str += e->len;
|
||||
|
|
@ -372,7 +372,7 @@ char *pfolder_path(psync_folderid_t folderid, size_t *retlen) {
|
|||
ret = psync_join_string_list("/", &folderlist, retlen);
|
||||
psync_free_string_list(&folderlist);
|
||||
if (!ret[0]) {
|
||||
psync_free(ret);
|
||||
free(ret);
|
||||
ret = psync_strdup("/");
|
||||
if (retlen)
|
||||
*retlen = 1;
|
||||
|
|
@ -394,7 +394,7 @@ char *pfolder_path_sep(psync_folderid_t folderid, const char *sep,
|
|||
ret = psync_join_string_list(sep, &folderlist, retlen);
|
||||
psync_free_string_list(&folderlist);
|
||||
if (!ret[0]) {
|
||||
psync_free(ret);
|
||||
free(ret);
|
||||
ret = psync_strdup(sep);
|
||||
if (retlen)
|
||||
*retlen = 1;
|
||||
|
|
@ -542,10 +542,10 @@ char *pfolder_lpath_lfile(psync_fileid_t localfileid,
|
|||
|
||||
static folder_list *folder_list_init() {
|
||||
folder_list *list;
|
||||
list = (folder_list *)psync_malloc(sizeof(folder_list));
|
||||
list = (folder_list *)malloc(sizeof(folder_list));
|
||||
list->entries =
|
||||
(pentry_t *)psync_malloc(sizeof(pentry_t) * INITIAL_ENTRY_CNT);
|
||||
list->namebuff = (char *)psync_malloc(INITIAL_NAME_BUFF);
|
||||
(pentry_t *)malloc(sizeof(pentry_t) * INITIAL_ENTRY_CNT);
|
||||
list->namebuff = (char *)malloc(INITIAL_NAME_BUFF);
|
||||
list->nameoff = 0;
|
||||
list->namealloc = INITIAL_NAME_BUFF;
|
||||
list->entriescnt = 0;
|
||||
|
|
@ -556,12 +556,12 @@ static folder_list *folder_list_init() {
|
|||
static void folder_list_add(folder_list *list, pentry_t *entry) {
|
||||
if (list->entriescnt >= list->entriesalloc) {
|
||||
list->entriesalloc *= 2;
|
||||
list->entries = (pentry_t *)psync_realloc(
|
||||
list->entries = (pentry_t *)realloc(
|
||||
list->entries, sizeof(pentry_t) * list->entriesalloc);
|
||||
}
|
||||
while (list->nameoff + entry->namelen >= list->namealloc) {
|
||||
list->namealloc *= 2;
|
||||
list->namebuff = (char *)psync_realloc(list->namebuff, list->namealloc);
|
||||
list->namebuff = (char *)realloc(list->namebuff, list->namealloc);
|
||||
}
|
||||
memcpy(&list->entries[list->entriescnt++], entry, sizeof(pentry_t));
|
||||
memcpy(list->namebuff + list->nameoff, entry->name, entry->namelen);
|
||||
|
|
@ -570,9 +570,9 @@ static void folder_list_add(folder_list *list, pentry_t *entry) {
|
|||
}
|
||||
|
||||
static void folder_list_free(folder_list *list) {
|
||||
psync_free(list->entries);
|
||||
psync_free(list->namebuff);
|
||||
psync_free(list);
|
||||
free(list->entries);
|
||||
free(list->namebuff);
|
||||
free(list);
|
||||
}
|
||||
|
||||
static pfolder_list_t *folder_list_finalize(folder_list *list) {
|
||||
|
|
@ -583,7 +583,7 @@ static pfolder_list_t *folder_list_finalize(folder_list *list) {
|
|||
(unsigned)(offsetof(pfolder_list_t, entries) +
|
||||
sizeof(pentry_t) * list->entriescnt + list->nameoff),
|
||||
(unsigned)list->nameoff);
|
||||
ret = (pfolder_list_t *)psync_malloc(offsetof(pfolder_list_t, entries) +
|
||||
ret = (pfolder_list_t *)malloc(offsetof(pfolder_list_t, entries) +
|
||||
sizeof(pentry_t) * list->entriescnt +
|
||||
list->nameoff);
|
||||
name = ((char *)ret) + offsetof(pfolder_list_t, entries) +
|
||||
|
|
@ -748,7 +748,7 @@ pentry_t *pfolder_stat(const char *remotepath) {
|
|||
memcpy(cremotepath, remotepath, len + 1);
|
||||
cremotepath[len] = 0;
|
||||
folderid = pfolder_id(cremotepath);
|
||||
psync_free(cremotepath);
|
||||
free(cremotepath);
|
||||
if (folderid == PSYNC_INVALID_FOLDERID)
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -759,7 +759,7 @@ pentry_t *pfolder_stat(const char *remotepath) {
|
|||
psync_sql_bind_uint(res, 1, folderid);
|
||||
psync_sql_bind_lstring(res, 2, remotepath + len, olen);
|
||||
if ((row = psync_sql_fetch_rowint(res))) {
|
||||
ret = (pentry_t *)psync_malloc(sizeof(pentry_t) + olen + 1);
|
||||
ret = (pentry_t *)malloc(sizeof(pentry_t) + olen + 1);
|
||||
ret->folder.folderid = row[0];
|
||||
ret->folder.cansyncup = ((row[1] & PSYNC_PERM_WRITE) == PSYNC_PERM_WRITE);
|
||||
ret->folder.cansyncdown = ((row[1] & PSYNC_PERM_READ) == PSYNC_PERM_READ);
|
||||
|
|
@ -778,7 +778,7 @@ pentry_t *pfolder_stat(const char *remotepath) {
|
|||
psync_sql_bind_uint(res, 1, folderid);
|
||||
psync_sql_bind_lstring(res, 2, remotepath + len, olen);
|
||||
if ((row = psync_sql_fetch_rowint(res))) {
|
||||
ret = (pentry_t *)psync_malloc(sizeof(pentry_t) + olen + 1);
|
||||
ret = (pentry_t *)malloc(sizeof(pentry_t) + olen + 1);
|
||||
ret->file.fileid = row[0];
|
||||
ret->file.size = row[1];
|
||||
ret->name = (char *)(ret + 1);
|
||||
|
|
@ -835,12 +835,12 @@ psync_folder_list_t *pfolder_sync_folders(char *syncTypes) {
|
|||
while ((row = psync_sql_fetch_row(res))) {
|
||||
if (alloced == lastfolder) {
|
||||
alloced = (alloced + 32) * 2;
|
||||
folders = (psync_tmp_folder_t *)psync_realloc(
|
||||
folders = (psync_tmp_folder_t *)realloc(
|
||||
folders, sizeof(psync_tmp_folder_t) * alloced);
|
||||
}
|
||||
cstr = psync_get_lstring(row[2], &l);
|
||||
l++;
|
||||
str = (char *)psync_malloc(l);
|
||||
str = (char *)malloc(l);
|
||||
memcpy(str, cstr, l);
|
||||
|
||||
strlens += l;
|
||||
|
|
@ -864,14 +864,14 @@ psync_folder_list_t *pfolder_sync_folders(char *syncTypes) {
|
|||
psync_sql_free_result(res);
|
||||
l = offsetof(psync_folder_list_t, folders) +
|
||||
sizeof(psync_folder_t) * lastfolder;
|
||||
ret = (psync_folder_list_t *)psync_malloc(l + strlens);
|
||||
ret = (psync_folder_list_t *)malloc(l + strlens);
|
||||
str = ((char *)ret) + l;
|
||||
ret->foldercnt = lastfolder;
|
||||
|
||||
for (i = 0; i < lastfolder; i++) {
|
||||
l = folders[i].locallen;
|
||||
memcpy(str, folders[i].localpath, l);
|
||||
psync_free(folders[i].localpath);
|
||||
free(folders[i].localpath);
|
||||
strncpy(ret->folders[i].localpath, str,
|
||||
sizeof(ret->folders[i].localpath) - 1);
|
||||
ret->folders[i].localpath[sizeof(ret->folders[i].localpath) - 1] = '\0';
|
||||
|
|
@ -891,7 +891,7 @@ psync_folder_list_t *pfolder_sync_folders(char *syncTypes) {
|
|||
|
||||
l = folders[i].remotelen;
|
||||
memcpy(str, folders[i].remotepath, l);
|
||||
psync_free(folders[i].remotepath);
|
||||
free(folders[i].remotepath);
|
||||
strncpy(ret->folders[i].remotepath, str,
|
||||
sizeof(ret->folders[i].remotepath) - 1);
|
||||
ret->folders[i].remotepath[sizeof(ret->folders[i].remotepath) - 1] = '\0';
|
||||
|
|
@ -914,7 +914,7 @@ psync_folder_list_t *pfolder_sync_folders(char *syncTypes) {
|
|||
ret->folders[i].synctype = folders[i].synctype;
|
||||
}
|
||||
|
||||
psync_free(folders);
|
||||
free(folders);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
148
pclsync/pfs.c
148
pclsync/pfs.c
|
|
@ -146,12 +146,12 @@ static void delete_log_files(psync_openfile_t *of) {
|
|||
filename =
|
||||
psync_strcat(cachepath, "/", fileidhex, NULL);
|
||||
pfile_delete(filename);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
fileidhex[sizeof(psync_fsfileid_t)] = 'f';
|
||||
filename =
|
||||
psync_strcat(cachepath, "/", fileidhex, NULL);
|
||||
pfile_delete(filename);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
}
|
||||
|
||||
int psync_fs_update_openfile(uint64_t taskid, uint64_t writeid,
|
||||
|
|
@ -315,7 +315,7 @@ int psync_fs_rename_openfile_locked(psync_fsfileid_t fileid,
|
|||
fl->currentfolder =
|
||||
psync_fstask_get_or_create_folder_tasks_locked(folderid);
|
||||
}
|
||||
psync_free(fl->currentname);
|
||||
free(fl->currentname);
|
||||
fl->currentname = psync_strdup(name);
|
||||
pthread_mutex_unlock(&fl->mutex);
|
||||
return 1;
|
||||
|
|
@ -627,7 +627,7 @@ static int psync_creat_local_to_file_stat(psync_fstask_creat_t *cr,
|
|||
stret = stat(filename, &st);
|
||||
if (stret)
|
||||
debug(D_NOTICE, "could not stat file %s", filename);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
}
|
||||
if (stret)
|
||||
return -1;
|
||||
|
|
@ -636,7 +636,7 @@ static int psync_creat_local_to_file_stat(psync_fstask_creat_t *cr,
|
|||
else{
|
||||
fileidhex[sizeof(psync_fsfileid_t)]='i';
|
||||
filename=psync_strcat(cachepath, "/", fileidhex,
|
||||
NULL); fd=pfile_open(filename, O_RDONLY, 0); psync_free(filename); if
|
||||
NULL); fd=pfile_open(filename, O_RDONLY, 0); free(filename); if
|
||||
(fd==INVALID_HANDLE_VALUE) return -EIO; stret=pfile_pread(fd, &osize,
|
||||
sizeof(osize), offsetof(index_header, copyfromoriginal));
|
||||
pfile_close(fd);
|
||||
|
|
@ -794,12 +794,12 @@ static int psync_fs_getattr(const char *path, struct FUSE_STAT *stbuf) {
|
|||
if (mk) {
|
||||
if (mk->flags & PSYNC_FOLDER_FLAG_INVISIBLE) {
|
||||
psync_sql_rdunlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
return -ENOENT;
|
||||
}
|
||||
psync_mkdir_to_folder_stat(mk, stbuf);
|
||||
psync_sql_rdunlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -814,7 +814,7 @@ static int psync_fs_getattr(const char *path, struct FUSE_STAT *stbuf) {
|
|||
psync_sql_free_result(res);
|
||||
if (row) {
|
||||
psync_sql_rdunlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -835,7 +835,7 @@ static int psync_fs_getattr(const char *path, struct FUSE_STAT *stbuf) {
|
|||
} else
|
||||
crr = -1;
|
||||
psync_sql_rdunlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
if (row || !crr)
|
||||
return 0;
|
||||
debug(D_NOTICE, "returning ENOENT for %s", path);
|
||||
|
|
@ -852,7 +852,7 @@ static int filler_decoded(pcrypto_textdec_t dec,
|
|||
if (!namedec)
|
||||
return 0;
|
||||
ret = filler(buf, namedec, st, off);
|
||||
psync_free(namedec);
|
||||
free(namedec);
|
||||
return ret;
|
||||
} else
|
||||
return filler(buf, name, st, off);
|
||||
|
|
@ -1017,7 +1017,7 @@ psync_fs_create_file(psync_fsfileid_t fileid, psync_fsfileid_t remotefileid,
|
|||
}
|
||||
}
|
||||
if (encoder == PSYNC_CRYPTO_INVALID_ENCODER) {
|
||||
fl = (psync_openfile_t *)psync_malloc(offsetof(psync_openfile_t, encoder));
|
||||
fl = (psync_openfile_t *)malloc(offsetof(psync_openfile_t, encoder));
|
||||
memset(fl, 0, offsetof(psync_openfile_t, encoder));
|
||||
} else {
|
||||
fl = psync_new(psync_openfile_t);
|
||||
|
|
@ -1146,7 +1146,7 @@ static int open_write_files(psync_openfile_t *of, int trunc) {
|
|||
psync_strcat(cachepath, "/", fileidhex, NULL);
|
||||
of->datafile = pfile_open(filename, O_RDWR,
|
||||
O_CREAT | (trunc ? O_TRUNC : 0));
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
if (of->datafile == INVALID_HANDLE_VALUE) {
|
||||
debug(D_ERROR, "could not open cache file for fileid %ld",
|
||||
(long)of->fileid);
|
||||
|
|
@ -1172,7 +1172,7 @@ static int open_write_files(psync_openfile_t *of, int trunc) {
|
|||
psync_strcat(cachepath, "/", fileidhex, NULL);
|
||||
of->indexfile = pfile_open(filename, O_RDWR,
|
||||
O_CREAT | (trunc ? O_TRUNC : 0));
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
if (of->indexfile == INVALID_HANDLE_VALUE) {
|
||||
debug(D_ERROR, "could not open cache index file for fileid %ld",
|
||||
(long)of->fileid);
|
||||
|
|
@ -1191,7 +1191,7 @@ static int open_write_files(psync_openfile_t *of, int trunc) {
|
|||
filename =
|
||||
psync_strcat(cachepath, "/", fileidhex, NULL);
|
||||
of->logfile = pfile_open(filename, O_RDWR, O_CREAT | O_TRUNC);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
if (of->logfile == INVALID_HANDLE_VALUE) {
|
||||
debug(D_ERROR, "could not open log file for fileid %ld",
|
||||
(long)of->fileid);
|
||||
|
|
@ -1229,13 +1229,13 @@ static void psync_fs_del_creat(psync_fspath_t *fpath, psync_openfile_t *of) {
|
|||
if (likely((cr = psync_fstask_find_creat(folder, fpath->name, 0)))) {
|
||||
ptree_del(&folder->creats, &cr->tree);
|
||||
folder->taskscnt--;
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
}
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
}
|
||||
psync_fs_dec_of_refcnt(of);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
}
|
||||
|
||||
static int psync_fs_open(const char *path, struct fuse_file_info *fi) {
|
||||
|
|
@ -1272,14 +1272,14 @@ static int psync_fs_open(const char *path, struct fuse_file_info *fi) {
|
|||
if ((fi->flags & 3) != O_RDONLY &&
|
||||
!(fpath->permissions & PSYNC_PERM_MODIFY)) {
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
return -EACCES;
|
||||
}
|
||||
// even if there are existing files there, just don't allow opening those
|
||||
if (fpath->flags & (PSYNC_FOLDER_FLAG_BACKUP_DEVICE_LIST |
|
||||
PSYNC_FOLDER_FLAG_BACKUP_DEVICE)) {
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
return -EACCES;
|
||||
}
|
||||
folder = psync_fstask_get_or_create_folder_tasks_locked(fpath->folderid);
|
||||
|
|
@ -1338,7 +1338,7 @@ static int psync_fs_open(const char *path, struct fuse_file_info *fi) {
|
|||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
psync_sql_unlock();
|
||||
debug(D_NOTICE, "opening new file %ld %s", (long)fileid, fpath->name);
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
of->newfile = 1;
|
||||
of->releasedforupload = status != 1;
|
||||
ret = open_write_files(of, fi->flags & O_TRUNC);
|
||||
|
|
@ -1391,7 +1391,7 @@ static int psync_fs_open(const char *path, struct fuse_file_info *fi) {
|
|||
fpath->name, encoder);
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
of->newfile = 0;
|
||||
of->releasedforupload = status != 1;
|
||||
ret = open_write_files(of, fi->flags & O_TRUNC);
|
||||
|
|
@ -1412,7 +1412,7 @@ static int psync_fs_open(const char *path, struct fuse_file_info *fi) {
|
|||
fpath->name, PSYNC_CRYPTO_INVALID_ENCODER);
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
of->modified = 1;
|
||||
of->staticfile = 1;
|
||||
of->staticdata = (const char *)lc->data;
|
||||
|
|
@ -1470,7 +1470,7 @@ static int psync_fs_open(const char *path, struct fuse_file_info *fi) {
|
|||
encoder = pcrypto_sec_encdec_create(symkey);
|
||||
psymkey_free(symkey);
|
||||
if (unlikely_log(encoder == PSYNC_CRYPTO_INVALID_ENCODER)) {
|
||||
psync_free(encsymkey);
|
||||
free(encsymkey);
|
||||
ret = -ENOMEM;
|
||||
goto ex0;
|
||||
}
|
||||
|
|
@ -1482,7 +1482,7 @@ static int psync_fs_open(const char *path, struct fuse_file_info *fi) {
|
|||
}
|
||||
cr =
|
||||
psync_fstask_add_creat(folder, fpath->name, 0, encsymkey, encsymkeylen);
|
||||
psync_free(encsymkey);
|
||||
free(encsymkey);
|
||||
if (unlikely_log(!cr)) {
|
||||
ret = -EIO;
|
||||
goto ex0;
|
||||
|
|
@ -1500,7 +1500,7 @@ static int psync_fs_open(const char *path, struct fuse_file_info *fi) {
|
|||
psync_fs_del_creat(fpath, of);
|
||||
return ret;
|
||||
}
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
fi->fh = openfile_to_fh(of);
|
||||
return 0;
|
||||
} else if (row) {
|
||||
|
|
@ -1523,7 +1523,7 @@ static int psync_fs_open(const char *path, struct fuse_file_info *fi) {
|
|||
ex0:
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1557,7 +1557,7 @@ static int psync_fs_creat_fake_locked(psync_fspath_t *fpath,
|
|||
size_t len;
|
||||
fileid = psync_fake_fileid++;
|
||||
len = strlen(fpath->name) + 1;
|
||||
cr = (psync_fstask_creat_t *)psync_malloc(
|
||||
cr = (psync_fstask_creat_t *)malloc(
|
||||
offsetof(psync_fstask_creat_t, name) + len);
|
||||
cr->fileid = fileid;
|
||||
cr->rfileid = 0;
|
||||
|
|
@ -1572,7 +1572,7 @@ static int psync_fs_creat_fake_locked(psync_fspath_t *fpath,
|
|||
of->newfile = 0;
|
||||
of->modified = 0;
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
fi->fh = openfile_to_fh(of);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1611,7 +1611,7 @@ static int psync_fs_creat(const char *path, mode_t mode,
|
|||
(fpath->flags & (PSYNC_FOLDER_FLAG_BACKUP_DEVICE_LIST |
|
||||
PSYNC_FOLDER_FLAG_BACKUP_DEVICE))) {
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
return -EACCES;
|
||||
}
|
||||
folder = psync_fstask_get_or_create_folder_tasks_locked(fpath->folderid);
|
||||
|
|
@ -1620,14 +1620,14 @@ static int psync_fs_creat(const char *path, mode_t mode,
|
|||
debug(D_NOTICE, "file %s already exists, processing as open", path);
|
||||
ret = psync_fs_open(path, fi);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
return ret;
|
||||
}
|
||||
if (fpath->flags & PSYNC_FOLDER_FLAG_ENCRYPTED) {
|
||||
if (psync_crypto_isexpired()) {
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
return -PRINT_RETURN_CONST(PSYNC_FS_ERR_CRYPTO_EXPIRED);
|
||||
}
|
||||
encsymkey = pcryptofolder_filencoder_key_newplain(
|
||||
|
|
@ -1635,7 +1635,7 @@ static int psync_fs_creat(const char *path, mode_t mode,
|
|||
if (unlikely_log(psync_crypto_is_error(encsymkey))) {
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
return -psync_fs_crypto_err_to_errno(psync_crypto_to_error(encsymkey));
|
||||
}
|
||||
encoder = pcrypto_sec_encdec_create(symkey);
|
||||
|
|
@ -1643,8 +1643,8 @@ static int psync_fs_creat(const char *path, mode_t mode,
|
|||
if (unlikely_log(encoder == PSYNC_CRYPTO_INVALID_ENCODER)) {
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
psync_free(encsymkey);
|
||||
free(fpath);
|
||||
free(encsymkey);
|
||||
return -ENOMEM;
|
||||
}
|
||||
} else {
|
||||
|
|
@ -1654,11 +1654,11 @@ static int psync_fs_creat(const char *path, mode_t mode,
|
|||
}
|
||||
cr = psync_fstask_add_creat(folder, fpath->name, 0, encsymkey, encsymkeylen);
|
||||
if (encsymkey)
|
||||
psync_free(encsymkey);
|
||||
free(encsymkey);
|
||||
if (unlikely_log(!cr)) {
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
return -EIO;
|
||||
}
|
||||
of = psync_fs_create_file(cr->fileid, 0, 0, 0, 1, 0,
|
||||
|
|
@ -1674,7 +1674,7 @@ static int psync_fs_creat(const char *path, mode_t mode,
|
|||
psync_fs_del_creat(fpath, of);
|
||||
return ret;
|
||||
}
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
fi->fh = openfile_to_fh(of);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1717,7 +1717,7 @@ static void psync_fs_free_openfile(psync_openfile_t *of) {
|
|||
}
|
||||
close_if_valid(of->logfile);
|
||||
ptree_for_each_element_call_safe(
|
||||
of->sectorsinlog, psync_sector_inlog_t, tree, psync_free);
|
||||
of->sectorsinlog, psync_sector_inlog_t, tree, free);
|
||||
delete_log_files(of);
|
||||
if (of->authenticatedints)
|
||||
psync_interval_tree_free(of->authenticatedints);
|
||||
|
|
@ -1735,13 +1735,13 @@ static void psync_fs_free_openfile(psync_openfile_t *of) {
|
|||
if (cr) {
|
||||
ptree_del(&of->currentfolder->creats, &cr->tree);
|
||||
of->currentfolder->taskscnt--;
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
}
|
||||
psync_sql_unlock();
|
||||
}
|
||||
psync_fstask_release_folder_tasks(of->currentfolder);
|
||||
psync_free(of->currentname);
|
||||
psync_free(of);
|
||||
free(of->currentname);
|
||||
free(of);
|
||||
}
|
||||
|
||||
static void psync_fs_get_both_locks(psync_openfile_t *of) {
|
||||
|
|
@ -1821,7 +1821,7 @@ static void psync_fs_upload_release_timer(void *ptr) {
|
|||
psync_sql_run_free(res);
|
||||
}
|
||||
psync_fs_dec_of_refcnt(ofw->of);
|
||||
psync_free(ofw);
|
||||
free(ofw);
|
||||
pstatus_upload_recalc_async();
|
||||
}
|
||||
|
||||
|
|
@ -2161,7 +2161,7 @@ psync_fs_reopen_file_for_writing(psync_openfile_t *of) {
|
|||
if (unlikely_log(!cr)) {
|
||||
psync_sql_unlock();
|
||||
ppagecache_unlock_pages();
|
||||
psync_free(encsymkey);
|
||||
free(encsymkey);
|
||||
return -EIO;
|
||||
}
|
||||
psync_fs_update_openfile_fileid_locked(of, cr->fileid);
|
||||
|
|
@ -2172,7 +2172,7 @@ psync_fs_reopen_file_for_writing(psync_openfile_t *of) {
|
|||
ret = open_write_files(of, 0);
|
||||
if (unlikely_log(ret)) {
|
||||
ppagecache_unlock_pages();
|
||||
psync_free(encsymkey);
|
||||
free(encsymkey);
|
||||
return ret;
|
||||
}
|
||||
if (of->origctime)
|
||||
|
|
@ -2182,7 +2182,7 @@ psync_fs_reopen_file_for_writing(psync_openfile_t *of) {
|
|||
of, of->hash, size);
|
||||
ppagecache_unlock_pages();
|
||||
if (unlikely_log(ret)) {
|
||||
psync_free(encsymkey);
|
||||
free(encsymkey);
|
||||
return -EIO;
|
||||
}
|
||||
}
|
||||
|
|
@ -2192,7 +2192,7 @@ psync_fs_reopen_file_for_writing(psync_openfile_t *of) {
|
|||
cr = psync_fstask_add_modified_file(of->currentfolder, of->currentname,
|
||||
of->fileid, of->hash, encsymkey,
|
||||
encsymkeylen);
|
||||
psync_free(encsymkey);
|
||||
free(encsymkey);
|
||||
if (unlikely_log(!cr)) {
|
||||
psync_sql_unlock();
|
||||
return -EIO;
|
||||
|
|
@ -2248,13 +2248,13 @@ psync_fs_reopen_static_file_for_writing(psync_openfile_t *of) {
|
|||
if (likely_log(cr)) {
|
||||
ptree_del(&of->currentfolder->creats, &cr->tree);
|
||||
of->currentfolder->taskscnt--;
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
}
|
||||
un = psync_fstask_find_unlink(of->currentfolder, of->currentname, taskid);
|
||||
if (likely_log(un)) {
|
||||
ptree_del(&of->currentfolder->unlinks, &un->tree);
|
||||
of->currentfolder->taskscnt--;
|
||||
psync_free(un);
|
||||
free(un);
|
||||
}
|
||||
psync_sql_unlock();
|
||||
of->writeid = 0;
|
||||
|
|
@ -2528,7 +2528,7 @@ static int psync_fs_mkdir(const char *path, mode_t mode) {
|
|||
else
|
||||
ret = psync_fstask_mkdir(fpath->folderid, fpath->name, fpath->flags);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
debug(D_NOTICE, "mkdir %s=%d", path, ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -2548,7 +2548,7 @@ static int psync_fs_can_rmdir(const char *path) {
|
|||
else
|
||||
ret = psync_fstask_can_rmdir(fpath->folderid, fpath->flags, fpath->name);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
debug(D_NOTICE, "can_rmdir %s=%d", path, ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -2569,7 +2569,7 @@ static int psync_fs_rmdir(const char *path) {
|
|||
else
|
||||
ret = psync_fstask_rmdir(fpath->folderid, fpath->flags, fpath->name);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
debug(D_NOTICE, "rmdir %s=%d", path, ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -2589,7 +2589,7 @@ static int psync_fs_can_unlink(const char *path) {
|
|||
else
|
||||
ret = psync_fstask_can_unlink(fpath->folderid, fpath->name);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
debug(D_NOTICE, "can_unlink %s=%d", path, ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -2620,7 +2620,7 @@ static int psync_fs_unlink(const char *path) {
|
|||
(void *)PEVENT_BKUP_F_DEL_DRIVE);
|
||||
}
|
||||
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
debug(D_NOTICE, "unlink %s=%d", path, ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -2641,22 +2641,22 @@ static int psync_fs_rename_static_file(psync_fstask_folder_t *srcfolder,
|
|||
un = psync_fstask_find_unlink(dstfolder, new_name, cr->taskid);
|
||||
if (un) {
|
||||
ptree_del(&dstfolder->unlinks, &un->tree);
|
||||
psync_free(un);
|
||||
free(un);
|
||||
dstfolder->taskscnt--;
|
||||
}
|
||||
ptree_del(&dstfolder->creats, &cr->tree);
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
dstfolder->taskscnt--;
|
||||
}
|
||||
len = strlen(new_name) + 1;
|
||||
un = (psync_fstask_unlink_t *)psync_malloc(
|
||||
un = (psync_fstask_unlink_t *)malloc(
|
||||
offsetof(psync_fstask_unlink_t, name) + len);
|
||||
un->fileid = 0;
|
||||
un->taskid = srccr->taskid;
|
||||
memcpy(un->name, new_name, len);
|
||||
psync_fstask_inject_unlink(dstfolder, un);
|
||||
addlen = psync_fstask_creat_local_offset(len - 1);
|
||||
cr = (psync_fstask_creat_t *)psync_malloc(addlen +
|
||||
cr = (psync_fstask_creat_t *)malloc(addlen +
|
||||
sizeof(psync_fstask_local_creat_t));
|
||||
cr->fileid = 0;
|
||||
cr->rfileid = 0;
|
||||
|
|
@ -2669,11 +2669,11 @@ static int psync_fs_rename_static_file(psync_fstask_folder_t *srcfolder,
|
|||
un = psync_fstask_find_unlink(srcfolder, srccr->name, srccr->taskid);
|
||||
if (likely_log(un)) {
|
||||
ptree_del(&srcfolder->unlinks, &un->tree);
|
||||
psync_free(un);
|
||||
free(un);
|
||||
srcfolder->taskscnt--;
|
||||
}
|
||||
ptree_del(&srcfolder->creats, &srccr->tree);
|
||||
psync_free(srccr);
|
||||
free(srccr);
|
||||
srcfolder->taskscnt--;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -2990,16 +2990,16 @@ finish:
|
|||
if (folder)
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
psync_sql_unlock();
|
||||
psync_free(fold_path);
|
||||
psync_free(fnew_path);
|
||||
free(fold_path);
|
||||
free(fnew_path);
|
||||
return PRINT_RETURN_FORMAT(ret, " for rename from %s to %s", old_path,
|
||||
new_path);
|
||||
err_enoent:
|
||||
if (folder)
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
psync_sql_unlock();
|
||||
psync_free(fold_path);
|
||||
psync_free(fnew_path);
|
||||
free(fold_path);
|
||||
free(fnew_path);
|
||||
debug(D_NOTICE, "returning ENOENT, folder not found");
|
||||
return -ENOENT;
|
||||
}
|
||||
|
|
@ -3089,7 +3089,7 @@ static int psync_fs_set_filetime_locked(psync_fsfileid_t fileid,
|
|||
debug(D_NOTICE, "setting %s time of %s to %lu=%d",
|
||||
crtime ? "creation" : "modification", filename,
|
||||
(unsigned long)tv->tv_sec, ret);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
return ret ? -EACCES : 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -3188,7 +3188,7 @@ static int psync_fs_set_time(const char *path, const struct timespec *tv,
|
|||
else
|
||||
ret = psync_fs_set_time_locked(fpath->folderid, fpath->name, tv, crtime);
|
||||
psync_sql_unlock();
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -3307,7 +3307,7 @@ static void psync_invalidate_os_cache_noret() {
|
|||
pthread_mutex_unlock(&start_mutex);
|
||||
if (path) {
|
||||
pfile_invalidate_os_cache(path);
|
||||
psync_free(path);
|
||||
free(path);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3380,7 +3380,7 @@ void psync_fs_refresh_folder(psync_folderid_t folderid) {
|
|||
} else
|
||||
fpath = NULL;
|
||||
pthread_mutex_unlock(&start_mutex);
|
||||
psync_free(path);
|
||||
free(path);
|
||||
if (!fpath)
|
||||
return;
|
||||
if (pfile_invalidate_os_cache_needed())
|
||||
|
|
@ -3393,7 +3393,7 @@ void psync_fs_refresh_folder(psync_folderid_t folderid) {
|
|||
pfile_delete(fpath);
|
||||
}
|
||||
}
|
||||
psync_free(fpath);
|
||||
free(fpath);
|
||||
}
|
||||
|
||||
static char *psync_fuse_get_mountpoint() {
|
||||
|
|
@ -3401,7 +3401,7 @@ static char *psync_fuse_get_mountpoint() {
|
|||
char *mp;
|
||||
mp = psync_strdup(psync_setting_get_string(_PS(fsroot)));
|
||||
if (stat(mp, &st) && mkdir(mp, PSYNC_DEFAULT_POSIX_FOLDER_MODE)) {
|
||||
psync_free(mp);
|
||||
free(mp);
|
||||
return NULL;
|
||||
}
|
||||
return mp;
|
||||
|
|
@ -3435,12 +3435,12 @@ char *psync_fs_get_path_by_folderid(psync_folderid_t folderid) {
|
|||
path =
|
||||
pfolder_path_sep(folderid, "/", NULL);
|
||||
if (path == PSYNC_INVALID_PATH) {
|
||||
psync_free(mp);
|
||||
free(mp);
|
||||
return NULL;
|
||||
}
|
||||
ret = psync_strcat(mp, path, NULL);
|
||||
psync_free(mp);
|
||||
psync_free(path);
|
||||
free(mp);
|
||||
free(path);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -3518,7 +3518,7 @@ static void psync_fs_do_stop(void) {
|
|||
#if IS_DEBUG
|
||||
psync_fs_dump_internals();
|
||||
#endif
|
||||
psync_free(mp);
|
||||
free(mp);
|
||||
}
|
||||
pthread_mutex_unlock(&start_mutex);
|
||||
}
|
||||
|
|
@ -3593,7 +3593,7 @@ static void psync_fuse_thread() {
|
|||
pthread_mutex_lock(&start_mutex);
|
||||
fuse_destroy(psync_fuse);
|
||||
debug(D_NOTICE, "fuse_destroy exited");
|
||||
psync_free(psync_current_mountpoint);
|
||||
free(psync_current_mountpoint);
|
||||
started = 0;
|
||||
pthread_cond_broadcast(&start_cond);
|
||||
pthread_mutex_unlock(&start_mutex);
|
||||
|
|
@ -3699,7 +3699,7 @@ static int psync_fs_do_start() {
|
|||
err1:
|
||||
fuse_unmount(mp, psync_fuse_channel);
|
||||
err0:
|
||||
psync_free(mp);
|
||||
free(mp);
|
||||
err00:
|
||||
pthread_mutex_unlock(&start_mutex);
|
||||
fuse_opt_free_args(&args);
|
||||
|
|
|
|||
|
|
@ -1100,17 +1100,16 @@ static int psync_fs_crypto_do_finalize_log(psync_openfile_t *of, int fullsync) {
|
|||
O_CREAT | O_TRUNC)) ==
|
||||
INVALID_HANDLE_VALUE) ||
|
||||
unlikely_log(pfscrypto_init_log(of))) {
|
||||
psync_free(olog);
|
||||
psync_free(flog);
|
||||
free(olog);
|
||||
free(flog);
|
||||
return -EIO;
|
||||
}
|
||||
ptree_for_each_element_call_safe(of->sectorsinlog, psync_sector_inlog_t,
|
||||
tree, psync_free);
|
||||
ptree_for_each_element_call_safe(of->sectorsinlog, psync_sector_inlog_t, tree, free);
|
||||
of->sectorsinlog = PSYNC_TREE_EMPTY;
|
||||
ret = psync_fs_crypto_log_flush_and_process(of, flog, 0, 1);
|
||||
pfile_delete(flog);
|
||||
psync_free(olog);
|
||||
psync_free(flog);
|
||||
free(olog);
|
||||
free(flog);
|
||||
return PRINT_NEG_RETURN(ret);
|
||||
}
|
||||
|
||||
|
|
@ -1626,8 +1625,8 @@ retry:
|
|||
// we are unlocked now
|
||||
psync_fs_lock_file(of);
|
||||
if (unlikely(ret)) {
|
||||
psync_free(ranges);
|
||||
psync_free(tmpbuf);
|
||||
free(ranges);
|
||||
free(tmpbuf);
|
||||
debug(D_NOTICE, "downloading of ranges failed");
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -1646,8 +1645,8 @@ retry:
|
|||
(unsigned long)ranges[l].offset,
|
||||
(unsigned long)(ranges[l].offset + ranges[l].size),
|
||||
(unsigned long)itr->from, (unsigned long)itr->to);
|
||||
psync_free(ranges);
|
||||
psync_free(tmpbuf);
|
||||
free(ranges);
|
||||
free(tmpbuf);
|
||||
goto retry;
|
||||
}
|
||||
debug(D_NOTICE, "wrote %u bytes to offset %lu",
|
||||
|
|
@ -1665,8 +1664,8 @@ retry:
|
|||
}
|
||||
// we do NOT need to fsync of->datafile, as we wrote to positions that
|
||||
// were empty
|
||||
psync_free(ranges);
|
||||
psync_free(tmpbuf);
|
||||
free(ranges);
|
||||
free(tmpbuf);
|
||||
if (unlikely(ret))
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -1702,8 +1701,7 @@ static int pfscrypto_truncate_to_zero(psync_openfile_t *of) {
|
|||
psync_interval_tree_add(&of->writeintervals, 0,
|
||||
pfscrypto_crypto_size(of->initialsize));
|
||||
}
|
||||
ptree_for_each_element_call_safe(of->sectorsinlog, psync_sector_inlog_t,
|
||||
tree, psync_free);
|
||||
ptree_for_each_element_call_safe(of->sectorsinlog, psync_sector_inlog_t, tree, free);
|
||||
of->sectorsinlog = PSYNC_TREE_EMPTY;
|
||||
of->currentsize = 0;
|
||||
psync_fs_crypto_kill_extender_locked(of);
|
||||
|
|
@ -1791,7 +1789,7 @@ retry:
|
|||
ptree_element(tr, psync_sector_inlog_t, tree)->sectorid >
|
||||
ptree_element(ntr, psync_sector_inlog_t, tree)->sectorid);
|
||||
ptree_del(&of->sectorsinlog, tr);
|
||||
psync_free(tr);
|
||||
free(tr);
|
||||
tr = ntr;
|
||||
}
|
||||
ret = psync_fs_crypto_write_newfile_full_sector(of, buf, lastsectorid,
|
||||
|
|
@ -1873,7 +1871,7 @@ static void psync_fs_extender_thread(void *ptr) {
|
|||
of->extender = NULL;
|
||||
pthread_mutex_unlock(&of->mutex);
|
||||
pthread_cond_destroy(&ext->cond);
|
||||
psync_free(ext);
|
||||
free(ext);
|
||||
psync_fs_dec_of_refcnt(of);
|
||||
}
|
||||
|
||||
|
|
@ -2093,7 +2091,7 @@ static void psync_fs_crypto_check_file(void *ptr, ppath_fast_stat *st) {
|
|||
path = psync_strcat((const char *)ptr, "/", st->name,
|
||||
NULL);
|
||||
psync_fs_crypto_check_log(path, st->name);
|
||||
psync_free(path);
|
||||
free(path);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ static char *get_encname_for_folder(psync_fsfolderid_t folderid,
|
|||
name = psync_strndup(path, len);
|
||||
encname = pcryptofolder_fldencode_filename(enc, name);
|
||||
pcryptofolder_fldencoder_release(folderid, enc);
|
||||
psync_free(name);
|
||||
free(name);
|
||||
return encname;
|
||||
}
|
||||
|
||||
|
|
@ -88,9 +88,9 @@ static psync_fspath_t *ret_folder_data(psync_fsfolderid_t folderid,
|
|||
encname = pcryptofolder_fldencode_filename(enc, name);
|
||||
pcryptofolder_fldencoder_release(folderid, enc);
|
||||
len = strlen(encname);
|
||||
ret = (psync_fspath_t *)psync_malloc(sizeof(psync_fspath_t) + len + 1);
|
||||
ret = (psync_fspath_t *)malloc(sizeof(psync_fspath_t) + len + 1);
|
||||
memcpy(ret + 1, encname, len + 1);
|
||||
psync_free(encname);
|
||||
free(encname);
|
||||
ret->folderid = folderid;
|
||||
ret->name = (char *)(ret + 1);
|
||||
ret->shareid = shareid;
|
||||
|
|
@ -119,7 +119,7 @@ char *get_decname_for_folder(psync_fsfolderid_t folderid, const char *path,
|
|||
name = psync_strndup(path, len);
|
||||
decname = pcryptofolder_flddecode_filename(dec, name);
|
||||
pcryptofolder_flddecoder_release(folderid, dec);
|
||||
psync_free(name);
|
||||
free(name);
|
||||
return decname;
|
||||
}
|
||||
|
||||
|
|
@ -218,7 +218,7 @@ psync_fspath_t *psync_fsfolder_resolve_path(const char *path) {
|
|||
char *name = psync_strndup(ename, elen);
|
||||
if ((mk = psync_fstask_find_mkdir(folder, name, 0))) {
|
||||
if (mk->flags & PSYNC_FOLDER_FLAG_INVISIBLE) {
|
||||
psync_free(name);
|
||||
free(name);
|
||||
break;
|
||||
}
|
||||
cfolderid = mk->folderid;
|
||||
|
|
@ -232,7 +232,7 @@ psync_fspath_t *psync_fsfolder_resolve_path(const char *path) {
|
|||
check_userid(row[3], row[0], &shareid);
|
||||
} else
|
||||
hasit = 0;
|
||||
psync_free(name);
|
||||
free(name);
|
||||
} else {
|
||||
if (row) {
|
||||
cfolderid = row[0];
|
||||
|
|
@ -244,7 +244,7 @@ psync_fspath_t *psync_fsfolder_resolve_path(const char *path) {
|
|||
hasit = 0;
|
||||
}
|
||||
if (ename != path)
|
||||
psync_free(ename);
|
||||
free(ename);
|
||||
if (!hasit)
|
||||
break;
|
||||
path += len;
|
||||
|
|
@ -320,7 +320,7 @@ psync_fsfolderid_t psync_fsfolderid_by_path(const char *path,
|
|||
hasit = 1;
|
||||
} else
|
||||
hasit = 0;
|
||||
psync_free(name);
|
||||
free(name);
|
||||
} else {
|
||||
if (row) {
|
||||
cfolderid = row[0];
|
||||
|
|
@ -330,7 +330,7 @@ psync_fsfolderid_t psync_fsfolderid_by_path(const char *path,
|
|||
hasit = 0;
|
||||
}
|
||||
if (ename != path)
|
||||
psync_free(ename);
|
||||
free(ename);
|
||||
if (!hasit)
|
||||
break;
|
||||
path += len;
|
||||
|
|
@ -407,7 +407,7 @@ psync_fsfolderid_t psync_fsfolderidperm_by_path(const char *path,
|
|||
hasit = 1;
|
||||
} else
|
||||
hasit = 0;
|
||||
psync_free(name);
|
||||
free(name);
|
||||
} else {
|
||||
if (row) {
|
||||
cfolderid = row[0];
|
||||
|
|
@ -418,7 +418,7 @@ psync_fsfolderid_t psync_fsfolderidperm_by_path(const char *path,
|
|||
hasit = 0;
|
||||
}
|
||||
if (ename != path)
|
||||
psync_free(ename);
|
||||
free(ename);
|
||||
if (!hasit)
|
||||
break;
|
||||
path += len;
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ void psync_fstask_release_folder_tasks_locked(psync_fstask_folder_t *folder) {
|
|||
if (--folder->refcnt == 0 && !folder->taskscnt) {
|
||||
debug(D_NOTICE, "releasing folder id %ld", (long int)folder->folderid);
|
||||
ptree_del(&folders, &folder->tree);
|
||||
psync_free(folder);
|
||||
free(folder);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -451,7 +451,7 @@ int psync_fstask_mkdir(psync_fsfolderid_t folderid, const char *name,
|
|||
return -EIO;
|
||||
}
|
||||
len++;
|
||||
task = (psync_fstask_mkdir_t *)psync_malloc(
|
||||
task = (psync_fstask_mkdir_t *)malloc(
|
||||
offsetof(psync_fstask_mkdir_t, name) + len);
|
||||
task->taskid = taskid;
|
||||
task->ctime = task->mtime = ctime;
|
||||
|
|
@ -627,7 +627,7 @@ int psync_fstask_rmdir(psync_fsfolderid_t folderid, uint32_t parentflags,
|
|||
}
|
||||
if (mk) {
|
||||
ptree_del(&folder->mkdirs, &mk->tree);
|
||||
psync_free(mk);
|
||||
free(mk);
|
||||
}
|
||||
if (cfolder)
|
||||
psync_fstask_release_folder_tasks_locked(cfolder);
|
||||
|
|
@ -655,7 +655,7 @@ int psync_fstask_rmdir(psync_fsfolderid_t folderid, uint32_t parentflags,
|
|||
return -EIO;
|
||||
}
|
||||
len++;
|
||||
task = (psync_fstask_rmdir_t *)psync_malloc(
|
||||
task = (psync_fstask_rmdir_t *)malloc(
|
||||
offsetof(psync_fstask_rmdir_t, name) + len);
|
||||
task->taskid = taskid;
|
||||
task->folderid = cfolderid;
|
||||
|
|
@ -702,14 +702,14 @@ psync_fstask_creat_t *psync_fstask_add_creat(psync_fstask_folder_t *folder,
|
|||
if (unlikely_log(psync_sql_commit_transaction()))
|
||||
return NULL;
|
||||
len++;
|
||||
un = (psync_fstask_unlink_t *)psync_malloc(
|
||||
un = (psync_fstask_unlink_t *)malloc(
|
||||
offsetof(psync_fstask_unlink_t, name) + len);
|
||||
un->fileid = -(psync_fsfileid_t)taskid;
|
||||
un->taskid = taskid;
|
||||
memcpy(un->name, name, len);
|
||||
psync_fstask_insert_into_tree(
|
||||
&folder->unlinks, offsetof(psync_fstask_unlink_t, name), &un->tree);
|
||||
task = (psync_fstask_creat_t *)psync_malloc(
|
||||
task = (psync_fstask_creat_t *)malloc(
|
||||
offsetof(psync_fstask_creat_t, name) + len);
|
||||
task->fileid = -(psync_fsfileid_t)taskid;
|
||||
task->rfileid = fileid;
|
||||
|
|
@ -771,20 +771,20 @@ psync_fstask_add_modified_file(psync_fstask_folder_t *folder, const char *name,
|
|||
if (task) {
|
||||
psync_fstask_depend(taskid, task->taskid);
|
||||
ptree_del(&folder->creats, &task->tree);
|
||||
psync_free(task);
|
||||
free(task);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
if (unlikely_log(psync_sql_commit_transaction()))
|
||||
return NULL;
|
||||
len++;
|
||||
un = (psync_fstask_unlink_t *)psync_malloc(
|
||||
un = (psync_fstask_unlink_t *)malloc(
|
||||
offsetof(psync_fstask_unlink_t, name) + len);
|
||||
un->fileid = fileid;
|
||||
un->taskid = taskid;
|
||||
memcpy(un->name, name, len);
|
||||
psync_fstask_insert_into_tree(
|
||||
&folder->unlinks, offsetof(psync_fstask_unlink_t, name), &un->tree);
|
||||
task = (psync_fstask_creat_t *)psync_malloc(
|
||||
task = (psync_fstask_creat_t *)malloc(
|
||||
offsetof(psync_fstask_creat_t, name) + len);
|
||||
task->fileid = -(psync_fsfileid_t)taskid;
|
||||
task->rfileid = fileid;
|
||||
|
|
@ -866,7 +866,7 @@ int psync_fstask_add_local_creat_static(psync_fsfolderid_t folderid,
|
|||
debug(D_NOTICE, "adding file %s to folderid %ld, datalen %lu", name,
|
||||
(long)folderid, (unsigned long)datalen);
|
||||
len++;
|
||||
un = (psync_fstask_unlink_t *)psync_malloc(
|
||||
un = (psync_fstask_unlink_t *)malloc(
|
||||
offsetof(psync_fstask_unlink_t, name) + len);
|
||||
un->taskid = psync_local_taskid;
|
||||
un->fileid = 0;
|
||||
|
|
@ -874,7 +874,7 @@ int psync_fstask_add_local_creat_static(psync_fsfolderid_t folderid,
|
|||
psync_fstask_insert_into_tree(
|
||||
&folder->unlinks, offsetof(psync_fstask_unlink_t, name), &un->tree);
|
||||
addlen = psync_fstask_creat_local_offset(len - 1);
|
||||
cr = (psync_fstask_creat_t *)psync_malloc(addlen +
|
||||
cr = (psync_fstask_creat_t *)malloc(addlen +
|
||||
sizeof(psync_fstask_local_creat_t));
|
||||
cr->fileid = 0;
|
||||
cr->rfileid = 0;
|
||||
|
|
@ -913,12 +913,12 @@ static psync_fsfileid_t get_file_at_old_location(psync_fsfileid_t fileid) {
|
|||
if (folder) {
|
||||
cr = psync_fstask_find_creat(folder, rec->name, 0);
|
||||
if (cr) {
|
||||
psync_free(rec);
|
||||
free(rec);
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
return cr->fileid;
|
||||
}
|
||||
if (psync_fstask_find_unlink(folder, rec->name, 0)) {
|
||||
psync_free(rec);
|
||||
free(rec);
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -933,7 +933,7 @@ static psync_fsfileid_t get_file_at_old_location(psync_fsfileid_t fileid) {
|
|||
else
|
||||
ret = 0;
|
||||
psync_sql_free_result(res);
|
||||
psync_free(rec);
|
||||
free(rec);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1018,10 +1018,10 @@ int psync_fstask_unlink(psync_fsfolderid_t folderid, const char *name) {
|
|||
if (likely_log(task)) {
|
||||
ptree_del(&folder->unlinks, &task->tree);
|
||||
folder->taskscnt--;
|
||||
psync_free(task);
|
||||
free(task);
|
||||
}
|
||||
ptree_del(&folder->creats, &cr->tree);
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
folder->taskscnt--;
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
return 0;
|
||||
|
|
@ -1029,7 +1029,7 @@ int psync_fstask_unlink(psync_fsfolderid_t folderid, const char *name) {
|
|||
depend = cr->taskid;
|
||||
fileid = cr->fileid;
|
||||
ptree_del(&folder->creats, &cr->tree);
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
folder->taskscnt--;
|
||||
if (folder->folderid >= 0)
|
||||
ppathstatus_drive_fldr_changed(folder->folderid);
|
||||
|
|
@ -1073,7 +1073,7 @@ int psync_fstask_unlink(psync_fsfolderid_t folderid, const char *name) {
|
|||
return -EIO;
|
||||
}
|
||||
len++;
|
||||
task = (psync_fstask_unlink_t *)psync_malloc(
|
||||
task = (psync_fstask_unlink_t *)malloc(
|
||||
offsetof(psync_fstask_unlink_t, name) + len);
|
||||
task->taskid = taskid;
|
||||
task->fileid = fileid;
|
||||
|
|
@ -1094,13 +1094,13 @@ static void add_history_record(psync_fileid_t fileid, psync_folderid_t folderid,
|
|||
char key[16];
|
||||
psync_get_string_id(key, "HLOC", fileid);
|
||||
while ((rec = (file_history_record *)pcache_get(key)))
|
||||
psync_free(rec);
|
||||
free(rec);
|
||||
len = strlen(name) + 1;
|
||||
rec = (file_history_record *)psync_malloc(
|
||||
rec = (file_history_record *)malloc(
|
||||
offsetof(file_history_record, name) + len);
|
||||
rec->folderid = folderid;
|
||||
memcpy(rec->name, name, len);
|
||||
pcache_add(key, rec, PSYNC_FS_FILE_LOC_HIST_SEC, psync_free, 1);
|
||||
pcache_add(key, rec, PSYNC_FS_FILE_LOC_HIST_SEC, free, 1);
|
||||
}
|
||||
|
||||
int psync_fstask_rename_file(psync_fsfileid_t fileid,
|
||||
|
|
@ -1169,14 +1169,14 @@ int psync_fstask_rename_file(psync_fsfileid_t fileid,
|
|||
}
|
||||
if (cr) {
|
||||
ptree_del(&folder->creats, &cr->tree);
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
folder->taskscnt--;
|
||||
if (folder->folderid >= 0)
|
||||
ppathstatus_drive_fldr_changed(folder->folderid);
|
||||
}
|
||||
psync_fs_rename_openfile_locked(fileid, to_folderid, new_name);
|
||||
nlen++;
|
||||
rm = (psync_fstask_unlink_t *)psync_malloc(
|
||||
rm = (psync_fstask_unlink_t *)malloc(
|
||||
offsetof(psync_fstask_unlink_t, name) + nlen);
|
||||
rm->taskid = ftaskid;
|
||||
rm->fileid = fileid;
|
||||
|
|
@ -1195,17 +1195,17 @@ int psync_fstask_rename_file(psync_fsfileid_t fileid,
|
|||
if (cr->fileid < 0)
|
||||
psync_fstask_stop_and_delete_file(cr->fileid);
|
||||
ptree_del(&folder->creats, &cr->tree);
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
rm = (psync_fstask_unlink_t *)psync_malloc(
|
||||
rm = (psync_fstask_unlink_t *)malloc(
|
||||
offsetof(psync_fstask_unlink_t, name) + nnlen);
|
||||
rm->fileid = fileid;
|
||||
rm->taskid = ttaskid;
|
||||
memcpy(rm->name, new_name, nnlen);
|
||||
psync_fstask_insert_into_tree(
|
||||
&folder->unlinks, offsetof(psync_fstask_unlink_t, name), &rm->tree);
|
||||
cr = (psync_fstask_creat_t *)psync_malloc(
|
||||
cr = (psync_fstask_creat_t *)malloc(
|
||||
offsetof(psync_fstask_creat_t, name) + nnlen);
|
||||
cr->fileid = fileid;
|
||||
cr->rfileid = rfileid;
|
||||
|
|
@ -1394,12 +1394,12 @@ int psync_fstask_rename_folder(psync_fsfolderid_t folderid,
|
|||
|
||||
if (mk) {
|
||||
ptree_del(&folder->mkdirs, &mk->tree);
|
||||
psync_free(mk);
|
||||
free(mk);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
|
||||
nlen++;
|
||||
rm = (psync_fstask_rmdir_t *)psync_malloc(
|
||||
rm = (psync_fstask_rmdir_t *)malloc(
|
||||
offsetof(psync_fstask_rmdir_t, name) + nlen);
|
||||
rm->taskid = ftaskid;
|
||||
rm->folderid = folderid;
|
||||
|
|
@ -1416,12 +1416,12 @@ int psync_fstask_rename_folder(psync_fsfolderid_t folderid,
|
|||
if (mk) {
|
||||
debug(D_NOTICE, "renaming over mkdir %s", name);
|
||||
ptree_del(&folder->mkdirs, &mk->tree);
|
||||
psync_free(mk);
|
||||
free(mk);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
|
||||
nnlen++;
|
||||
rm = (psync_fstask_rmdir_t *)psync_malloc(
|
||||
rm = (psync_fstask_rmdir_t *)malloc(
|
||||
offsetof(psync_fstask_rmdir_t, name) + nnlen);
|
||||
rm->taskid = ttaskid;
|
||||
rm->folderid = folderid;
|
||||
|
|
@ -1429,7 +1429,7 @@ int psync_fstask_rename_folder(psync_fsfolderid_t folderid,
|
|||
psync_fstask_insert_into_tree(
|
||||
&folder->rmdirs, offsetof(psync_fstask_rmdir_t, name), &rm->tree);
|
||||
|
||||
mk = (psync_fstask_mkdir_t *)psync_malloc(
|
||||
mk = (psync_fstask_mkdir_t *)malloc(
|
||||
offsetof(psync_fstask_mkdir_t, name) + nnlen);
|
||||
mk->taskid = ttaskid;
|
||||
mk->folderid = folderid;
|
||||
|
|
@ -1473,7 +1473,7 @@ void psync_fstask_folder_created(psync_folderid_t parentfolderid,
|
|||
mk = psync_fstask_find_mkdir(folder, name, taskid);
|
||||
if (mk) {
|
||||
ptree_del(&folder->mkdirs, &mk->tree);
|
||||
psync_free(mk);
|
||||
free(mk);
|
||||
folder->taskscnt--;
|
||||
pchg = 1;
|
||||
}
|
||||
|
|
@ -1531,7 +1531,7 @@ void psync_fstask_folder_deleted(psync_folderid_t parentfolderid,
|
|||
rm = psync_fstask_find_rmdir(folder, name, taskid);
|
||||
if (rm) {
|
||||
ptree_del(&folder->rmdirs, &rm->tree);
|
||||
psync_free(rm);
|
||||
free(rm);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
|
|
@ -1584,13 +1584,13 @@ void psync_fstask_file_created(psync_folderid_t parentfolderid, uint64_t taskid,
|
|||
cr = psync_fstask_find_creat(folder, name, taskid);
|
||||
if (cr) {
|
||||
ptree_del(&folder->creats, &cr->tree);
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
un = psync_fstask_find_unlink(folder, name, taskid);
|
||||
if (un) {
|
||||
ptree_del(&folder->unlinks, &un->tree);
|
||||
psync_free(un);
|
||||
free(un);
|
||||
folder->taskscnt--;
|
||||
} else
|
||||
debug(D_NOTICE, "could not find unlink for file %s in folderid %lu", name,
|
||||
|
|
@ -1616,13 +1616,13 @@ void psync_fstask_file_modified(psync_folderid_t parentfolderid,
|
|||
cr = psync_fstask_find_creat(folder, name, taskid);
|
||||
if (cr) {
|
||||
ptree_del(&folder->creats, &cr->tree);
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
un = psync_fstask_find_unlink(folder, name, taskid);
|
||||
if (un) {
|
||||
ptree_del(&folder->unlinks, &un->tree);
|
||||
psync_free(un);
|
||||
free(un);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
|
|
@ -1642,7 +1642,7 @@ void psync_fstask_file_deleted(psync_folderid_t parentfolderid, uint64_t taskid,
|
|||
un = psync_fstask_find_unlink(folder, name, taskid);
|
||||
if (un) {
|
||||
ptree_del(&folder->unlinks, &un->tree);
|
||||
psync_free(un);
|
||||
free(un);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
|
|
@ -1661,13 +1661,13 @@ void psync_fstask_file_renamed(psync_folderid_t folderid, uint64_t taskid,
|
|||
un = psync_fstask_find_unlink(folder, name, taskid);
|
||||
if (un) {
|
||||
ptree_del(&folder->unlinks, &un->tree);
|
||||
psync_free(un);
|
||||
free(un);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
cr = psync_fstask_find_creat(folder, name, taskid);
|
||||
if (cr) {
|
||||
ptree_del(&folder->creats, &cr->tree);
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
|
|
@ -1683,7 +1683,7 @@ void psync_fstask_file_renamed(psync_folderid_t folderid, uint64_t taskid,
|
|||
psync_get_number(row[0]));
|
||||
if (un) {
|
||||
ptree_del(&folder->unlinks, &un->tree);
|
||||
psync_free(un);
|
||||
free(un);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
|
|
@ -1714,13 +1714,13 @@ void psync_fstask_folder_renamed(psync_folderid_t parentfolderid,
|
|||
mk = psync_fstask_find_mkdir(folder, name, taskid);
|
||||
if (mk) {
|
||||
ptree_del(&folder->mkdirs, &mk->tree);
|
||||
psync_free(mk);
|
||||
free(mk);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
rm = psync_fstask_find_rmdir(folder, name, taskid);
|
||||
if (rm) {
|
||||
ptree_del(&folder->rmdirs, &rm->tree);
|
||||
psync_free(rm);
|
||||
free(rm);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
|
|
@ -1736,7 +1736,7 @@ void psync_fstask_folder_renamed(psync_folderid_t parentfolderid,
|
|||
psync_get_number(row[0]));
|
||||
if (rm) {
|
||||
ptree_del(&folder->rmdirs, &rm->tree);
|
||||
psync_free(rm);
|
||||
free(rm);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
psync_fstask_release_folder_tasks_locked(folder);
|
||||
|
|
@ -1768,7 +1768,7 @@ static void psync_init_task_mkdir(psync_variant_row row) {
|
|||
ctime = psync_get_number(row[6]);
|
||||
folder = psync_fstask_get_or_create_folder_tasks_locked(folderid);
|
||||
len++;
|
||||
task = (psync_fstask_mkdir_t *)psync_malloc(
|
||||
task = (psync_fstask_mkdir_t *)malloc(
|
||||
offsetof(psync_fstask_mkdir_t, name) + len);
|
||||
task->taskid = taskid;
|
||||
task->ctime = task->mtime = ctime;
|
||||
|
|
@ -1800,11 +1800,11 @@ static void psync_init_task_rmdir(psync_variant_row row) {
|
|||
mk = psync_fstask_find_mkdir(folder, name, 0);
|
||||
if (mk) {
|
||||
ptree_del(&folder->mkdirs, &mk->tree);
|
||||
psync_free(mk);
|
||||
free(mk);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
len++;
|
||||
task = (psync_fstask_rmdir_t *)psync_malloc(
|
||||
task = (psync_fstask_rmdir_t *)malloc(
|
||||
offsetof(psync_fstask_rmdir_t, name) + len);
|
||||
task->taskid = taskid;
|
||||
task->folderid = cfolderid;
|
||||
|
|
@ -1828,14 +1828,14 @@ static void psync_init_task_creat(psync_variant_row row) {
|
|||
name = psync_get_lstring(row[4], &len);
|
||||
folder = psync_fstask_get_or_create_folder_tasks_locked(folderid);
|
||||
len++;
|
||||
un = (psync_fstask_unlink_t *)psync_malloc(
|
||||
un = (psync_fstask_unlink_t *)malloc(
|
||||
offsetof(psync_fstask_unlink_t, name) + len);
|
||||
un->fileid = -(psync_fsfileid_t)taskid;
|
||||
un->taskid = taskid;
|
||||
memcpy(un->name, name, len);
|
||||
psync_fstask_insert_into_tree(
|
||||
&folder->unlinks, offsetof(psync_fstask_unlink_t, name), &un->tree);
|
||||
task = (psync_fstask_creat_t *)psync_malloc(
|
||||
task = (psync_fstask_creat_t *)malloc(
|
||||
offsetof(psync_fstask_creat_t, name) + len);
|
||||
task->fileid = -(psync_fsfileid_t)taskid;
|
||||
task->rfileid = psync_get_number(row[3]);
|
||||
|
|
@ -1860,11 +1860,11 @@ static void psync_init_do_task_unlink(uint64_t taskid,
|
|||
cr = psync_fstask_find_creat(folder, name, 0);
|
||||
if (cr) {
|
||||
ptree_del(&folder->creats, &cr->tree);
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
namelen++;
|
||||
task = (psync_fstask_unlink_t *)psync_malloc(
|
||||
task = (psync_fstask_unlink_t *)malloc(
|
||||
offsetof(psync_fstask_unlink_t, name) + namelen);
|
||||
task->taskid = taskid;
|
||||
task->fileid = fileid;
|
||||
|
|
@ -1902,11 +1902,11 @@ static void psync_init_task_renfile_from(psync_variant_row row) {
|
|||
psync_fstask_get_or_create_folder_tasks_locked(psync_get_number(row[2]));
|
||||
if ((cr = psync_fstask_find_creat(folder, name, 0))) {
|
||||
ptree_del(&folder->creats, &cr->tree);
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
len++;
|
||||
rm = (psync_fstask_unlink_t *)psync_malloc(
|
||||
rm = (psync_fstask_unlink_t *)malloc(
|
||||
offsetof(psync_fstask_unlink_t, name) + len);
|
||||
rm->taskid = psync_get_number(row[0]);
|
||||
rm->fileid = psync_get_snumber(row[3]);
|
||||
|
|
@ -1933,19 +1933,19 @@ static void psync_init_task_renfile_to(psync_variant_row row) {
|
|||
if (cr) {
|
||||
ptree_del(&folder->creats, &cr->tree);
|
||||
folder->taskscnt--;
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
}
|
||||
len++;
|
||||
taskid = psync_get_number(row[0]);
|
||||
fileid = psync_get_snumber(row[3]);
|
||||
un = (psync_fstask_unlink_t *)psync_malloc(
|
||||
un = (psync_fstask_unlink_t *)malloc(
|
||||
offsetof(psync_fstask_unlink_t, name) + len);
|
||||
un->fileid = fileid;
|
||||
un->taskid = taskid;
|
||||
memcpy(un->name, name, len);
|
||||
psync_fstask_insert_into_tree(
|
||||
&folder->unlinks, offsetof(psync_fstask_creat_t, name), &un->tree);
|
||||
cr = (psync_fstask_creat_t *)psync_malloc(
|
||||
cr = (psync_fstask_creat_t *)malloc(
|
||||
offsetof(psync_fstask_creat_t, name) + len);
|
||||
cr->fileid = fileid;
|
||||
cr->rfileid = psync_get_number(row[7]);
|
||||
|
|
@ -1971,11 +1971,11 @@ static void psync_init_task_renfolder_from(psync_variant_row row) {
|
|||
psync_fstask_get_or_create_folder_tasks_locked(psync_get_number(row[2]));
|
||||
if ((mk = psync_fstask_find_mkdir(folder, name, 0))) {
|
||||
ptree_del(&folder->mkdirs, &mk->tree);
|
||||
psync_free(mk);
|
||||
free(mk);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
len++;
|
||||
rm = (psync_fstask_rmdir_t *)psync_malloc(
|
||||
rm = (psync_fstask_rmdir_t *)malloc(
|
||||
offsetof(psync_fstask_rmdir_t, name) + len);
|
||||
rm->taskid = psync_get_number(row[0]);
|
||||
rm->folderid = psync_get_snumber(row[8]);
|
||||
|
|
@ -2000,14 +2000,14 @@ static void psync_init_task_renfolder_to(psync_variant_row row) {
|
|||
len++;
|
||||
taskid = psync_get_number(row[0]);
|
||||
folderid = psync_get_snumber(row[8]);
|
||||
rm = (psync_fstask_rmdir_t *)psync_malloc(
|
||||
rm = (psync_fstask_rmdir_t *)malloc(
|
||||
offsetof(psync_fstask_rmdir_t, name) + len);
|
||||
rm->taskid = taskid;
|
||||
rm->folderid = folderid;
|
||||
memcpy(rm->name, name, len);
|
||||
psync_fstask_insert_into_tree(
|
||||
&folder->rmdirs, offsetof(psync_fstask_rmdir_t, name), &rm->tree);
|
||||
mk = (psync_fstask_mkdir_t *)psync_malloc(
|
||||
mk = (psync_fstask_mkdir_t *)malloc(
|
||||
offsetof(psync_fstask_mkdir_t, name) + len);
|
||||
mk->taskid = taskid;
|
||||
mk->folderid = folderid;
|
||||
|
|
@ -2036,18 +2036,18 @@ static void psync_init_task_modify(psync_variant_row row) {
|
|||
cr = psync_fstask_find_creat(folder, name, 0);
|
||||
if (cr) {
|
||||
ptree_del(&folder->creats, &cr->tree);
|
||||
psync_free(cr);
|
||||
free(cr);
|
||||
folder->taskscnt--;
|
||||
}
|
||||
len++;
|
||||
un = (psync_fstask_unlink_t *)psync_malloc(
|
||||
un = (psync_fstask_unlink_t *)malloc(
|
||||
offsetof(psync_fstask_unlink_t, name) + len);
|
||||
un->fileid = psync_get_snumber(row[3]);
|
||||
un->taskid = taskid;
|
||||
memcpy(un->name, name, len);
|
||||
psync_fstask_insert_into_tree(
|
||||
&folder->unlinks, offsetof(psync_fstask_unlink_t, name), &un->tree);
|
||||
cr = (psync_fstask_creat_t *)psync_malloc(
|
||||
cr = (psync_fstask_creat_t *)malloc(
|
||||
offsetof(psync_fstask_creat_t, name) + len);
|
||||
cr->fileid = -(psync_fsfileid_t)cr->taskid;
|
||||
cr->rfileid = psync_get_number(row[3]);
|
||||
|
|
@ -2081,7 +2081,7 @@ static void psync_fstask_free_tree(psync_tree *tr) {
|
|||
tr = ptree_get_first_safe(tr);
|
||||
while (tr) {
|
||||
ntr = ptree_get_next_safe(tr);
|
||||
psync_free(tr);
|
||||
free(tr);
|
||||
tr = ntr;
|
||||
}
|
||||
}
|
||||
|
|
@ -2100,7 +2100,7 @@ void psync_fstask_clean() {
|
|||
psync_fstask_free_tree(folder->rmdirs);
|
||||
if (folder->refcnt == 0) {
|
||||
ptree_del(&folders, &folder->tree);
|
||||
psync_free(folder);
|
||||
free(folder);
|
||||
} else {
|
||||
folder->creats = PSYNC_TREE_EMPTY;
|
||||
folder->unlinks = PSYNC_TREE_EMPTY;
|
||||
|
|
@ -2119,7 +2119,7 @@ void psync_fstask_add_banned_folder(psync_fsfolderid_t folderid,
|
|||
psync_fstask_rmdir_t *rm;
|
||||
size_t len;
|
||||
len = strlen(name) + 1;
|
||||
mk = (psync_fstask_mkdir_t *)psync_malloc(
|
||||
mk = (psync_fstask_mkdir_t *)malloc(
|
||||
offsetof(psync_fstask_mkdir_t, name) + len);
|
||||
mk->taskid = 0;
|
||||
mk->ctime = mk->mtime = 0;
|
||||
|
|
@ -2127,7 +2127,7 @@ void psync_fstask_add_banned_folder(psync_fsfolderid_t folderid,
|
|||
mk->subdircnt = 0;
|
||||
mk->flags = PSYNC_FOLDER_FLAG_INVISIBLE;
|
||||
memcpy(mk->name, name, len);
|
||||
rm = (psync_fstask_rmdir_t *)psync_malloc(
|
||||
rm = (psync_fstask_rmdir_t *)malloc(
|
||||
offsetof(psync_fstask_rmdir_t, name) + len);
|
||||
rm->taskid = 0;
|
||||
rm->folderid = 0;
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ static int psync_process_task_mkdir(fsupload_task_t *task) {
|
|||
psync_sql_bind_uint(res, 1, folderid);
|
||||
psync_sql_bind_blob(res, 2, (char *)enckey, enckeylen);
|
||||
psync_sql_run_free(res);
|
||||
psync_free(enckey);
|
||||
free(enckey);
|
||||
}
|
||||
}
|
||||
debug(D_NOTICE, "folder %lu/%s created", (unsigned long)task->folderid,
|
||||
|
|
@ -272,15 +272,15 @@ static int psync_send_task_creat_upload_small(psock_t *api,
|
|||
}
|
||||
if (unlikely_log(pfile_read(fd, data + len, size) != size) ||
|
||||
unlikely_log(psync_fs_get_file_writeid(task->id) != task->int1)) {
|
||||
psync_free(data);
|
||||
free(data);
|
||||
return -1;
|
||||
}
|
||||
size += len;
|
||||
if (unlikely_log(psync_socket_writeall_upload(api, data, size) != size)) {
|
||||
psync_free(data);
|
||||
free(data);
|
||||
return -1;
|
||||
} else {
|
||||
psync_free(data);
|
||||
free(data);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -317,7 +317,7 @@ static int clean_uploads_for_task(psock_t *api, psync_uploadid_t taskid) {
|
|||
ret = -1;
|
||||
break;
|
||||
} else
|
||||
psync_free(res);
|
||||
free(res);
|
||||
}
|
||||
sql = psync_sql_prep_statement("DELETE FROM fstaskupload WHERE fstaskid=?");
|
||||
psync_sql_bind_uint(sql, 1, taskid);
|
||||
|
|
@ -340,7 +340,7 @@ static int large_upload_check_checksum(psock_t *api, uint64_t uploadid,
|
|||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (unlikely(result)) {
|
||||
debug(D_WARNING, "upload_info returned %lu", (long unsigned)result);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_apipool_release(api);
|
||||
psync_process_api_error(result);
|
||||
return -1;
|
||||
|
|
@ -348,11 +348,11 @@ static int large_upload_check_checksum(psock_t *api, uint64_t uploadid,
|
|||
if (memcmp(filehash, papi_find_result2(res, PSYNC_CHECKSUM, PARAM_STR)->str,
|
||||
PSYNC_HASH_DIGEST_HEXLEN)) {
|
||||
debug(D_WARNING, "upload_info returned different checksum");
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_apipool_release(api);
|
||||
return -1;
|
||||
}
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -416,7 +416,7 @@ static void set_key_for_fileid(psync_fileid_t fileid, uint64_t hash,
|
|||
psync_sql_bind_uint(res, 2, hash);
|
||||
psync_sql_bind_blob(res, 3, (char *)enckey, enckeylen);
|
||||
psync_sql_run_free(res);
|
||||
psync_free(enckey);
|
||||
free(enckey);
|
||||
}
|
||||
psync_get_string_id(buff, "DKEY", fileid);
|
||||
pcache_del(buff);
|
||||
|
|
@ -575,14 +575,14 @@ static int large_upload_save(psock_t *api, uint64_t uploadid,
|
|||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (unlikely(result)) {
|
||||
debug(D_WARNING, "upload_save returned %lu", (long unsigned)result);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
handle_upload_api_error_taskid(result, taskid);
|
||||
return -1;
|
||||
}
|
||||
debug(D_NOTICE, "sent mtime=%lu", (unsigned long)pfile_stat_mtime(&st));
|
||||
ret = save_meta(papi_find_result2(res, "metadata", PARAM_HASH), folderid,
|
||||
name, taskid, writeid, newfile, oldhash, key);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
pdiff_wake();
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -639,7 +639,7 @@ static int copy_file(psock_t *api, const struct stat *st,
|
|||
return -1;
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (unlikely(result)) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
debug(D_WARNING, "command copyfile returned code %u", (unsigned)result);
|
||||
psync_process_api_error(result);
|
||||
return 0;
|
||||
|
|
@ -647,7 +647,7 @@ static int copy_file(psock_t *api, const struct stat *st,
|
|||
meta = papi_find_result2(res, "metadata", PARAM_HASH);
|
||||
debug(D_NOTICE, "sent mtime=%lu", (unsigned long)pfile_stat_mtime(st));
|
||||
ret = save_meta(meta, folderid, name, taskid, writeid, 1, 0, NULL);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (ret) // ret*2-1?
|
||||
return -1;
|
||||
else
|
||||
|
|
@ -671,7 +671,7 @@ static int copy_file_if_exists(psock_t *api, const char *filename,
|
|||
return -1;
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (unlikely(result)) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
debug(D_WARNING, "command getfilesbychecksum returned code %u",
|
||||
(unsigned)result);
|
||||
psync_process_api_error(result);
|
||||
|
|
@ -679,12 +679,12 @@ static int copy_file_if_exists(psock_t *api, const char *filename,
|
|||
}
|
||||
metas = papi_find_result2(res, "metadata", PARAM_ARRAY);
|
||||
if (!metas->length) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return 0;
|
||||
}
|
||||
meta = metas->array[0];
|
||||
if (stat(filename, &st)) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return -1;
|
||||
}
|
||||
ret = copy_file(api, &st, papi_find_result2(meta, "fileid", PARAM_NUM)->num,
|
||||
|
|
@ -700,7 +700,7 @@ static int copy_file_if_exists(psock_t *api, const char *filename,
|
|||
(long unsigned)folderid, name);
|
||||
pdiff_wake();
|
||||
}
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -769,7 +769,7 @@ static int large_upload_creat(uint64_t taskid, psync_folderid_t folderid,
|
|||
goto err0;
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (unlikely(result)) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_apipool_release(api);
|
||||
debug(D_WARNING, "upload_create returned %lu", (unsigned long)result);
|
||||
psync_process_api_error(result);
|
||||
|
|
@ -779,7 +779,7 @@ static int large_upload_creat(uint64_t taskid, psync_folderid_t folderid,
|
|||
return 0;
|
||||
}
|
||||
uploadid = papi_find_result2(res, "uploadid", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
sql = psync_sql_prep_statement(
|
||||
"INSERT INTO fstaskupload (fstaskid, uploadid) VALUES (?, ?)");
|
||||
psync_sql_bind_uint(sql, 1, taskid);
|
||||
|
|
@ -796,7 +796,7 @@ static int large_upload_creat(uint64_t taskid, psync_folderid_t folderid,
|
|||
}
|
||||
if (large_upload_creat_send_write(api, uploadid, usize, fsize - usize))
|
||||
goto err1;
|
||||
buff = psync_malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
buff = malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
if (usize) {
|
||||
asize = usize;
|
||||
pupload_bytes_add(asize);
|
||||
|
|
@ -820,13 +820,13 @@ static int large_upload_creat(uint64_t taskid, psync_folderid_t folderid,
|
|||
asize += rrd;
|
||||
pupload_bytes_add(rrd);
|
||||
}
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
pfile_close(fd);
|
||||
res = papi_result(api);
|
||||
if (unlikely_log(!res))
|
||||
goto err0;
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (result) {
|
||||
debug(D_WARNING, "upload_write returned error %lu", (long unsigned)result);
|
||||
psync_process_api_error(result);
|
||||
|
|
@ -870,7 +870,7 @@ ret0:
|
|||
pupload_bytes_sub(asize);
|
||||
return 0;
|
||||
err2:
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
err1:
|
||||
pfile_close(fd);
|
||||
err0:
|
||||
|
|
@ -924,7 +924,7 @@ static int upload_modify_send_local(psock_t *api,
|
|||
return PSYNC_NET_TEMPFAIL;
|
||||
bw = 0;
|
||||
|
||||
buff = psync_malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
buff = malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
while (bw < length) {
|
||||
if (unlikely(stop_current_upload)) {
|
||||
debug(D_NOTICE, "got stop");
|
||||
|
|
@ -948,13 +948,13 @@ static int upload_modify_send_local(psock_t *api,
|
|||
*upl += rrd;
|
||||
pupload_bytes_add(rrd);
|
||||
}
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
return PSYNC_NET_OK;
|
||||
err0:
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
return PSYNC_NET_TEMPFAIL;
|
||||
errp:
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
return PSYNC_NET_PERMFAIL;
|
||||
}
|
||||
|
||||
|
|
@ -965,7 +965,7 @@ static int upload_modify_read_req(psock_t *api) {
|
|||
if (!res)
|
||||
return PSYNC_NET_TEMPFAIL;
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (result) {
|
||||
debug(D_WARNING, "got %lu from upload_writefromfile or upload_write",
|
||||
(unsigned long)result);
|
||||
|
|
@ -1022,7 +1022,7 @@ int upload_modify(uint64_t taskid, psync_folderid_t folderid, const char *name,
|
|||
goto err2;
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (unlikely(result)) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_apipool_release(api);
|
||||
psync_interval_tree_free(tree);
|
||||
debug(D_WARNING, "upload_create returned %lu", (unsigned long)result);
|
||||
|
|
@ -1033,7 +1033,7 @@ int upload_modify(uint64_t taskid, psync_folderid_t folderid, const char *name,
|
|||
return 0;
|
||||
}
|
||||
uploadid = papi_find_result2(res, "uploadid", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
sql = psync_sql_prep_statement(
|
||||
"INSERT INTO fstaskupload (fstaskid, uploadid) VALUES (?, ?)");
|
||||
psync_sql_bind_uint(sql, 1, taskid);
|
||||
|
|
@ -1229,10 +1229,10 @@ static void large_upload() {
|
|||
psync_fsupload_wake();
|
||||
psys_sleep_milliseconds(PSYNC_SLEEP_ON_FAILED_UPLOAD);
|
||||
}
|
||||
psync_free(indexname);
|
||||
psync_free(filename);
|
||||
psync_free(name);
|
||||
psync_free(key);
|
||||
free(indexname);
|
||||
free(filename);
|
||||
free(name);
|
||||
free(key);
|
||||
}
|
||||
debug(D_NOTICE, "exited");
|
||||
}
|
||||
|
|
@ -1280,7 +1280,7 @@ int psync_fsupload_in_current_small_uploads_batch_locked(uint64_t taskid) {
|
|||
stret = stat(filename, &st);
|
||||
if (stret)
|
||||
debug(D_WARNING, "can not stat %s", filename);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
if (stret)
|
||||
return 1;
|
||||
if (pfile_stat_size(&st) > PSYNC_FS_DIRECT_UPLOAD_LIMIT)
|
||||
|
|
@ -1305,7 +1305,7 @@ static int psync_send_task_creat(psock_t *api, fsupload_task_t *task) {
|
|||
filename = psync_strcat(psync_setting_get_string(_PS(fscachepath)),
|
||||
"/", fileidhex, NULL);
|
||||
fd = pfile_open(filename, O_RDONLY, 0);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
if (unlikely_log(fd == INVALID_HANDLE_VALUE) ||
|
||||
unlikely_log(fstat(fd, &st))) {
|
||||
if (fd != INVALID_HANDLE_VALUE)
|
||||
|
|
@ -1522,7 +1522,7 @@ int2, sfolderid FROM fstask WHERE id=?"); psync_sql_bind_uint(res, 1, id);
|
|||
size+=row[4].length+1;
|
||||
if (row[5].type==PSYNC_TSTRING)
|
||||
size+=row[5].length+1;
|
||||
task=(fsupload_task_t *)psync_malloc(size);
|
||||
task=(fsupload_task_t *)malloc(size);
|
||||
end=(char *)(task+1);
|
||||
task->res=NULL;
|
||||
task->id=psync_get_number(row[0]);
|
||||
|
|
@ -1612,7 +1612,7 @@ static void change_folder_name(fsupload_task_t *task) {
|
|||
psync_sql_run_free(res);
|
||||
debug(D_NOTICE, "changed target name of task %lu from %s to %s",
|
||||
(unsigned long)task->id, task->text1, nn);
|
||||
psync_free(nn);
|
||||
free(nn);
|
||||
}
|
||||
|
||||
static int handle_rename_folder_api_error(uint64_t result,
|
||||
|
|
@ -1687,13 +1687,13 @@ static void psync_delete_write_cache_file(uint64_t taskid, int index) {
|
|||
filename =
|
||||
psync_strcat(cachepath, "/", fileidhex, NULL);
|
||||
assertw(pfile_delete(filename) == 0);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
if (index) {
|
||||
fileidhex[sizeof(psync_fsfileid_t)] = 'i';
|
||||
filename =
|
||||
psync_strcat(cachepath, "/", fileidhex, NULL);
|
||||
assertw(pfile_delete(filename) == 0);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1927,7 +1927,7 @@ static void psync_fsupload_process_tasks(psync_list *tasks) {
|
|||
dels++;
|
||||
}
|
||||
}
|
||||
psync_free(task->res);
|
||||
free(task->res);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2035,12 +2035,12 @@ static void clean_stuck_tasks() {
|
|||
filename =
|
||||
psync_strcat(cachepath, "/", fileidhex, NULL);
|
||||
pfile_delete(filename);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
fileidhex[sizeof(psync_fsfileid_t)] = 'i';
|
||||
filename =
|
||||
psync_strcat(cachepath, "/", fileidhex, NULL);
|
||||
pfile_delete(filename);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
psync_sql_start_transaction();
|
||||
res = psync_sql_prep_statement(
|
||||
"DELETE FROM fstaskdepend WHERE dependfstaskid=?");
|
||||
|
|
@ -2051,7 +2051,7 @@ static void clean_stuck_tasks() {
|
|||
psync_sql_run_free(res);
|
||||
psync_sql_commit_transaction();
|
||||
}
|
||||
psync_free(fr);
|
||||
free(fr);
|
||||
}
|
||||
|
||||
static void psync_fsupload_check_tasks() {
|
||||
|
|
@ -2087,7 +2087,7 @@ static void psync_fsupload_check_tasks() {
|
|||
size += row[4].length + 1;
|
||||
if (row[5].type == PSYNC_TSTRING)
|
||||
size += row[5].length + 1;
|
||||
task = (fsupload_task_t *)psync_malloc(size);
|
||||
task = (fsupload_task_t *)malloc(size);
|
||||
end = (char *)(task + 1);
|
||||
task->res = NULL;
|
||||
task->id = psync_get_number(row[0]);
|
||||
|
|
@ -2122,7 +2122,7 @@ static void psync_fsupload_check_tasks() {
|
|||
psync_sql_lock();
|
||||
current_upload_batch = NULL;
|
||||
psync_sql_unlock();
|
||||
psync_list_for_each_element_call(&tasks, fsupload_task_t, list, psync_free);
|
||||
psync_list_for_each_element_call(&tasks, fsupload_task_t, list, free);
|
||||
}
|
||||
|
||||
static void psync_fsupload_thread() {
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ static int64_t xattr_get_object_id_locked(const char *path) {
|
|||
if (folder) {
|
||||
mk = psync_fstask_find_mkdir(folder, fspath->name, 0);
|
||||
if (mk) {
|
||||
psync_free(fspath);
|
||||
free(fspath);
|
||||
assertw(mk->folderid != 0);
|
||||
if (mk->folderid > 0)
|
||||
return folderid_to_objid(mk->folderid);
|
||||
|
|
@ -158,7 +158,7 @@ static int64_t xattr_get_object_id_locked(const char *path) {
|
|||
}
|
||||
cr = psync_fstask_find_creat(folder, fspath->name, 0);
|
||||
if (cr) {
|
||||
psync_free(fspath);
|
||||
free(fspath);
|
||||
if (cr->fileid > 0)
|
||||
return fileid_to_objid(cr->fileid);
|
||||
else if (cr->fileid == 0)
|
||||
|
|
@ -188,7 +188,7 @@ static int64_t xattr_get_object_id_locked(const char *path) {
|
|||
checkfile = !psync_fstask_find_unlink(folder, fspath->name, 0);
|
||||
}
|
||||
if (fspath->folderid < 0) {
|
||||
psync_free(fspath);
|
||||
free(fspath);
|
||||
debug(D_NOTICE, "path %s not found in temporary folder", path);
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -203,7 +203,7 @@ static int64_t xattr_get_object_id_locked(const char *path) {
|
|||
ret = -1;
|
||||
psync_sql_free_result(res);
|
||||
if (ret != -1) {
|
||||
psync_free(fspath);
|
||||
free(fspath);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
|
@ -218,11 +218,11 @@ static int64_t xattr_get_object_id_locked(const char *path) {
|
|||
ret = -1;
|
||||
psync_sql_free_result(res);
|
||||
if (ret != -1) {
|
||||
psync_free(fspath);
|
||||
free(fspath);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
psync_free(fspath);
|
||||
free(fspath);
|
||||
debug(D_NOTICE, "path %s not found", path);
|
||||
return -1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,10 +58,10 @@ psync_interval_tree_consume_intervals(psync_interval_tree_t *tree,
|
|||
psync_interval_tree_del(&tree, next);
|
||||
if (next->to >= e->to) {
|
||||
e->to = next->to;
|
||||
psync_free(next);
|
||||
free(next);
|
||||
break;
|
||||
}
|
||||
psync_free(next);
|
||||
free(next);
|
||||
}
|
||||
return tree;
|
||||
}
|
||||
|
|
@ -144,8 +144,7 @@ void psync_interval_tree_remove(psync_interval_tree_t **tree, uint64_t from,
|
|||
|
||||
void psync_interval_tree_free(psync_interval_tree_t *tree) {
|
||||
if (tree)
|
||||
ptree_for_each_element_call_safe(&tree->tree, psync_interval_tree_t,
|
||||
tree, psync_free);
|
||||
ptree_for_each_element_call_safe(&tree->tree, psync_interval_tree_t, tree, free);
|
||||
}
|
||||
|
||||
static psync_interval_tree_t *
|
||||
|
|
@ -160,7 +159,7 @@ psync_interval_tree_get_cut_end(psync_interval_tree_t *tree, uint64_t end) {
|
|||
prev = psync_interval_tree_get_prev(last);
|
||||
tree = psync_interval_tree_element(
|
||||
ptree_get_del(&tree->tree, &last->tree));
|
||||
psync_free(last);
|
||||
free(last);
|
||||
last = prev;
|
||||
}
|
||||
return tree;
|
||||
|
|
|
|||
|
|
@ -183,7 +183,7 @@ char *psync_strcat(const char *str, ...) {
|
|||
size += len;
|
||||
}
|
||||
va_end(ap);
|
||||
ptr2 = ptr3 = (char *)psync_malloc(size);
|
||||
ptr2 = ptr3 = (char *)malloc(size);
|
||||
for (size = 0; size < i; size++) {
|
||||
memcpy(ptr2, strs[size], lengths[size]);
|
||||
ptr2 += lengths[size];
|
||||
|
|
@ -211,7 +211,7 @@ unsigned char *psync_base32_encode(const unsigned char *str, size_t length,
|
|||
unsigned char *p;
|
||||
uint32_t bits, buff;
|
||||
|
||||
result = (unsigned char *)psync_malloc(((length + 4) / 5) * 8 + 1);
|
||||
result = (unsigned char *)malloc(((length + 4) / 5) * 8 + 1);
|
||||
p = result;
|
||||
|
||||
bits = 0;
|
||||
|
|
@ -247,7 +247,7 @@ unsigned char *psync_base32_decode(const unsigned char *str, size_t length,
|
|||
unsigned char *result, *p;
|
||||
uint32_t bits, buff;
|
||||
unsigned char ch;
|
||||
result = (unsigned char *)psync_malloc((length + 7) / 8 * 5 + 1);
|
||||
result = (unsigned char *)malloc((length + 7) / 8 * 5 + 1);
|
||||
p = result;
|
||||
bits = 0;
|
||||
buff = 0;
|
||||
|
|
@ -259,7 +259,7 @@ unsigned char *psync_base32_decode(const unsigned char *str, size_t length,
|
|||
else if (ch >= '2' && ch <= '7')
|
||||
ch -= '2' - 26;
|
||||
else {
|
||||
psync_free(result);
|
||||
free(result);
|
||||
return NULL;
|
||||
}
|
||||
buff = (buff << 5) + ch;
|
||||
|
|
@ -280,7 +280,7 @@ unsigned char *psync_base64_encode(const unsigned char *str, size_t length,
|
|||
unsigned char *p;
|
||||
unsigned char *result;
|
||||
|
||||
result = (unsigned char *)psync_malloc(((length + 2) / 3) * 4 + 1);
|
||||
result = (unsigned char *)malloc(((length + 2) / 3) * 4 + 1);
|
||||
p = result;
|
||||
|
||||
while (length > 2) {
|
||||
|
|
@ -313,14 +313,14 @@ unsigned char *psync_base64_decode(const unsigned char *str, size_t length,
|
|||
size_t i = 0, j = 0;
|
||||
ssize_t ch;
|
||||
|
||||
result = (unsigned char *)psync_malloc((length + 3) / 4 * 3 + 1);
|
||||
result = (unsigned char *)malloc((length + 3) / 4 * 3 + 1);
|
||||
|
||||
while (length-- > 0) {
|
||||
ch = base64_reverse_table[*current++];
|
||||
if (ch == -1)
|
||||
continue;
|
||||
else if (ch == -2) {
|
||||
psync_free(result);
|
||||
free(result);
|
||||
return NULL;
|
||||
}
|
||||
switch (i % 4) {
|
||||
|
|
@ -756,7 +756,7 @@ void psync_sql_rdunlock() {
|
|||
debug(D_WARNING,
|
||||
"held database read lock for %lu milliseconds taken at %s:%u", msec,
|
||||
lock->file, lock->line);
|
||||
psync_free(lock);
|
||||
free(lock);
|
||||
} else
|
||||
plocks_unlock(&psync_db_lock);
|
||||
#else
|
||||
|
|
@ -788,7 +788,7 @@ int psync_sql_tryupgradelock() {
|
|||
assert(sqllockcnt == 1);
|
||||
sqllockstart = sqlrdlockstart;
|
||||
record_wrlock(lock->file, lock->line);
|
||||
psync_free(lock);
|
||||
free(lock);
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
|
|
@ -869,7 +869,7 @@ static void run_commit_callbacks(int success) {
|
|||
cb->commit_callback(cb->ptr);
|
||||
else
|
||||
cb->rollback_callback(cb->ptr);
|
||||
psync_free(cb);
|
||||
free(cb);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -927,7 +927,7 @@ static void psync_sql_do_check_query_plan(const char *sql) {
|
|||
int code;
|
||||
exsql = psync_strcat("EXPLAIN QUERY PLAN ", sql, NULL);
|
||||
code = sqlite3_prepare_v2(psync_db, exsql, -1, &stmt, 0);
|
||||
psync_free(exsql);
|
||||
free(exsql);
|
||||
if (code != SQLITE_OK) {
|
||||
debug(D_ERROR, "EXPLAIN QUERY PLAN %s returned error: %d", sql, code);
|
||||
return;
|
||||
|
|
@ -1080,7 +1080,7 @@ char **psync_sql_rowstr(const char *sql) {
|
|||
lens[i] = l;
|
||||
}
|
||||
ln += (sizeof(char *) + 1) * cnt;
|
||||
arr = (char **)psync_malloc(ln);
|
||||
arr = (char **)malloc(ln);
|
||||
nstr = ((char *)arr) + sizeof(char *) * cnt;
|
||||
for (i = 0; i < cnt; i++) {
|
||||
str = (char *)sqlite3_column_blob(stmt, i);
|
||||
|
|
@ -1142,7 +1142,7 @@ psync_variant *psync_sql_row(const char *sql) {
|
|||
lens[i] = l;
|
||||
}
|
||||
}
|
||||
arr = (psync_variant *)psync_malloc(ln);
|
||||
arr = (psync_variant *)malloc(ln);
|
||||
nstr = ((char *)arr) + sizeof(psync_variant) * cnt;
|
||||
for (i = 0; i < cnt; i++) {
|
||||
t = types[i];
|
||||
|
|
@ -1212,7 +1212,7 @@ psync_sql_res *psync_sql_query_nocache(const char *sql) {
|
|||
return NULL;
|
||||
}
|
||||
cnt = sqlite3_column_count(stmt);
|
||||
res = (psync_sql_res *)psync_malloc(sizeof(psync_sql_res) +
|
||||
res = (psync_sql_res *)malloc(sizeof(psync_sql_res) +
|
||||
cnt * sizeof(psync_variant));
|
||||
res->stmt = stmt;
|
||||
res->sql = sql;
|
||||
|
|
@ -1280,7 +1280,7 @@ psync_sql_res *psync_sql_query_rdlock_nocache(const char *sql) {
|
|||
return NULL;
|
||||
}
|
||||
cnt = sqlite3_column_count(stmt);
|
||||
res = (psync_sql_res *)psync_malloc(sizeof(psync_sql_res) +
|
||||
res = (psync_sql_res *)malloc(sizeof(psync_sql_res) +
|
||||
cnt * sizeof(psync_variant));
|
||||
res->stmt = stmt;
|
||||
res->sql = sql;
|
||||
|
|
@ -1347,7 +1347,7 @@ psync_sql_res *psync_sql_query_nolock_nocache(const char *sql) {
|
|||
return NULL;
|
||||
}
|
||||
cnt = sqlite3_column_count(stmt);
|
||||
res = (psync_sql_res *)psync_malloc(sizeof(psync_sql_res) +
|
||||
res = (psync_sql_res *)malloc(sizeof(psync_sql_res) +
|
||||
cnt * sizeof(psync_variant));
|
||||
res->stmt = stmt;
|
||||
res->sql = sql;
|
||||
|
|
@ -1395,7 +1395,7 @@ static void psync_sql_free_cache(void *ptr) {
|
|||
#if IS_DEBUG
|
||||
memset(res, 0xff, sizeof(psync_sql_res));
|
||||
#endif
|
||||
psync_free(res);
|
||||
free(res);
|
||||
}
|
||||
|
||||
static void psync_sql_res_unlock(psync_sql_res *res) {
|
||||
|
|
@ -1435,7 +1435,7 @@ void psync_sql_free_result_nocache(psync_sql_res *res) {
|
|||
#if IS_DEBUG
|
||||
memset(res, 0xff, sizeof(psync_sql_res));
|
||||
#endif
|
||||
psync_free(res);
|
||||
free(res);
|
||||
}
|
||||
|
||||
#if IS_DEBUG
|
||||
|
|
@ -1551,7 +1551,7 @@ int psync_sql_run_free_nocache(psync_sql_res *res) {
|
|||
code = 0;
|
||||
sqlite3_finalize(res->stmt);
|
||||
psync_sql_res_unlock(res);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return code;
|
||||
}
|
||||
|
||||
|
|
@ -1569,7 +1569,7 @@ int psync_sql_run_free(psync_sql_res *res) {
|
|||
debug(D_BUG, "transaction query failed, this may lead to restarting "
|
||||
"transaction over and over");
|
||||
psync_sql_res_unlock(res);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return -1;
|
||||
} else {
|
||||
psync_sql_res_unlock(res);
|
||||
|
|
@ -1698,7 +1698,7 @@ psync_full_result_int *psync_sql_fetchall_int(psync_sql_res *res) {
|
|||
while ((code = sqlite3_step(res->stmt)) == SQLITE_ROW) {
|
||||
if (rows >= all) {
|
||||
all = 10 + all * 2;
|
||||
data = (uint64_t *)psync_realloc(data, sizeof(uint64_t) * cols * all);
|
||||
data = (uint64_t *)realloc(data, sizeof(uint64_t) * cols * all);
|
||||
}
|
||||
for (i = 0; i < cols; i++)
|
||||
data[off + i] = sqlite3_column_int64(res->stmt, i);
|
||||
|
|
@ -1708,12 +1708,12 @@ psync_full_result_int *psync_sql_fetchall_int(psync_sql_res *res) {
|
|||
if (unlikely(code != SQLITE_DONE))
|
||||
debug(D_ERROR, "sqlite3_step returned error: %s", sqlite3_errmsg(psync_db));
|
||||
psync_sql_free_result(res);
|
||||
ret = (psync_full_result_int *)psync_malloc(
|
||||
ret = (psync_full_result_int *)malloc(
|
||||
offsetof(psync_full_result_int, data) + sizeof(uint64_t) * off);
|
||||
ret->rows = rows;
|
||||
ret->cols = cols;
|
||||
memcpy(ret->data, data, sizeof(uint64_t) * off);
|
||||
psync_free(data);
|
||||
free(data);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1732,7 +1732,7 @@ int psync_rename_conflicted_file(const char *path) {
|
|||
dotidx--;
|
||||
if (!dotidx)
|
||||
dotidx = plen;
|
||||
npath = (char *)psync_malloc(plen + 32);
|
||||
npath = (char *)malloc(plen + 32);
|
||||
memcpy(npath, path, dotidx);
|
||||
num = 0;
|
||||
while (1) {
|
||||
|
|
@ -1746,7 +1746,7 @@ int psync_rename_conflicted_file(const char *path) {
|
|||
if (stat(npath, &st)) {
|
||||
debug(D_NOTICE, "renaming conflict %s to %s", path, npath);
|
||||
l = pfile_rename(path, npath);
|
||||
psync_free(npath);
|
||||
free(npath);
|
||||
return l;
|
||||
}
|
||||
num++;
|
||||
|
|
@ -1766,7 +1766,7 @@ static void run_after_sec(psync_timer_t timer, void *ptr) {
|
|||
struct run_after_ptr *fp = (struct run_after_ptr *)ptr;
|
||||
ptimer_stop(timer);
|
||||
fp->run(fp->ptr);
|
||||
psync_free(fp);
|
||||
free(fp);
|
||||
}
|
||||
|
||||
void psync_run_after_sec(psync_run_after_t run, void *ptr, uint32_t seconds) {
|
||||
|
|
@ -1779,7 +1779,7 @@ void psync_run_after_sec(psync_run_after_t run, void *ptr, uint32_t seconds) {
|
|||
|
||||
static void free_after_sec(psync_timer_t timer, void *ptr) {
|
||||
ptimer_stop(timer);
|
||||
psync_free(ptr);
|
||||
free(ptr);
|
||||
}
|
||||
|
||||
void psync_free_after_sec(void *ptr, uint32_t seconds) {
|
||||
|
|
@ -1919,7 +1919,7 @@ void psync_list_bulder_add_sql(psync_list_builder_t *builder,
|
|||
while ((row = psync_sql_fetch_row(res))) {
|
||||
if (!builder->last_elements ||
|
||||
builder->last_elements->used >= builder->elements_per_list) {
|
||||
builder->last_elements = (psync_list_element_list *)psync_malloc(
|
||||
builder->last_elements = (psync_list_element_list *)malloc(
|
||||
offsetof(psync_list_element_list, elements) +
|
||||
builder->element_size * builder->elements_per_list);
|
||||
psync_list_add_tail(&builder->element_list,
|
||||
|
|
@ -1946,7 +1946,7 @@ void psync_list_bulder_add_sql(psync_list_builder_t *builder,
|
|||
void *psync_list_bulder_add_element(psync_list_builder_t *builder) {
|
||||
if (!builder->last_elements ||
|
||||
builder->last_elements->used >= builder->elements_per_list) {
|
||||
builder->last_elements = (psync_list_element_list *)psync_malloc(
|
||||
builder->last_elements = (psync_list_element_list *)malloc(
|
||||
offsetof(psync_list_element_list, elements) +
|
||||
builder->element_size * builder->elements_per_list);
|
||||
psync_list_add_tail(&builder->element_list, &builder->last_elements->list);
|
||||
|
|
@ -1970,13 +1970,13 @@ void psync_list_add_lstring_offset(psync_list_builder_t *builder, size_t offset,
|
|||
str = (char **)(builder->current_element + offset);
|
||||
builder->stringalloc += length;
|
||||
if (unlikely(length > 2000)) {
|
||||
l = (psync_list_string_list *)psync_malloc(sizeof(psync_list_string_list) +
|
||||
l = (psync_list_string_list *)malloc(sizeof(psync_list_string_list) +
|
||||
length);
|
||||
s = (char *)(l + 1);
|
||||
psync_list_add_tail(&builder->string_list, &l->list);
|
||||
} else if (!builder->last_strings || builder->last_strings->next + length >
|
||||
builder->last_strings->end) {
|
||||
l = (psync_list_string_list *)psync_malloc(sizeof(psync_list_string_list) +
|
||||
l = (psync_list_string_list *)malloc(sizeof(psync_list_string_list) +
|
||||
4000);
|
||||
s = (char *)(l + 1);
|
||||
l->next = s + length;
|
||||
|
|
@ -2041,13 +2041,10 @@ void *psync_list_builder_finalize(psync_list_builder_t *builder) {
|
|||
}
|
||||
}
|
||||
|
||||
psync_list_for_each_element_call(&builder->element_list,
|
||||
psync_list_element_list, list, psync_free);
|
||||
psync_list_for_each_element_call(&builder->string_list,
|
||||
psync_list_string_list, list, psync_free);
|
||||
psync_list_for_each_element_call(&builder->number_list, psync_list_num_list,
|
||||
list, psync_free);
|
||||
psync_free(builder);
|
||||
psync_list_for_each_element_call(&builder->element_list, psync_list_element_list, list, free);
|
||||
psync_list_for_each_element_call(&builder->string_list, psync_list_string_list, list, free);
|
||||
psync_list_for_each_element_call(&builder->number_list, psync_list_num_list, list, free);
|
||||
free(builder);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -2081,7 +2078,7 @@ static void psync_task_destroy(psync_task_manager_t tm) {
|
|||
for (i = 0; i < tm->taskcnt; i++)
|
||||
pthread_cond_destroy(&tm->tasks[i].cond);
|
||||
pthread_mutex_destroy(&tm->mutex);
|
||||
psync_free(tm);
|
||||
free(tm);
|
||||
}
|
||||
|
||||
static void psync_task_dec_refcnt(psync_task_manager_t tm) {
|
||||
|
|
@ -2111,7 +2108,7 @@ psync_task_run_tasks(psync_task_callback_t const *callbacks,
|
|||
psync_task_manager_t ret;
|
||||
struct psync_task_t_ *t;
|
||||
int i;
|
||||
ret = (psync_task_manager_t)psync_malloc(
|
||||
ret = (psync_task_manager_t)malloc(
|
||||
offsetof(struct psync_task_manager_t_, tasks) +
|
||||
sizeof(struct psync_task_t_) * cnt);
|
||||
pthread_mutex_init(&ret->mutex, NULL);
|
||||
|
|
|
|||
|
|
@ -219,8 +219,8 @@ extern "C" {
|
|||
|
||||
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
|
||||
|
||||
#define psync_new(type) (type *)psync_malloc(sizeof(type))
|
||||
#define psync_new_cnt(type, cnt) (type *)psync_malloc(sizeof(type) * (cnt))
|
||||
#define psync_new(type) (type *)malloc(sizeof(type))
|
||||
#define psync_new_cnt(type, cnt) (type *)malloc(sizeof(type) * (cnt))
|
||||
|
||||
#define psync_binhex(dst, src, cnt) \
|
||||
do { \
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ static void add_dir_scan(localnotify_dir *dir, const char *path) {
|
|||
namelen = 255;
|
||||
if (namelen < sizeof(de->d_name) - 1)
|
||||
namelen = sizeof(de->d_name) - 1;
|
||||
wch = (localnotify_watch *)psync_malloc(offsetof(localnotify_watch, path) +
|
||||
wch = (localnotify_watch *)malloc(offsetof(localnotify_watch, path) +
|
||||
pl + 1 + namelen + 1);
|
||||
wch->next = dir->watches[wid % WATCH_HASH];
|
||||
dir->watches[wid % WATCH_HASH] = wch;
|
||||
|
|
@ -107,8 +107,8 @@ static void add_dir_scan(localnotify_dir *dir, const char *path) {
|
|||
memcpy(wch->path, path, pl + 1);
|
||||
if (likely_log(dh = opendir(path))) {
|
||||
entrylen = offsetof(struct dirent, d_name) + namelen + 1;
|
||||
cpath = (char *)psync_malloc(pl + namelen + 2);
|
||||
entry = (struct dirent *)psync_malloc(entrylen);
|
||||
cpath = (char *)malloc(pl + namelen + 2);
|
||||
entry = (struct dirent *)malloc(entrylen);
|
||||
memcpy(cpath, path, pl);
|
||||
if (!pl || cpath[pl - 1] != '/')
|
||||
cpath[pl++] = '/';
|
||||
|
|
@ -122,8 +122,8 @@ static void add_dir_scan(localnotify_dir *dir, const char *path) {
|
|||
add_dir_scan(dir, cpath);
|
||||
}
|
||||
}
|
||||
psync_free(entry);
|
||||
psync_free(cpath);
|
||||
free(entry);
|
||||
free(cpath);
|
||||
closedir(dh);
|
||||
}
|
||||
}
|
||||
|
|
@ -141,7 +141,7 @@ static void add_syncid(psync_syncid_t syncid) {
|
|||
str = psync_get_lstring(row[0], &len);
|
||||
len++;
|
||||
dir =
|
||||
(localnotify_dir *)psync_malloc(offsetof(localnotify_dir, path) + len);
|
||||
(localnotify_dir *)malloc(offsetof(localnotify_dir, path) + len);
|
||||
memcpy(dir->path, str, len);
|
||||
psync_sql_free_result(res);
|
||||
} else {
|
||||
|
|
@ -165,7 +165,7 @@ static void add_syncid(psync_syncid_t syncid) {
|
|||
err2:
|
||||
close(dir->inotifyfd);
|
||||
err:
|
||||
psync_free(dir);
|
||||
free(dir);
|
||||
}
|
||||
|
||||
static void del_syncid(psync_syncid_t syncid) {
|
||||
|
|
@ -180,13 +180,13 @@ static void del_syncid(psync_syncid_t syncid) {
|
|||
while (wch) {
|
||||
next = wch->next;
|
||||
inotify_rm_watch(dir->inotifyfd, wch->watchid);
|
||||
psync_free(wch);
|
||||
free(wch);
|
||||
wch = next;
|
||||
}
|
||||
}
|
||||
epoll_ctl(epoll_fd, EPOLL_CTL_DEL, dir->inotifyfd, NULL);
|
||||
close(dir->inotifyfd);
|
||||
psync_free(dir);
|
||||
free(dir);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -237,7 +237,7 @@ static uint32_t process_notification(localnotify_dir *dir) {
|
|||
if (wch->watchid == ev.wd) {
|
||||
*pwch = wch->next;
|
||||
inotify_rm_watch(dir->inotifyfd, wch->watchid);
|
||||
psync_free(wch);
|
||||
free(wch);
|
||||
break;
|
||||
} else {
|
||||
pwch = &wch->next;
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ static void scanner_set_syncs_to_list(psync_list *lst,
|
|||
debug(D_WARNING, "folder %s deviceid is different, ignoring", lp);
|
||||
continue;
|
||||
}
|
||||
l = (sync_list *)psync_malloc(offsetof(sync_list, localpath) + lplen + 1);
|
||||
l = (sync_list *)malloc(offsetof(sync_list, localpath) + lplen + 1);
|
||||
l->folderid = psync_get_number(row[1]);
|
||||
l->deviceid = deviceid;
|
||||
l->syncid = psync_get_number(row[0]);
|
||||
|
|
@ -180,7 +180,7 @@ static void scanner_set_syncs_to_list(psync_list *lst,
|
|||
memcpy(l->localpath, lp, lplen + 1);
|
||||
psync_list_add_tail(lst, &l->list);
|
||||
l_full_deviceid =
|
||||
(sync_list *)psync_malloc(offsetof(sync_list, localpath) + lplen + 1);
|
||||
(sync_list *)malloc(offsetof(sync_list, localpath) + lplen + 1);
|
||||
l_full_deviceid->folderid = psync_get_number(row[1]);
|
||||
l_full_deviceid->deviceid = pfile_stat_device_full(&st);
|
||||
l_full_deviceid->syncid = psync_get_number(row[0]);
|
||||
|
|
@ -189,7 +189,7 @@ static void scanner_set_syncs_to_list(psync_list *lst,
|
|||
psync_list_add_tail(lst_deviceid_full, &l_full_deviceid->list);
|
||||
}
|
||||
psync_sql_free_result(res);
|
||||
psync_free(syncmp);
|
||||
free(syncmp);
|
||||
}
|
||||
|
||||
static void add_ignored_dir(const char *path) {
|
||||
|
|
@ -202,7 +202,7 @@ static void add_ignored_dir(const char *path) {
|
|||
ign_paths_alloc = 8;
|
||||
else
|
||||
ign_paths_alloc *= 2;
|
||||
ignored_paths = (device_inode_t *)psync_realloc(
|
||||
ignored_paths = (device_inode_t *)realloc(
|
||||
ignored_paths, sizeof(device_inode_t) * ign_paths_alloc);
|
||||
}
|
||||
ignored_paths[ign_paths_cnt].deviceid = pfile_stat_device_full(&st);
|
||||
|
|
@ -254,7 +254,7 @@ static void reload_ignored_folders() {
|
|||
homelen = strlen(home);
|
||||
}
|
||||
if (home) {
|
||||
dir = (char *)psync_malloc(dirlen + homelen - 4);
|
||||
dir = (char *)malloc(dirlen + homelen - 4);
|
||||
memcpy(dir, home, homelen);
|
||||
memcpy(dir + homelen, start + 5, dirlen - 5);
|
||||
dir[dirlen + homelen - 5] = 0;
|
||||
|
|
@ -262,15 +262,15 @@ static void reload_ignored_folders() {
|
|||
dir = NULL;
|
||||
}
|
||||
} else {
|
||||
dir = (char *)psync_malloc(dirlen + 1);
|
||||
dir = (char *)malloc(dirlen + 1);
|
||||
memcpy(dir, start, dirlen);
|
||||
dir[dirlen] = 0;
|
||||
}
|
||||
if (dir)
|
||||
add_ignored_dir(dir);
|
||||
psync_free(dir);
|
||||
free(dir);
|
||||
}
|
||||
psync_free(home);
|
||||
free(home);
|
||||
}
|
||||
|
||||
static int is_path_to_ignore(uint64_t deviceid, uint64_t inode) {
|
||||
|
|
@ -297,7 +297,7 @@ static void scanner_local_entry_to_list(void *ptr, ppath_stat *st) {
|
|||
|
||||
lst = (psync_list *)ptr;
|
||||
l = strlen(st->name) + 1;
|
||||
e = (sync_folderlist *)psync_malloc(offsetof(sync_folderlist, name) + l);
|
||||
e = (sync_folderlist *)malloc(offsetof(sync_folderlist, name) + l);
|
||||
e->localid = 0;
|
||||
e->remoteid = 0;
|
||||
e->inode = pfile_stat_inode(&st->stat);
|
||||
|
|
@ -361,7 +361,7 @@ static void scanner_db_folder_to_list(psync_syncid_t syncid,
|
|||
continue;
|
||||
}
|
||||
namelen++;
|
||||
e = (sync_folderlist *)psync_malloc(offsetof(sync_folderlist, name) +
|
||||
e = (sync_folderlist *)malloc(offsetof(sync_folderlist, name) +
|
||||
namelen);
|
||||
e->localid = psync_get_number(row[0]);
|
||||
e->remoteid = psync_get_number_or_null(row[1]);
|
||||
|
|
@ -390,7 +390,7 @@ static void scanner_db_folder_to_list(psync_syncid_t syncid,
|
|||
continue;
|
||||
}
|
||||
namelen++;
|
||||
e = (sync_folderlist *)psync_malloc(offsetof(sync_folderlist, name) +
|
||||
e = (sync_folderlist *)malloc(offsetof(sync_folderlist, name) +
|
||||
namelen);
|
||||
e->localid = psync_get_number(row[0]);
|
||||
e->remoteid = psync_get_number_or_null(row[1]);
|
||||
|
|
@ -419,7 +419,7 @@ static sync_folderlist *copy_folderlist_element(const sync_folderlist *e,
|
|||
sync_folderlist *ret;
|
||||
size_t l;
|
||||
l = offsetof(sync_folderlist, name) + strlen(e->name) + 1;
|
||||
ret = (sync_folderlist *)psync_malloc(l);
|
||||
ret = (sync_folderlist *)malloc(l);
|
||||
memcpy(ret, e, l);
|
||||
ret->localparentfolderid = localfolderid;
|
||||
ret->parentfolderid = folderid;
|
||||
|
|
@ -564,7 +564,7 @@ scanner_scan_folder(const char *localpath, psync_folderid_t folderid,
|
|||
add_deleted_element(fdb, folderid, localfolderid, syncid, synctype);
|
||||
ldb = ldb->next;
|
||||
}
|
||||
psync_list_for_each_element_call(&dblist, sync_folderlist, list, psync_free);
|
||||
psync_list_for_each_element_call(&dblist, sync_folderlist, list, free);
|
||||
if (localsleepperfolder) {
|
||||
psys_sleep_milliseconds(localsleepperfolder);
|
||||
if (psync_current_time - starttime >=
|
||||
|
|
@ -577,11 +577,10 @@ scanner_scan_folder(const char *localpath, psync_folderid_t folderid,
|
|||
subpath = psync_strcat(localpath, "/", l->name, NULL);
|
||||
scanner_scan_folder(subpath, l->remoteid, l->localid, syncid, synctype,
|
||||
deviceid);
|
||||
psync_free(subpath);
|
||||
free(subpath);
|
||||
}
|
||||
|
||||
psync_list_for_each_element_call(&disklist, sync_folderlist, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&disklist, sync_folderlist, list, free);
|
||||
}
|
||||
|
||||
static int compare_sizeinodemtime(const psync_list *l1, const psync_list *l2) {
|
||||
|
|
@ -814,7 +813,7 @@ static void scan_created_folder(sync_folderlist *fl) {
|
|||
localpath, (unsigned long)fl->localid, fl->name);
|
||||
scanner_scan_folder(localpath, 0, fl->localid, fl->syncid, fl->synctype,
|
||||
fl->deviceid);
|
||||
psync_free(localpath);
|
||||
free(localpath);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1043,9 +1042,8 @@ restart:
|
|||
break;
|
||||
}
|
||||
}
|
||||
psync_list_for_each_element_call(&slist, sync_list, list, psync_free);
|
||||
psync_list_for_each_element_call(&slist_full_deviceid, sync_list, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&slist, sync_list, list, free);
|
||||
psync_list_for_each_element_call(&slist_full_deviceid, sync_list, list, free);
|
||||
w = 0;
|
||||
|
||||
do {
|
||||
|
|
@ -1053,8 +1051,7 @@ restart:
|
|||
if (unlikely(restart_scan)) {
|
||||
pthread_mutex_unlock(&scan_mutex);
|
||||
for (i = 0; i < SCAN_LIST_CNT; i++)
|
||||
psync_list_for_each_element_call(&scan_lists[i], sync_folderlist, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&scan_lists[i], sync_folderlist, list, free);
|
||||
psys_sleep_milliseconds(restartsleep);
|
||||
if (restartsleep < 16000)
|
||||
restartsleep *= 2;
|
||||
|
|
@ -1080,11 +1077,9 @@ restart:
|
|||
w++;
|
||||
check_for_query_cnt();
|
||||
}
|
||||
psync_list_for_each_element_call(&scan_lists[SCAN_LIST_RENFOLDERSROM],
|
||||
sync_folderlist, list, psync_free);
|
||||
psync_list_for_each_element_call(&scan_lists[SCAN_LIST_RENFOLDERSROM], sync_folderlist, list, free);
|
||||
psync_list_init(&scan_lists[SCAN_LIST_RENFOLDERSROM]);
|
||||
psync_list_for_each_element_call(&scan_lists[SCAN_LIST_RENFOLDERSTO],
|
||||
sync_folderlist, list, psync_free);
|
||||
psync_list_for_each_element_call(&scan_lists[SCAN_LIST_RENFOLDERSTO], sync_folderlist, list, free);
|
||||
psync_list_init(&scan_lists[SCAN_LIST_RENFOLDERSTO]);
|
||||
psync_list_for_each_element(fl, &scan_lists[SCAN_LIST_NEWFOLDERS],
|
||||
sync_folderlist, list) {
|
||||
|
|
@ -1102,8 +1097,7 @@ restart:
|
|||
}
|
||||
psync_list_for_each_element_call(&newtmp, sync_folderlist, list,
|
||||
scan_created_folder);
|
||||
psync_list_for_each_element_call(&newtmp, sync_folderlist, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&newtmp, sync_folderlist, list, free);
|
||||
}
|
||||
if (changes) {
|
||||
i++;
|
||||
|
|
@ -1115,8 +1109,7 @@ restart:
|
|||
if (unlikely(restart_scan)) {
|
||||
pthread_mutex_unlock(&scan_mutex);
|
||||
for (i = 0; i < SCAN_LIST_CNT; i++)
|
||||
psync_list_for_each_element_call(&scan_lists[i], sync_folderlist, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&scan_lists[i], sync_folderlist, list, free);
|
||||
psys_sleep_milliseconds(restartsleep);
|
||||
if (restartsleep < 16000)
|
||||
restartsleep *= 2;
|
||||
|
|
@ -1172,8 +1165,7 @@ restart:
|
|||
pstatus_upload_recalc_async();
|
||||
}
|
||||
for (i = 0; i < SCAN_LIST_CNT; i++)
|
||||
psync_list_for_each_element_call(&scan_lists[i], sync_folderlist, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&scan_lists[i], sync_folderlist, list, free);
|
||||
if (movedfolders) {
|
||||
starttime = psync_current_time;
|
||||
restartsleep = 1000;
|
||||
|
|
@ -1270,7 +1262,7 @@ void psync_restat_sync_folders_add(psync_syncid_t syncid,
|
|||
sync_restat_list *l;
|
||||
struct stat st;
|
||||
size_t lplen = strlen(localpath);
|
||||
l = (sync_restat_list *)psync_malloc(offsetof(sync_restat_list, localpath) +
|
||||
l = (sync_restat_list *)malloc(offsetof(sync_restat_list, localpath) +
|
||||
lplen + 1);
|
||||
l->syncid = syncid;
|
||||
memcpy(l->localpath, localpath, lplen + 1);
|
||||
|
|
@ -1300,7 +1292,7 @@ void psync_restat_sync_folders_del(psync_syncid_t syncid) {
|
|||
}
|
||||
if (to_del) {
|
||||
psync_list_del(&to_del->list);
|
||||
psync_free(to_del);
|
||||
free(to_del);
|
||||
}
|
||||
pthread_mutex_unlock(&restat_mutex);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,408 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 2015 Anton Titov.
|
||||
|
||||
Copyright (c) 2015 pCloud Ltd. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met: Redistributions of source code must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer. Redistributions in binary form must reproduce the
|
||||
above copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution. Neither the name of pCloud Ltd nor the
|
||||
names of its contributors may be used to endorse or promote
|
||||
products derived from this software without specific prior written
|
||||
permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL pCloud
|
||||
Ltd BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGE.
|
||||
*/
|
||||
|
||||
#include <mbedtls/ctr_drbg.h>
|
||||
#include <mbedtls/debug.h>
|
||||
#include <mbedtls/entropy.h>
|
||||
#include <mbedtls/pkcs5.h>
|
||||
#include <mbedtls/ssl.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#include "pcryptofolder.h"
|
||||
#include "pintervaltree.h"
|
||||
#include "plibs.h"
|
||||
#include "pmem.h"
|
||||
#include "pmemlock.h"
|
||||
#include "ptree.h"
|
||||
#include <stdint.h>
|
||||
|
||||
typedef uintptr_t pageid_t;
|
||||
typedef struct {
|
||||
psync_tree tree;
|
||||
pageid_t pageid;
|
||||
unsigned long refcnt;
|
||||
} locked_page_t;
|
||||
|
||||
typedef struct {
|
||||
psync_tree tree;
|
||||
psync_interval_tree_t *freeintervals;
|
||||
char *mem;
|
||||
size_t size;
|
||||
int locked;
|
||||
} allocator_range;
|
||||
|
||||
static int psync_page_size;
|
||||
|
||||
static pthread_mutex_t page_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
static psync_tree *locked_pages = PSYNC_TREE_EMPTY;
|
||||
|
||||
static pthread_mutex_t allocator_mutex;
|
||||
static psync_tree *allocator_ranges = PSYNC_TREE_EMPTY;
|
||||
|
||||
void pmemlock_init() {
|
||||
pthread_mutexattr_t mattr;
|
||||
pthread_mutexattr_init(&mattr);
|
||||
pthread_mutexattr_settype(&mattr, PTHREAD_MUTEX_RECURSIVE);
|
||||
pthread_mutex_init(&allocator_mutex, &mattr);
|
||||
pthread_mutexattr_destroy(&mattr);
|
||||
}
|
||||
|
||||
static int lock_page(pageid_t pageid, int page_size) {
|
||||
psync_tree *tr, **addto;
|
||||
locked_page_t *node;
|
||||
int found, ret, tryn;
|
||||
found = 0;
|
||||
ret = 0;
|
||||
tryn = 0;
|
||||
retry:
|
||||
pthread_mutex_lock(&page_mutex);
|
||||
tr = locked_pages;
|
||||
if (tr) {
|
||||
while (1) {
|
||||
node = ptree_element(tr, locked_page_t, tree);
|
||||
if (pageid < node->pageid) {
|
||||
if (tr->left)
|
||||
tr = tr->left;
|
||||
else {
|
||||
addto = &tr->left;
|
||||
break;
|
||||
}
|
||||
} else if (pageid > node->pageid) {
|
||||
if (tr->right)
|
||||
tr = tr->right;
|
||||
else {
|
||||
addto = &tr->right;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else
|
||||
addto = &locked_pages;
|
||||
if (found) {
|
||||
node->refcnt++;
|
||||
debug(D_NOTICE, "page %lx is already locked, increasing refcnt to %u",
|
||||
(unsigned long)pageid * page_size, (unsigned)node->refcnt);
|
||||
} else {
|
||||
// Well, we can move the locking out of mutex protected area, but to do
|
||||
// properly, an status "in progress" should be introduced for new elements
|
||||
// in the tree that mlock is yet not returned. This will complicate things a
|
||||
// lot.
|
||||
if (unlikely(pmem_mlock((void *)(pageid * page_size), page_size))) {
|
||||
if (!tryn) {
|
||||
tryn++;
|
||||
pthread_mutex_unlock(&page_mutex);
|
||||
debug(D_NOTICE, "mlock failed, trying to clean cache");
|
||||
pcryptofolder_cache_clean();
|
||||
goto retry;
|
||||
} else {
|
||||
debug(D_WARNING, "mlock for page %lx failed even after cache clean",
|
||||
(unsigned long)pageid * page_size);
|
||||
ret = -1;
|
||||
}
|
||||
} else {
|
||||
debug(D_NOTICE, "locked page %lx", (unsigned long)pageid * page_size);
|
||||
node = psync_new(locked_page_t);
|
||||
node->pageid = pageid;
|
||||
node->refcnt = 1;
|
||||
*addto = &node->tree;
|
||||
ptree_added_at(&locked_pages, tr, &node->tree);
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&page_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int unlock_page(pageid_t pageid, int page_size) {
|
||||
psync_tree *tr;
|
||||
locked_page_t *node;
|
||||
int ret;
|
||||
pthread_mutex_lock(&page_mutex);
|
||||
tr = locked_pages;
|
||||
while (tr) {
|
||||
node = ptree_element(tr, locked_page_t, tree);
|
||||
if (pageid < node->pageid)
|
||||
tr = tr->left;
|
||||
else if (pageid > node->pageid)
|
||||
tr = tr->right;
|
||||
else
|
||||
break;
|
||||
}
|
||||
if (likely(tr)) {
|
||||
if (--node->refcnt) {
|
||||
debug(D_NOTICE, "decreased refcnt of page %lx to %u",
|
||||
(unsigned long)pageid * page_size, (unsigned)node->refcnt);
|
||||
ret = 0;
|
||||
} else {
|
||||
ptree_del(&locked_pages, tr);
|
||||
psync_free(node);
|
||||
// do not move out of the mutex, will create race conditions
|
||||
if (unlikely(pmem_munlock((void *)(pageid * page_size), page_size)))
|
||||
ret = PRINT_RETURN(-1);
|
||||
else {
|
||||
debug(D_NOTICE, "unlocked page %lx", (unsigned long)pageid * page_size);
|
||||
ret = 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ret = -1;
|
||||
debug(D_WARNING, "unlocking page %lx that is not locked",
|
||||
(unsigned long)pageid * page_size);
|
||||
}
|
||||
pthread_mutex_unlock(&page_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int pmemlock_lock(void *ptr, size_t size) {
|
||||
pageid_t frompage, topage, i;
|
||||
int page_size;
|
||||
page_size = pmemlock_get_pagesize();
|
||||
if (page_size == -1)
|
||||
return PRINT_RETURN(-1);
|
||||
frompage = (uintptr_t)ptr / page_size;
|
||||
topage = ((uintptr_t)ptr + size - 1) / page_size;
|
||||
for (i = frompage; i <= topage; i++)
|
||||
if (unlikely(lock_page(i, page_size))) {
|
||||
while (i > frompage)
|
||||
unlock_page(--i, page_size);
|
||||
return PRINT_RETURN(-1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int pmemlock_unlock(void *ptr, size_t size) {
|
||||
pageid_t frompage, topage, i;
|
||||
int page_size, ret;
|
||||
page_size = pmemlock_get_pagesize();
|
||||
if (page_size == -1)
|
||||
return PRINT_RETURN(-1);
|
||||
frompage = (uintptr_t)ptr / page_size;
|
||||
topage = ((uintptr_t)ptr + size - 1) / page_size;
|
||||
ret = 0;
|
||||
for (i = frompage; i <= topage; i++)
|
||||
if (unlikely(unlock_page(i, page_size)))
|
||||
ret = PRINT_RETURN(-1);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define LM_ALIGN_TO (sizeof(size_t) * 2)
|
||||
#define LM_OVERHEAD (sizeof(size_t) * 2)
|
||||
#define LM_RANGE_OVERHEAD (LM_ALIGN_TO - sizeof(size_t))
|
||||
#define LM_END_MARKER (~((size_t)0))
|
||||
|
||||
#if IS_DEBUG
|
||||
static void mark_aligment_bytes(char *ptr, size_t from, size_t to) {
|
||||
size_t i;
|
||||
for (i = from; i < to; i++)
|
||||
((unsigned char *)ptr)[i] = ((size_t)0xff + from - i) & 0xff;
|
||||
}
|
||||
#endif
|
||||
|
||||
void *pmemlock_malloc(size_t size) {
|
||||
return psync_malloc(size);
|
||||
allocator_range *range, *brange;
|
||||
psync_tree *tr, **addto;
|
||||
psync_interval_tree_t *interval;
|
||||
char *ret;
|
||||
uint64_t boffset;
|
||||
size_t intsize, bestsize;
|
||||
#if IS_DEBUG
|
||||
size_t origsize = size;
|
||||
#endif
|
||||
int page_size;
|
||||
size = ((size + LM_ALIGN_TO - 1)) / LM_ALIGN_TO * LM_ALIGN_TO + LM_OVERHEAD;
|
||||
#if IS_DEBUG
|
||||
debug(D_NOTICE, "size=%lu, size with overhead=%lu", (unsigned long)origsize,
|
||||
(unsigned long)size);
|
||||
#endif
|
||||
bestsize = ~((size_t)0);
|
||||
brange = NULL;
|
||||
boffset = 0; // just to make compilers happy
|
||||
// psync_mem_lock may call pcryptofolder_cache_clean(), which in turn can
|
||||
// call pmemlock_free() on few pointers, therefore allocator_mutex is
|
||||
// recursive
|
||||
pthread_mutex_lock(&allocator_mutex);
|
||||
ptree_for_each_element(range, allocator_ranges, allocator_range, tree)
|
||||
psync_interval_tree_for_each(interval, range->freeintervals) {
|
||||
intsize = interval->to - interval->from;
|
||||
if (intsize >= size && intsize < bestsize) {
|
||||
bestsize = intsize;
|
||||
brange = range;
|
||||
boffset = interval->from;
|
||||
if (intsize == size)
|
||||
goto foundneededsize;
|
||||
}
|
||||
}
|
||||
if (brange) {
|
||||
foundneededsize:
|
||||
if (unlikely(!brange->locked))
|
||||
if (!pmemlock_lock(brange->mem, brange->size))
|
||||
brange->locked = 1;
|
||||
psync_interval_tree_remove(&brange->freeintervals, boffset, boffset + size);
|
||||
ret = brange->mem + boffset;
|
||||
#if IS_DEBUG
|
||||
*((size_t *)ret) = origsize;
|
||||
#else
|
||||
*((size_t *)ret) = size;
|
||||
#endif
|
||||
*((size_t *)(ret + size - sizeof(size_t))) = LM_END_MARKER;
|
||||
ret += sizeof(size_t);
|
||||
#if IS_DEBUG
|
||||
mark_aligment_bytes(ret, origsize, size - LM_OVERHEAD);
|
||||
#endif
|
||||
} else
|
||||
ret = NULL;
|
||||
pthread_mutex_unlock(&allocator_mutex);
|
||||
if (ret)
|
||||
return ret;
|
||||
page_size = pmemlock_get_pagesize();
|
||||
if (unlikely(page_size == -1))
|
||||
page_size = 4096;
|
||||
intsize = (size + LM_RANGE_OVERHEAD + page_size - 1) / page_size * page_size;
|
||||
brange = psync_new(allocator_range);
|
||||
brange->freeintervals = NULL;
|
||||
brange->mem = pmem_mmap_safe(intsize);
|
||||
brange->size = intsize;
|
||||
debug(D_NOTICE, "allocating new locked block of size %lu at %p",
|
||||
(unsigned long)intsize, brange->mem);
|
||||
if (unlikely(pmemlock_lock(brange->mem, intsize))) {
|
||||
brange->locked = 0;
|
||||
debug(D_WARNING, "could not lock %lu bytes in memory",
|
||||
(unsigned long)intsize);
|
||||
} else
|
||||
brange->locked = 1;
|
||||
if (intsize > size + LM_RANGE_OVERHEAD)
|
||||
psync_interval_tree_add(&brange->freeintervals, LM_RANGE_OVERHEAD + size,
|
||||
intsize);
|
||||
ret = brange->mem + LM_RANGE_OVERHEAD;
|
||||
#if IS_DEBUG
|
||||
*((size_t *)ret) = origsize;
|
||||
#else
|
||||
*((size_t *)ret) = size;
|
||||
#endif
|
||||
*((size_t *)(ret + size - sizeof(size_t))) = LM_END_MARKER;
|
||||
ret += sizeof(size_t);
|
||||
#if IS_DEBUG
|
||||
mark_aligment_bytes(ret, origsize, size - LM_OVERHEAD);
|
||||
#endif
|
||||
pthread_mutex_lock(&allocator_mutex);
|
||||
tr = allocator_ranges;
|
||||
if (tr) {
|
||||
while (1) {
|
||||
range = ptree_element(tr, allocator_range, tree);
|
||||
if (brange->mem < range->mem) {
|
||||
assert(brange->mem + brange->size <= range->mem);
|
||||
if (tr->left)
|
||||
tr = tr->left;
|
||||
else {
|
||||
addto = &tr->left;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
assert(range->mem + range->size <= brange->mem);
|
||||
if (tr->right)
|
||||
tr = tr->right;
|
||||
else {
|
||||
addto = &tr->right;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else
|
||||
addto = &allocator_ranges;
|
||||
*addto = &brange->tree;
|
||||
ptree_added_at(&allocator_ranges, tr, &brange->tree);
|
||||
pthread_mutex_unlock(&allocator_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void pmemlock_free(void *ptr) {
|
||||
psync_free(ptr);
|
||||
return;
|
||||
allocator_range *range;
|
||||
psync_tree *tr;
|
||||
char *cptr;
|
||||
size_t size;
|
||||
#if IS_DEBUG
|
||||
size_t origsize, i;
|
||||
#endif
|
||||
cptr = ((char *)ptr) - sizeof(size_t);
|
||||
size = *((size_t *)cptr);
|
||||
#if IS_DEBUG
|
||||
origsize = size;
|
||||
size = ((size + LM_ALIGN_TO - 1)) / LM_ALIGN_TO * LM_ALIGN_TO;
|
||||
debug(D_NOTICE, "size=%lu", (unsigned long)origsize);
|
||||
for (i = origsize; i < size; i++)
|
||||
assert(((unsigned char *)ptr)[i] == (((size_t)0xff + origsize - i) & 0xff));
|
||||
size += LM_OVERHEAD;
|
||||
#endif
|
||||
assert(*((size_t *)(cptr + size - sizeof(size_t))) == LM_END_MARKER);
|
||||
pthread_mutex_lock(&allocator_mutex);
|
||||
tr = allocator_ranges;
|
||||
while (tr) {
|
||||
range = ptree_element(tr, allocator_range, tree);
|
||||
if (cptr < range->mem)
|
||||
tr = tr->left;
|
||||
else if (cptr >= range->mem + range->size)
|
||||
tr = tr->right;
|
||||
else
|
||||
goto found;
|
||||
}
|
||||
debug(D_CRITICAL, "freeing memory at %p not found in any range", ptr);
|
||||
abort();
|
||||
found:
|
||||
psync_interval_tree_add(&range->freeintervals, cptr - range->mem,
|
||||
cptr - range->mem + size);
|
||||
if (range->freeintervals->from == LM_RANGE_OVERHEAD &&
|
||||
range->freeintervals->to == range->size)
|
||||
ptree_del(&allocator_ranges, &range->tree);
|
||||
else
|
||||
range = NULL;
|
||||
pthread_mutex_unlock(&allocator_mutex);
|
||||
if (range) {
|
||||
debug(D_NOTICE, "freeing block of size %lu at %p",
|
||||
(unsigned long)range->size, range->mem);
|
||||
if (range->locked)
|
||||
pmemlock_unlock(range->mem, range->size);
|
||||
pmem_munmap(range->mem, range->size);
|
||||
psync_free(range);
|
||||
}
|
||||
}
|
||||
|
||||
int pmemlock_get_pagesize() {
|
||||
return psync_page_size;
|
||||
}
|
||||
|
||||
void pmemlock_set_pagesize(int sz) {
|
||||
psync_page_size = sz;
|
||||
}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 2015 Anton Titov.
|
||||
|
||||
Copyright (c) 2015 pCloud Ltd. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met: Redistributions of source code must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer. Redistributions in binary form must reproduce the
|
||||
above copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution. Neither the name of pCloud Ltd nor the
|
||||
names of its contributors may be used to endorse or promote
|
||||
products derived from this software without specific prior written
|
||||
permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL pCloud
|
||||
Ltd BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _PSYNC_MEMLOCK_H
|
||||
#define _PSYNC_MEMLOCK_H
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
void pmemlock_init();
|
||||
|
||||
int pmemlock_lock(void *ptr, size_t size);
|
||||
int pmemlock_unlock(void *ptr, size_t size);
|
||||
|
||||
void *pmemlock_malloc(size_t size);
|
||||
void pmemlock_free(void *ptr);
|
||||
|
||||
int pmemlock_get_pagesize();
|
||||
void pmemlock_set_pagesize(int sz);
|
||||
|
||||
#endif
|
||||
|
|
@ -316,7 +316,7 @@ PSYNC_NOINLINE static void psync_apipool_dump_socket(psock_t *api) {
|
|||
}
|
||||
debug(D_WARNING, "read result from released socket, dumping and aborting");
|
||||
print_tree(res, 0);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
abort();
|
||||
}
|
||||
|
||||
|
|
@ -347,7 +347,7 @@ static void rm_all(void *vpath, ppath_stat *st) {
|
|||
rmdir(path);
|
||||
} else
|
||||
pfile_delete(path);
|
||||
psync_free(path);
|
||||
free(path);
|
||||
}
|
||||
|
||||
static void rm_ign(void *vpath, ppath_stat *st) {
|
||||
|
|
@ -363,7 +363,7 @@ static void rm_ign(void *vpath, ppath_stat *st) {
|
|||
rmdir(path);
|
||||
} else if (ign)
|
||||
pfile_delete(path);
|
||||
psync_free(path);
|
||||
free(path);
|
||||
}
|
||||
|
||||
int psync_rmdir_with_trashes(const char *path) {
|
||||
|
|
@ -438,7 +438,7 @@ int psync_get_remote_file_checksum(psync_fileid_t fileid, unsigned char *hexsum,
|
|||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (result) {
|
||||
debug(D_WARNING, "checksumfile returned error %lu", (unsigned long)result);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return psync_handle_api_result(result);
|
||||
}
|
||||
meta = papi_find_result2(res, "metadata", PARAM_HASH);
|
||||
|
|
@ -456,7 +456,7 @@ int psync_get_remote_file_checksum(psync_fileid_t fileid, unsigned char *hexsum,
|
|||
psync_sql_bind_lstring(sres, 3, checksum->str, checksum->length);
|
||||
psync_sql_run_free(sres);
|
||||
memcpy(hexsum, checksum->str, checksum->length);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return PSYNC_NET_OK;
|
||||
}
|
||||
|
||||
|
|
@ -480,7 +480,7 @@ int psync_get_local_file_checksum(const char *restrict filename,
|
|||
fd = pfile_open(filename, O_RDONLY, 0);
|
||||
if (fd == INVALID_HANDLE_VALUE)
|
||||
return PSYNC_NET_PERMFAIL;
|
||||
buff = psync_malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
buff = malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
retry:
|
||||
if (unlikely_log(fstat(fd, &st)))
|
||||
goto err1;
|
||||
|
|
@ -520,7 +520,7 @@ retry:
|
|||
pfile_seek(fd, 0, SEEK_SET);
|
||||
goto retry;
|
||||
}
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
pfile_close(fd);
|
||||
psync_hash_final(hashbin, &hctx);
|
||||
psync_binhex(hexsum, hashbin, PSYNC_HASH_DIGEST_LEN);
|
||||
|
|
@ -528,7 +528,7 @@ retry:
|
|||
*fsize = pfile_stat_size(&st);
|
||||
return PSYNC_NET_OK;
|
||||
err1:
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
pfile_close(fd);
|
||||
return PSYNC_NET_PERMFAIL;
|
||||
}
|
||||
|
|
@ -552,7 +552,7 @@ int psync_get_local_file_checksum_part(const char *restrict filename,
|
|||
return PSYNC_NET_PERMFAIL;
|
||||
if (unlikely_log(fstat(fd, &st)))
|
||||
goto err1;
|
||||
buff = psync_malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
buff = malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
psync_hash_init(&hctx);
|
||||
psync_hash_init(&hctxp);
|
||||
rsz = pfile_stat_size(&st);
|
||||
|
|
@ -579,7 +579,7 @@ int psync_get_local_file_checksum_part(const char *restrict filename,
|
|||
if (++cnt % 16 == 0)
|
||||
psys_sleep_milliseconds(5);
|
||||
}
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
pfile_close(fd);
|
||||
psync_hash_final(hashbin, &hctx);
|
||||
psync_binhex(hexsum, hashbin, PSYNC_HASH_DIGEST_LEN);
|
||||
|
|
@ -589,7 +589,7 @@ int psync_get_local_file_checksum_part(const char *restrict filename,
|
|||
*fsize = pfile_stat_size(&st);
|
||||
return PSYNC_NET_OK;
|
||||
err2:
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
err1:
|
||||
pfile_close(fd);
|
||||
return PSYNC_NET_PERMFAIL;
|
||||
|
|
@ -636,7 +636,7 @@ int psync_copy_local_file_if_checksum_matches(const char *source,
|
|||
if (unlikely_log(dfd == INVALID_HANDLE_VALUE))
|
||||
goto err1;
|
||||
psync_hash_init(&hctx);
|
||||
buff = psync_malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
buff = malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
while (fsize) {
|
||||
if (fsize > PSYNC_COPY_BUFFER_SIZE)
|
||||
rrd = PSYNC_COPY_BUFFER_SIZE;
|
||||
|
|
@ -656,13 +656,13 @@ int psync_copy_local_file_if_checksum_matches(const char *source,
|
|||
if (unlikely_log(memcmp(hexsum, hashhex, PSYNC_HASH_DIGEST_HEXLEN)) ||
|
||||
unlikely_log(pfile_sync(dfd)))
|
||||
goto err2;
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
if (unlikely_log(pfile_close(dfd)))
|
||||
goto err1;
|
||||
pfile_close(sfd);
|
||||
return PSYNC_NET_OK;
|
||||
err2:
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
pfile_close(dfd);
|
||||
pfile_delete(destination);
|
||||
err1:
|
||||
|
|
@ -926,7 +926,7 @@ psync_http_socket *psync_http_connect(const char *host, const char *path,
|
|||
goto err0;
|
||||
} else
|
||||
debug(D_NOTICE, "got connection to %s from cache", host);
|
||||
readbuff = psync_malloc(PSYNC_HTTP_RESP_BUFFER);
|
||||
readbuff = malloc(PSYNC_HTTP_RESP_BUFFER);
|
||||
if (!addhdr)
|
||||
addhdr = "";
|
||||
if (from || to) {
|
||||
|
|
@ -1010,10 +1010,10 @@ cont:
|
|||
ex:
|
||||
rl = ptr - readbuff;
|
||||
if (rl == rb) {
|
||||
psync_free(readbuff);
|
||||
free(readbuff);
|
||||
readbuff = NULL;
|
||||
}
|
||||
hsock = (psync_http_socket *)psync_malloc(
|
||||
hsock = (psync_http_socket *)malloc(
|
||||
offsetof(psync_http_socket, cachekey) + cl);
|
||||
hsock->sock = sock;
|
||||
hsock->readbuff = readbuff;
|
||||
|
|
@ -1025,7 +1025,7 @@ ex:
|
|||
memcpy(hsock->cachekey, cachekey, cl);
|
||||
return hsock;
|
||||
err1:
|
||||
psync_free(readbuff);
|
||||
free(readbuff);
|
||||
psync_socket_close_download(sock);
|
||||
err0:
|
||||
return NULL;
|
||||
|
|
@ -1048,8 +1048,8 @@ void psync_http_close(psync_http_socket *http) {
|
|||
psync_socket_close_download(http->sock);
|
||||
}
|
||||
if (http->readbuff)
|
||||
psync_free(http->readbuff);
|
||||
psync_free(http);
|
||||
free(http->readbuff);
|
||||
free(http);
|
||||
}
|
||||
|
||||
int psync_http_readall(psync_http_socket *http, void *buff, int num) {
|
||||
|
|
@ -1069,7 +1069,7 @@ int psync_http_readall(psync_http_socket *http, void *buff, int num) {
|
|||
http->readbuffoff += cp;
|
||||
http->readbytes += cp;
|
||||
if (http->readbuffoff >= http->readbuffsize) {
|
||||
psync_free(http->readbuff);
|
||||
free(http->readbuff);
|
||||
http->readbuff = NULL;
|
||||
}
|
||||
if (cp == num)
|
||||
|
|
@ -1130,7 +1130,7 @@ static void connect_cache_thread(void *ptr) {
|
|||
pthread_mutex_unlock(&connect_cache_mutex);
|
||||
if (sock)
|
||||
debug(D_NOTICE, "added connection to %s to cache", node->host);
|
||||
psync_free(node);
|
||||
free(node);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1138,7 +1138,7 @@ connect_cache_tree_node_t *connect_cache_create_node(const char *host) {
|
|||
connect_cache_tree_node_t *res;
|
||||
size_t len;
|
||||
len = strlen(host) + 1;
|
||||
res = (connect_cache_tree_node_t *)psync_malloc(
|
||||
res = (connect_cache_tree_node_t *)malloc(
|
||||
offsetof(connect_cache_tree_node_t, host) + len);
|
||||
res->usessl = psync_setting_get_bool(_PS(usessl));
|
||||
res->haswaiter = 0;
|
||||
|
|
@ -1257,7 +1257,7 @@ psock_t *connect_cache_wait_for_http_connection(const char *host,
|
|||
pthread_cond_wait(&cond, &connect_cache_mutex);
|
||||
} while (!node->ready);
|
||||
pthread_mutex_unlock(&connect_cache_mutex);
|
||||
psync_free(node);
|
||||
free(node);
|
||||
if (sock)
|
||||
debug(D_NOTICE, "waited successfully for connection to %s", host);
|
||||
return sock;
|
||||
|
|
@ -1326,10 +1326,10 @@ psync_http_socket *psync_http_connect_multihost(const binresult *hosts,
|
|||
}
|
||||
}
|
||||
}
|
||||
hsock = (psync_http_socket *)psync_malloc(
|
||||
hsock = (psync_http_socket *)malloc(
|
||||
offsetof(psync_http_socket, cachekey) + cl);
|
||||
hsock->sock = sock;
|
||||
hsock->readbuff = psync_malloc(PSYNC_HTTP_RESP_BUFFER);
|
||||
hsock->readbuff = malloc(PSYNC_HTTP_RESP_BUFFER);
|
||||
;
|
||||
hsock->contentlength = -1;
|
||||
hsock->readbytes = 0;
|
||||
|
|
@ -1369,10 +1369,10 @@ psync_http_connect_multihost_from_cache(const binresult *hosts,
|
|||
}
|
||||
if (!sock)
|
||||
return NULL;
|
||||
hsock = (psync_http_socket *)psync_malloc(
|
||||
hsock = (psync_http_socket *)malloc(
|
||||
offsetof(psync_http_socket, cachekey) + cl);
|
||||
hsock->sock = sock;
|
||||
hsock->readbuff = psync_malloc(PSYNC_HTTP_RESP_BUFFER);
|
||||
hsock->readbuff = malloc(PSYNC_HTTP_RESP_BUFFER);
|
||||
;
|
||||
hsock->contentlength = -1;
|
||||
hsock->readbytes = 0;
|
||||
|
|
@ -1563,7 +1563,7 @@ char *psync_url_decode(const char *s) {
|
|||
size_t slen;
|
||||
char unsigned ch1, ch2;
|
||||
slen = strlen(s);
|
||||
ret = p = (char *)psync_malloc(slen + 1);
|
||||
ret = p = (char *)malloc(slen + 1);
|
||||
while (slen--) {
|
||||
if (*s == '+')
|
||||
*p = ' ';
|
||||
|
|
@ -1618,7 +1618,7 @@ static int psync_net_get_checksums(psock_t *api, psync_fileid_t fileid,
|
|||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (result) {
|
||||
debug(D_ERROR, "getchecksumlink returned error %lu", (unsigned long)result);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return psync_handle_api_result(result);
|
||||
}
|
||||
hosts = papi_find_result2(res, "hosts", PARAM_ARRAY);
|
||||
|
|
@ -1630,7 +1630,7 @@ static int psync_net_get_checksums(psock_t *api, psync_fileid_t fileid,
|
|||
if ((http = psync_http_connect(hosts->array[i]->str, requestpath, 0, 0,
|
||||
cookie)))
|
||||
break;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (unlikely_log(!http))
|
||||
return PSYNC_NET_TEMPFAIL;
|
||||
if (unlikely_log(psync_http_readall(http, &hdr, sizeof(hdr)) != sizeof(hdr)))
|
||||
|
|
@ -1644,7 +1644,7 @@ static int psync_net_get_checksums(psock_t *api, psync_fileid_t fileid,
|
|||
psync_http_close(http);
|
||||
return PSYNC_NET_OK;
|
||||
}
|
||||
cs = (psync_file_checksums *)psync_malloc(
|
||||
cs = (psync_file_checksums *)malloc(
|
||||
offsetof(psync_file_checksums, blocks) +
|
||||
(sizeof(psync_block_checksum) + sizeof(uint32_t)) * i);
|
||||
cs->filesize = hdr.filesize;
|
||||
|
|
@ -1663,7 +1663,7 @@ static int psync_net_get_checksums(psock_t *api, psync_fileid_t fileid,
|
|||
debug(D_NOTICE, "checksums downloaded");
|
||||
return PSYNC_NET_OK;
|
||||
err1:
|
||||
psync_free(cs);
|
||||
free(cs);
|
||||
err0:
|
||||
psync_http_close(http);
|
||||
return PSYNC_NET_TEMPFAIL;
|
||||
|
|
@ -1689,10 +1689,10 @@ static int psync_net_get_upload_checksums(psock_t *api,
|
|||
if (result) {
|
||||
debug(D_ERROR, "upload_blockchecksums returned error %lu",
|
||||
(unsigned long)result);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return psync_handle_api_result(result);
|
||||
}
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (unlikely_log(psync_socket_readall_download(api, &hdr, sizeof(hdr)) !=
|
||||
sizeof(hdr)))
|
||||
goto err0;
|
||||
|
|
@ -1708,7 +1708,7 @@ static int psync_net_get_upload_checksums(psock_t *api,
|
|||
}
|
||||
if (!hdr.filesize)
|
||||
return PSYNC_NET_PERMFAIL;
|
||||
cs = (psync_file_checksums *)psync_malloc(
|
||||
cs = (psync_file_checksums *)malloc(
|
||||
offsetof(psync_file_checksums, blocks) +
|
||||
(sizeof(psync_block_checksum) + sizeof(uint32_t)) * i);
|
||||
cs->filesize = hdr.filesize;
|
||||
|
|
@ -1725,7 +1725,7 @@ static int psync_net_get_upload_checksums(psock_t *api,
|
|||
*checksums = cs;
|
||||
return PSYNC_NET_OK;
|
||||
err1:
|
||||
psync_free(cs);
|
||||
free(cs);
|
||||
err0:
|
||||
return PSYNC_NET_TEMPFAIL;
|
||||
}
|
||||
|
|
@ -1779,7 +1779,7 @@ psync_net_create_hash(const psync_file_checksums *checksums) {
|
|||
break;
|
||||
cnt += 2;
|
||||
}
|
||||
h = (psync_file_checksum_hash *)psync_malloc(
|
||||
h = (psync_file_checksum_hash *)malloc(
|
||||
offsetof(psync_file_checksum_hash, elements) + sizeof(uint32_t) * cnt);
|
||||
h->elementcnt = cnt;
|
||||
memset(h->elements, 0, sizeof(uint32_t) * cnt);
|
||||
|
|
@ -1997,11 +1997,11 @@ static void psync_net_check_file_for_blocks(
|
|||
else
|
||||
buffersize = PSYNC_COPY_BUFFER_SIZE;
|
||||
hbuffersize = buffersize / 2;
|
||||
buff = psync_malloc(buffersize);
|
||||
buff = malloc(buffersize);
|
||||
rd = pfile_read(fd, buff, hbuffersize);
|
||||
if (unlikely(rd < (ssize_t)hbuffersize)) {
|
||||
if (rd < (ssize_t)checksums->blocksize) {
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
pfile_close(fd);
|
||||
return;
|
||||
}
|
||||
|
|
@ -2067,7 +2067,7 @@ static void psync_net_check_file_for_blocks(
|
|||
adler = adler32_roll(adler, buff[outbyteoff++], buff[inbyteoff++],
|
||||
checksums->blocksize);
|
||||
}
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
pfile_close(fd);
|
||||
}
|
||||
|
||||
|
|
@ -2088,7 +2088,7 @@ int psync_net_download_ranges(psync_list *ranges, psync_fileid_t fileid,
|
|||
else if (unlikely_log(rt == PSYNC_NET_TEMPFAIL))
|
||||
return PSYNC_NET_TEMPFAIL;
|
||||
if (unlikely_log(checksums->filesize != filesize)) {
|
||||
psync_free(checksums);
|
||||
free(checksums);
|
||||
return PSYNC_NET_TEMPFAIL;
|
||||
}
|
||||
hash = psync_net_create_hash(checksums);
|
||||
|
|
@ -2096,7 +2096,7 @@ int psync_net_download_ranges(psync_list *ranges, psync_fileid_t fileid,
|
|||
memset(blockactions, 0, sizeof(psync_block_action) * checksums->blockcnt);
|
||||
for (i = 0; i < filecnt; i++)
|
||||
psync_net_check_file_for_blocks(files[i], checksums, hash, blockactions, i);
|
||||
psync_free(hash);
|
||||
free(hash);
|
||||
range = psync_new(psync_range_list_t);
|
||||
range->len = checksums->blocksize;
|
||||
range->type = blockactions[0].type;
|
||||
|
|
@ -2129,8 +2129,8 @@ int psync_net_download_ranges(psync_list *ranges, psync_fileid_t fileid,
|
|||
} else
|
||||
range->len += bs;
|
||||
}
|
||||
psync_free(checksums);
|
||||
psync_free(blockactions);
|
||||
free(checksums);
|
||||
free(blockactions);
|
||||
return PSYNC_NET_OK;
|
||||
fulldownload:
|
||||
range = psync_new(psync_range_list_t);
|
||||
|
|
@ -2165,10 +2165,10 @@ static int check_range_for_blocks(psync_file_checksums *checksums,
|
|||
else
|
||||
buffersize = PSYNC_COPY_BUFFER_SIZE;
|
||||
hbuffersize = buffersize / 2;
|
||||
buff = psync_malloc(buffersize);
|
||||
buff = malloc(buffersize);
|
||||
rd = pfile_read(fd, buff, hbuffersize);
|
||||
if (unlikely(rd < (ssize_t)hbuffersize)) {
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
return PSYNC_NET_OK;
|
||||
} else
|
||||
bufferlen = buffersize;
|
||||
|
|
@ -2272,7 +2272,7 @@ static int check_range_for_blocks(psync_file_checksums *checksums,
|
|||
adler = adler32_roll(adler, buff[outbyteoff++], buff[inbyteoff++],
|
||||
checksums->blocksize);
|
||||
}
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
return PSYNC_NET_OK;
|
||||
}
|
||||
|
||||
|
|
@ -2299,7 +2299,7 @@ static void merge_list_to_element(psync_upload_range_list_t *le,
|
|||
assertw(psync_list_isempty(rlist));
|
||||
psync_list_add_after(&le->list, &ur->list);
|
||||
psync_list_del(&le->list);
|
||||
psync_free(le);
|
||||
free(le);
|
||||
} else if (ur->uploadoffset == le->uploadoffset) {
|
||||
psync_list_add_before(&le->list, &ur->list);
|
||||
le->uploadoffset += ur->len;
|
||||
|
|
@ -2346,8 +2346,8 @@ int psync_net_scan_file_for_blocks(psock_t *api, psync_list *rlist,
|
|||
psync_list_init(&nr);
|
||||
if (check_range_for_blocks(checksums, hash, ur->off, ur->len, fd, &nr) ==
|
||||
PSYNC_NET_TEMPFAIL) {
|
||||
psync_free(hash);
|
||||
psync_free(checksums);
|
||||
free(hash);
|
||||
free(checksums);
|
||||
return PSYNC_NET_TEMPFAIL;
|
||||
}
|
||||
if (!psync_list_isempty(&nr)) {
|
||||
|
|
@ -2359,8 +2359,8 @@ int psync_net_scan_file_for_blocks(psock_t *api, psync_list *rlist,
|
|||
merge_list_to_element(ur, &nr);
|
||||
}
|
||||
}
|
||||
psync_free(hash);
|
||||
psync_free(checksums);
|
||||
free(hash);
|
||||
free(checksums);
|
||||
return PSYNC_NET_OK;
|
||||
}
|
||||
|
||||
|
|
@ -2387,8 +2387,8 @@ int psync_net_scan_upload_for_blocks(psock_t *api, psync_list *rlist,
|
|||
psync_list_init(&nr);
|
||||
if (check_range_for_blocks(checksums, hash, ur->off, ur->len, fd, &nr) ==
|
||||
PSYNC_NET_TEMPFAIL) {
|
||||
psync_free(hash);
|
||||
psync_free(checksums);
|
||||
free(hash);
|
||||
free(checksums);
|
||||
return PSYNC_NET_TEMPFAIL;
|
||||
}
|
||||
if (!psync_list_isempty(&nr)) {
|
||||
|
|
@ -2399,8 +2399,8 @@ int psync_net_scan_upload_for_blocks(psock_t *api, psync_list *rlist,
|
|||
merge_list_to_element(ur, &nr);
|
||||
}
|
||||
}
|
||||
psync_free(hash);
|
||||
psync_free(checksums);
|
||||
free(hash);
|
||||
free(checksums);
|
||||
return PSYNC_NET_OK;
|
||||
}
|
||||
|
||||
|
|
@ -2446,7 +2446,7 @@ static int download_file_revisions(psync_fileid_t fileid) {
|
|||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (result) {
|
||||
debug(D_ERROR, "listrevisions returned error %lu", (unsigned long)result);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return psync_handle_api_result(result);
|
||||
}
|
||||
revs = papi_find_result2(res, "revisions", PARAM_ARRAY);
|
||||
|
|
@ -2487,7 +2487,7 @@ static int download_file_revisions(psync_fileid_t fileid) {
|
|||
PSYNC_HASH_DIGEST_HEXLEN);
|
||||
psync_sql_run_free(hc);
|
||||
psync_sql_commit_transaction();
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return PSYNC_NET_OK;
|
||||
}
|
||||
|
||||
|
|
@ -2515,7 +2515,7 @@ psync_file_lock_t *psync_lock_file(const char *path) {
|
|||
size_t len;
|
||||
int cmp;
|
||||
len = strlen(path) + 1;
|
||||
lock = psync_malloc(offsetof(psync_file_lock_t, filename) + len);
|
||||
lock = malloc(offsetof(psync_file_lock_t, filename) + len);
|
||||
memcpy(lock->filename, path, len);
|
||||
pthread_mutex_lock(&file_lock_mutex);
|
||||
tr = file_lock_tree;
|
||||
|
|
@ -2539,7 +2539,7 @@ psync_file_lock_t *psync_lock_file(const char *path) {
|
|||
}
|
||||
} else {
|
||||
pthread_mutex_unlock(&file_lock_mutex);
|
||||
psync_free(lock);
|
||||
free(lock);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
|
@ -2553,7 +2553,7 @@ void psync_unlock_file(psync_file_lock_t *lock) {
|
|||
pthread_mutex_lock(&file_lock_mutex);
|
||||
ptree_del(&file_lock_tree, &lock->tree);
|
||||
pthread_mutex_unlock(&file_lock_mutex);
|
||||
psync_free(lock);
|
||||
free(lock);
|
||||
}
|
||||
|
||||
int psync_get_upload_checksum(psync_uploadid_t uploadid, unsigned char *uhash,
|
||||
|
|
@ -2573,13 +2573,13 @@ int psync_get_upload_checksum(psync_uploadid_t uploadid, unsigned char *uhash,
|
|||
}
|
||||
psync_apipool_release(api);
|
||||
if (papi_find_result2(res, "result", PARAM_NUM)->num) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return PSYNC_NET_PERMFAIL;
|
||||
}
|
||||
*usize = papi_find_result2(res, "size", PARAM_NUM)->num;
|
||||
memcpy(uhash, papi_find_result2(res, PSYNC_CHECKSUM, PARAM_STR)->str,
|
||||
PSYNC_HASH_DIGEST_HEXLEN);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return PSYNC_NET_OK;
|
||||
}
|
||||
|
||||
|
|
@ -2610,11 +2610,11 @@ static void psync_send_debug_thread(void *ptr) {
|
|||
debug(D_NOTICE, "sending debug %s", str);
|
||||
res = psync_api_run_command("senddebug", params);
|
||||
if (res) {
|
||||
psync_free(res);
|
||||
psync_free(last);
|
||||
free(res);
|
||||
free(last);
|
||||
last = str;
|
||||
} else
|
||||
psync_free(str);
|
||||
free(str);
|
||||
} else
|
||||
free(str);
|
||||
pthread_mutex_unlock(&m);
|
||||
|
|
@ -2629,7 +2629,7 @@ int psync_send_debug(int thread, const char *file, const char *function,
|
|||
ret = pdevice_id();
|
||||
snprintf(format, sizeof(format), "%s %s: %s:%u (function %s): %s\n", ret,
|
||||
psync_thread_name, file, line, function, fmt);
|
||||
psync_free(ret);
|
||||
free(ret);
|
||||
format[sizeof(format) - 1] = 0;
|
||||
ret = NULL;
|
||||
l = 511;
|
||||
|
|
@ -2684,7 +2684,7 @@ int psync_do_run_command_res(const char *cmd, size_t cmdlen,
|
|||
*err = psync_strdup(papi_find_result2(res, "error", PARAM_STR)->str);
|
||||
psync_process_api_error(result);
|
||||
}
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return (int)result;
|
||||
neterr:
|
||||
if (err)
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ const char *pnotify_get_thumb_size() { return ntf_thumb_size; }
|
|||
void pnotify_notify(binresult *res) {
|
||||
pthread_mutex_lock(&ntf_mutex);
|
||||
if (ntf_result)
|
||||
psync_free(ntf_result);
|
||||
free(ntf_result);
|
||||
ntf_result = res;
|
||||
pthread_cond_signal(&ntf_cond);
|
||||
pthread_mutex_unlock(&ntf_mutex);
|
||||
|
|
@ -101,7 +101,7 @@ static void psync_notifications_download_thumb(const binresult *thumb,
|
|||
goto err3;
|
||||
if (unlikely_log(psync_http_next_request(sock)))
|
||||
goto err3;
|
||||
buff = (char *)psync_malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
buff = (char *)malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
while (1) {
|
||||
rd = psync_http_request_readall(sock, buff, PSYNC_COPY_BUFFER_SIZE);
|
||||
if (rd <= 0)
|
||||
|
|
@ -109,7 +109,7 @@ static void psync_notifications_download_thumb(const binresult *thumb,
|
|||
if (pfile_write(fd, buff, rd) != rd)
|
||||
break;
|
||||
}
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
err3:
|
||||
psync_http_close(sock);
|
||||
err2:
|
||||
|
|
@ -119,9 +119,9 @@ err1:
|
|||
debug(D_NOTICE, "downloaded thumbnail %s", filename);
|
||||
else
|
||||
debug(D_WARNING, "downloading of thumbnail %s failed", filename);
|
||||
psync_free(tmpfilepath);
|
||||
free(tmpfilepath);
|
||||
err0:
|
||||
psync_free(filepath);
|
||||
free(filepath);
|
||||
}
|
||||
|
||||
static void psync_notifications_set_current_list(binresult *res,
|
||||
|
|
@ -145,13 +145,13 @@ static void psync_notifications_set_current_list(binresult *res,
|
|||
ores = ntf_processed_result;
|
||||
if (ntf_processing == 2) {
|
||||
ntf_processed_result = NULL;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
} else
|
||||
ntf_processed_result = res;
|
||||
ntf_processing = 0;
|
||||
cb = ntf_callback;
|
||||
pthread_mutex_unlock(&ntf_mutex);
|
||||
psync_free(ores);
|
||||
free(ores);
|
||||
if (cb) {
|
||||
debug(D_NOTICE, "calling notification callback, cnt=%u, newcnt=%u",
|
||||
(unsigned)cnttotal, (unsigned)cntnew);
|
||||
|
|
@ -178,7 +178,7 @@ static void psync_notifications_thread() {
|
|||
pthread_mutex_unlock(&ntf_mutex);
|
||||
psync_notifications_set_current_list(res, thumbpath);
|
||||
}
|
||||
psync_free(thumbpath);
|
||||
free(thumbpath);
|
||||
}
|
||||
|
||||
void pnotify_set_callback(
|
||||
|
|
@ -258,7 +258,7 @@ static void psync_notifications_thumb_dir_list(void *ptr,
|
|||
} else
|
||||
addto = tree;
|
||||
len = strlen(st->name) + 1;
|
||||
tl = (psync_thumb_list_t *)psync_malloc(offsetof(psync_thumb_list_t, name) +
|
||||
tl = (psync_thumb_list_t *)malloc(offsetof(psync_thumb_list_t, name) +
|
||||
len);
|
||||
memcpy(tl->name, st->name, len);
|
||||
*addto = &tl->tree;
|
||||
|
|
@ -336,7 +336,7 @@ psync_notification_list_t *pnotify_get() {
|
|||
debug(D_WARNING,
|
||||
"could not stat thumb %s which is supposed to be downloaded",
|
||||
filename);
|
||||
psync_free(filepath);
|
||||
free(filepath);
|
||||
}
|
||||
}
|
||||
pntf->mtime = papi_find_result2(ntf, "mtime", PARAM_NUM)->num;
|
||||
|
|
@ -359,11 +359,11 @@ psync_notification_list_t *pnotify_get() {
|
|||
thumbpath, "/",
|
||||
ptree_element(thumbs, psync_thumb_list_t, tree)->name, NULL);
|
||||
pfile_delete(filepath);
|
||||
psync_free(filepath);
|
||||
psync_free(ptree_element(thumbs, psync_thumb_list_t, tree));
|
||||
free(filepath);
|
||||
free(ptree_element(thumbs, psync_thumb_list_t, tree));
|
||||
thumbs = nx;
|
||||
}
|
||||
psync_free(thumbpath);
|
||||
free(thumbpath);
|
||||
res = (psync_notification_list_t *)psync_list_builder_finalize(builder);
|
||||
res->newnotificationcnt = cntnew;
|
||||
return res;
|
||||
|
|
@ -382,14 +382,14 @@ void pnotify_clean() {
|
|||
thumbpath = ppath_private(PSYNC_DEFAULT_NTF_THUMB_DIR);
|
||||
if (thumbpath) {
|
||||
ppath_ls(thumbpath, psync_notifications_del_thumb, NULL);
|
||||
psync_free(thumbpath);
|
||||
free(thumbpath);
|
||||
}
|
||||
if (ntf_processed_result) {
|
||||
psync_free(ntf_processed_result);
|
||||
free(ntf_processed_result);
|
||||
ntf_processed_result = NULL;
|
||||
}
|
||||
if (ntf_result) {
|
||||
psync_free(ntf_result);
|
||||
free(ntf_result);
|
||||
ntf_result = NULL;
|
||||
}
|
||||
if (ntf_processing == 1)
|
||||
|
|
|
|||
|
|
@ -198,11 +198,11 @@ static int is_downloading(const unsigned char *hashstart,
|
|||
if (!memcmp(hashhex, genhash, PSYNC_HASH_DIGEST_HEXLEN)) {
|
||||
if (realhash)
|
||||
memcpy(realhash, hashsource, PSYNC_HASH_DIGEST_HEXLEN);
|
||||
psync_free(hashes);
|
||||
free(hashes);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
psync_free(hashes);
|
||||
free(hashes);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -312,7 +312,7 @@ static int check_token(char *token, uint32_t tlen, unsigned char *key,
|
|||
}
|
||||
psync_apipool_release(api);
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return result ? 0 : 1;
|
||||
}
|
||||
|
||||
|
|
@ -332,7 +332,7 @@ static void psync_p2p_tcphandler(void *ptr) {
|
|||
uint32_t keylen, enctype;
|
||||
unsigned char hashhex[PSYNC_HASH_DIGEST_HEXLEN], buff[4096];
|
||||
sock = *((int *)ptr);
|
||||
psync_free(ptr);
|
||||
free(ptr);
|
||||
debug(D_NOTICE, "got tcp connection");
|
||||
if (unlikely_log(socket_read_all(sock, &packet, sizeof(packet))))
|
||||
goto err0;
|
||||
|
|
@ -349,20 +349,20 @@ static void psync_p2p_tcphandler(void *ptr) {
|
|||
binpubrsa = pssl_alloc_binary_rsa(packet.keylen);
|
||||
if (unlikely_log(
|
||||
socket_read_all(sock, binpubrsa->data, binpubrsa->datalen))) {
|
||||
psync_free(binpubrsa);
|
||||
free(binpubrsa);
|
||||
goto err0;
|
||||
}
|
||||
token = psync_new_cnt(char, packet.tokenlen);
|
||||
if (unlikely_log(socket_read_all(sock, token, packet.tokenlen)) ||
|
||||
unlikely_log(!check_token(token, packet.tokenlen, binpubrsa->data,
|
||||
packet.keylen, hashhex))) {
|
||||
psync_free(binpubrsa);
|
||||
psync_free(token);
|
||||
free(binpubrsa);
|
||||
free(token);
|
||||
goto err0;
|
||||
}
|
||||
psync_free(token);
|
||||
free(token);
|
||||
pubrsa = prsa_binary_to_public(binpubrsa);
|
||||
psync_free(binpubrsa);
|
||||
free(binpubrsa);
|
||||
if (unlikely_log(pubrsa == PSYNC_INVALID_RSA))
|
||||
goto err0;
|
||||
localpath = pfolder_lpath_lfile(localfileid, NULL);
|
||||
|
|
@ -370,7 +370,7 @@ static void psync_p2p_tcphandler(void *ptr) {
|
|||
goto err0;
|
||||
fd = pfile_open(localpath, O_RDONLY, 0);
|
||||
debug(D_NOTICE, "sending file %s to peer", localpath);
|
||||
psync_free(localpath);
|
||||
free(localpath);
|
||||
if (fd == INVALID_HANDLE_VALUE) {
|
||||
debug(D_WARNING, "could not open local file %lu",
|
||||
(unsigned long)localfileid);
|
||||
|
|
@ -389,13 +389,13 @@ static void psync_p2p_tcphandler(void *ptr) {
|
|||
socket_write_all(sock, &enctype, sizeof(enctype)) ||
|
||||
socket_write_all(sock, encaeskey->data, encaeskey->datalen))) {
|
||||
if (encaeskey != PSYNC_INVALID_ENC_SYM_KEY)
|
||||
psync_free(encaeskey);
|
||||
free(encaeskey);
|
||||
if (encoder != PSYNC_CRYPTO_INVALID_ENCODER)
|
||||
pcrypto_ctr_encdec_free(encoder);
|
||||
pfile_close(fd);
|
||||
goto err0;
|
||||
}
|
||||
psync_free(encaeskey);
|
||||
free(encaeskey);
|
||||
off = 0;
|
||||
while (off < packet.filesize) {
|
||||
if (packet.filesize - off < sizeof(buff))
|
||||
|
|
@ -511,7 +511,7 @@ static void psync_p2p_thread() {
|
|||
inconn = psync_new(int);
|
||||
*inconn = accept(tcpsock, NULL, NULL);
|
||||
if (unlikely_log(*inconn == INVALID_SOCKET))
|
||||
psync_free(inconn);
|
||||
free(inconn);
|
||||
else
|
||||
prun_thread1("p2p tcp", psync_p2p_tcphandler, inconn);
|
||||
}
|
||||
|
|
@ -635,14 +635,14 @@ static int psync_p2p_get_download_token(psync_fileid_t fileid,
|
|||
}
|
||||
psync_apipool_release(api);
|
||||
if (unlikely_log(papi_find_result2(res, "result", PARAM_NUM)->num != 0)) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return PSYNC_NET_PERMFAIL;
|
||||
}
|
||||
ctoken = papi_find_result2(res, "token", PARAM_STR);
|
||||
*token = psync_malloc(ctoken->length + 1);
|
||||
*token = malloc(ctoken->length + 1);
|
||||
memcpy(*token, ctoken->str, ctoken->length + 1);
|
||||
*tlen = ctoken->length;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return PSYNC_NET_OK;
|
||||
}
|
||||
|
||||
|
|
@ -678,10 +678,10 @@ static int psync_p2p_download(int sock, psync_fileid_t fileid,
|
|||
&privkey, &ekey)) == PSYNC_INVALID_SYM_KEY)) {
|
||||
// unlikely_log((key=psymkey_decrypt(&psync_rsa_private,
|
||||
// &ekey))==PSYNC_INVALID_SYM_KEY)){
|
||||
psync_free(ekey);
|
||||
free(ekey);
|
||||
return PSYNC_NET_TEMPFAIL;
|
||||
}
|
||||
psync_free(ekey);
|
||||
free(ekey);
|
||||
decoder = pcrypto_ctr_encdec_create(key);
|
||||
psymkey_free(key);
|
||||
if (decoder == PSYNC_CRYPTO_INVALID_ENCODER)
|
||||
|
|
@ -835,8 +835,8 @@ int pp2p_check_download(psync_fileid_t fileid,
|
|||
for (i = 0; i < il->interfacecnt; i++)
|
||||
if (sockets[i] != INVALID_SOCKET)
|
||||
close(sockets[i]);
|
||||
psync_free(il);
|
||||
psync_free(sockets);
|
||||
free(il);
|
||||
free(sockets);
|
||||
if (bresp == P2P_RESP_NOPE)
|
||||
goto err_perm2;
|
||||
else if (bresp == P2P_RESP_WAIT) {
|
||||
|
|
@ -890,24 +890,24 @@ int pp2p_check_download(psync_fileid_t fileid,
|
|||
debug(D_WARNING, "writing to socket failed");
|
||||
goto err_temp3;
|
||||
}
|
||||
psync_free(token);
|
||||
free(token);
|
||||
sret = psync_p2p_download(sock, fileid, filehashhex, fsize, filename);
|
||||
close(sock);
|
||||
return sret;
|
||||
err_perm3:
|
||||
psync_free(token);
|
||||
free(token);
|
||||
goto err_perm2;
|
||||
err_perm:
|
||||
for (i = 0; i < il->interfacecnt; i++)
|
||||
if (sockets[i] != INVALID_SOCKET)
|
||||
close(sockets[i]);
|
||||
psync_free(il);
|
||||
psync_free(sockets);
|
||||
free(il);
|
||||
free(sockets);
|
||||
err_perm2:
|
||||
return PSYNC_NET_PERMFAIL;
|
||||
err_temp3:
|
||||
close(sock);
|
||||
psync_free(token);
|
||||
free(token);
|
||||
err_temp2:
|
||||
return PSYNC_NET_TEMPFAIL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -330,7 +330,7 @@ static void psync_pagecache_send_page_wait_page(psync_page_wait_t *pw,
|
|||
pwt->waiting_for = NULL;
|
||||
pthread_cond_broadcast(&pwt->cond);
|
||||
}
|
||||
psync_free(pw);
|
||||
free(pw);
|
||||
}
|
||||
|
||||
static void psync_pagecache_return_free_page_locked(psync_cache_page_t *page) {
|
||||
|
|
@ -360,13 +360,13 @@ static int psync_pagecache_read_range_from_api(psync_request_t *request,
|
|||
return -2;
|
||||
dlen = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (unlikely(dlen)) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
debug(D_WARNING, "readfile returned error %lu", (long unsigned)dlen);
|
||||
psync_process_api_error(dlen);
|
||||
return -2;
|
||||
}
|
||||
dlen = papi_find_result2(res, "data", PARAM_DATA)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
for (i = 0; i < len; i++) {
|
||||
page = psync_pagecache_get_free_page(0);
|
||||
rb = psync_socket_readall_download_thread(
|
||||
|
|
@ -499,7 +499,7 @@ static int wait_shared_api() {
|
|||
}
|
||||
pthread_mutex_unlock(&sharedapi_mutex);
|
||||
pthread_cond_destroy(&waiter->cond);
|
||||
psync_free(waiter);
|
||||
free(waiter);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -516,7 +516,7 @@ static void set_urls(psync_urls_t *urls, binresult *res) {
|
|||
urls->status = 2;
|
||||
pthread_cond_broadcast(&url_cache_cond);
|
||||
} else
|
||||
psync_free(urls);
|
||||
free(urls);
|
||||
}
|
||||
pthread_mutex_unlock(&url_cache_mutex);
|
||||
}
|
||||
|
|
@ -584,7 +584,7 @@ static int get_urls(psync_request_t *request, psync_urls_t *urls) {
|
|||
result = papi_find_result2(ret, "result", PARAM_NUM)->num;
|
||||
if (unlikely(result != 0)) {
|
||||
debug(D_WARNING, "getfilelink returned error %lu", result);
|
||||
psync_free(ret);
|
||||
free(ret);
|
||||
mark_shared_api_bad(api);
|
||||
psync_apipool_release_bad(api);
|
||||
psync_process_api_error(result);
|
||||
|
|
@ -613,7 +613,7 @@ static int get_urls(psync_request_t *request, psync_urls_t *urls) {
|
|||
if (unlikely_log(psync_crypto_is_error(enc)))
|
||||
goto err4;
|
||||
debug(D_NOTICE, "got key for fileid %lu", (unsigned long)request->fileid);
|
||||
psync_free(ret);
|
||||
free(ret);
|
||||
psync_fs_lock_file(request->of);
|
||||
if (likely_log(request->of->encoder ==
|
||||
PSYNC_CRYPTO_LOADING_SECTOR_ENCODER)) {
|
||||
|
|
@ -632,7 +632,7 @@ static int get_urls(psync_request_t *request, psync_urls_t *urls) {
|
|||
psync_list_del(l1);
|
||||
debug(D_NOTICE, "request for offset %lu, size %lu read from API",
|
||||
(unsigned long)range->offset, (unsigned long)range->length);
|
||||
psync_free(range);
|
||||
free(range);
|
||||
}
|
||||
if (pass_shared_api(api))
|
||||
psync_apipool_release(api);
|
||||
|
|
@ -642,7 +642,7 @@ static int get_urls(psync_request_t *request, psync_urls_t *urls) {
|
|||
}
|
||||
return -1;
|
||||
err4:
|
||||
psync_free(ret);
|
||||
free(ret);
|
||||
err3:
|
||||
if (request->needkey)
|
||||
psync_pagecache_set_bad_encoder(request->of);
|
||||
|
|
@ -692,7 +692,7 @@ static psync_urls_t *get_urls_for_request(psync_request_t *req) {
|
|||
return urls;
|
||||
}
|
||||
if (--urls->refcnt == 0)
|
||||
psync_free(urls);
|
||||
free(urls);
|
||||
pthread_mutex_unlock(&url_cache_mutex);
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -727,13 +727,13 @@ static void release_urls(psync_urls_t *urls) {
|
|||
etime = papi_find_result2(urls->urls, "expires", PARAM_NUM)->num;
|
||||
if (etime > ctime + 3600) {
|
||||
psync_get_string_id(buff, "URLS", urls->hash);
|
||||
pcache_add(buff, urls->urls, etime - ctime - 3600, psync_free, 2);
|
||||
pcache_add(buff, urls->urls, etime - ctime - 3600, free, 2);
|
||||
urls->urls = NULL;
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock(&url_cache_mutex);
|
||||
psync_free(urls->urls);
|
||||
psync_free(urls);
|
||||
free(urls->urls);
|
||||
free(urls);
|
||||
return;
|
||||
}
|
||||
pthread_mutex_unlock(&url_cache_mutex);
|
||||
|
|
@ -749,8 +749,8 @@ static void release_bad_urls(psync_urls_t *urls) {
|
|||
urls = NULL;
|
||||
pthread_mutex_unlock(&url_cache_mutex);
|
||||
if (urls) {
|
||||
psync_free(urls->urls);
|
||||
psync_free(urls);
|
||||
free(urls->urls);
|
||||
free(urls);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1039,7 +1039,7 @@ static void clean_cache() {
|
|||
}
|
||||
clean_cache_in_progress = 1;
|
||||
psync_sql_sync();
|
||||
entries = (pagecache_entry *)psync_malloc(cnt * sizeof(pagecache_entry));
|
||||
entries = (pagecache_entry *)malloc(cnt * sizeof(pagecache_entry));
|
||||
i = 0;
|
||||
e = 0;
|
||||
while (i < cnt) {
|
||||
|
|
@ -1180,7 +1180,7 @@ static void clean_cache() {
|
|||
psync_sql_commit_transaction();
|
||||
clean_cache_in_progress = 0;
|
||||
pthread_mutex_unlock(&clean_cache_mutex);
|
||||
psync_free(oentries);
|
||||
free(oentries);
|
||||
debug(D_NOTICE, "syncing database");
|
||||
psync_sql_sync();
|
||||
debug(D_NOTICE, "finished cleaning cache, free cache pages %u",
|
||||
|
|
@ -1750,7 +1750,7 @@ static void check_pages_in_database_by_hash(uint64_t hash,
|
|||
}
|
||||
if (fres->rows)
|
||||
mark_pagescache_used(first_page_id, pagecnt, dbread);
|
||||
psync_free(fres);
|
||||
free(fres);
|
||||
}
|
||||
|
||||
static long check_page_in_database_by_hash_and_cache(uint64_t hash,
|
||||
|
|
@ -1898,8 +1898,8 @@ int ppagecache_read_mod_locked(psync_openfile_t *of, char *buf,
|
|||
|
||||
static void psync_pagecache_free_request(psync_request_t *request) {
|
||||
psync_list_for_each_element_call(&request->ranges, psync_request_range_t,
|
||||
list, psync_free);
|
||||
psync_free(request);
|
||||
list, free);
|
||||
free(request);
|
||||
}
|
||||
|
||||
static void psync_pagecache_send_error_page_wait(psync_page_wait_t *pw,
|
||||
|
|
@ -1912,7 +1912,7 @@ static void psync_pagecache_send_error_page_wait(psync_page_wait_t *pw,
|
|||
pwt->ready = 1;
|
||||
pthread_cond_broadcast(&pwt->cond);
|
||||
}
|
||||
psync_free(pw);
|
||||
free(pw);
|
||||
}
|
||||
|
||||
static void psync_pagecache_send_range_error(psync_request_range_t *range,
|
||||
|
|
@ -2226,7 +2226,7 @@ retry:
|
|||
err = psync_http_request_range_additional(
|
||||
sock, host, path, range->offset, range->offset + range->length - 1,
|
||||
range_hdr);
|
||||
psync_free(range_hdr);
|
||||
free(range_hdr);
|
||||
} else
|
||||
err = psync_http_request(sock, host, path, range->offset,
|
||||
range->offset + range->length - 1, cookie);
|
||||
|
|
@ -2475,7 +2475,7 @@ static void psync_pagecache_read_unmodified_readahead(
|
|||
}
|
||||
}
|
||||
unlock_wait(hash);
|
||||
psync_free(pages_in_db);
|
||||
free(pages_in_db);
|
||||
if (!psync_list_isempty(ranges))
|
||||
debug(D_NOTICE,
|
||||
"readahead=%lu, rto=%lu, offset=%lu, size=%lu, currentspeed=%u",
|
||||
|
|
@ -2485,7 +2485,7 @@ static void psync_pagecache_read_unmodified_readahead(
|
|||
|
||||
static void psync_free_page_waiter(psync_page_waiter_t *pwt) {
|
||||
pthread_cond_destroy(&pwt->cond);
|
||||
psync_free(pwt);
|
||||
free(pwt);
|
||||
}
|
||||
|
||||
static psync_page_waiter_t *
|
||||
|
|
@ -2636,7 +2636,7 @@ int ppagecache_read_unmod_locked(psync_openfile_t *of, char *buf,
|
|||
prun_thread1("read unmodified", psync_pagecache_read_unmodified_thread,
|
||||
rq);
|
||||
} else
|
||||
psync_free(rq);
|
||||
free(rq);
|
||||
ret = size;
|
||||
if (!psync_list_isempty(&waiting)) {
|
||||
psync_list_for_each_element(pwt, &waiting, psync_page_waiter_t,
|
||||
|
|
@ -2676,7 +2676,7 @@ static void free_waiters(psync_list *waiters) {
|
|||
pw = pwt->waiting_for;
|
||||
if (psync_list_isempty(&pw->waiters)) {
|
||||
psync_list_del(&pw->list);
|
||||
psync_free(pw);
|
||||
free(pw);
|
||||
}
|
||||
}
|
||||
psync_free_page_waiter(pwt);
|
||||
|
|
@ -2885,7 +2885,7 @@ int ppagecache_read_unmod_enc_locked(psync_openfile_t *of,
|
|||
prun_thread1("crypto read unmodified",
|
||||
psync_pagecache_read_unmodified_thread, rq);
|
||||
} else
|
||||
psync_free(rq);
|
||||
free(rq);
|
||||
ret = 0;
|
||||
if (needkey) {
|
||||
debug(D_NOTICE, "waiting for key to download");
|
||||
|
|
@ -3012,14 +3012,12 @@ int ppagecache_read_unmod_enc_locked(psync_openfile_t *of,
|
|||
if (!ret)
|
||||
ret = size;
|
||||
ret0:
|
||||
psync_list_for_each_element_call(&waiting, psync_page_waiter_t, listwaiter,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&auth_pages, psync_crypto_auth_page, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&waiting, psync_page_waiter_t, listwaiter, free);
|
||||
psync_list_for_each_element_call(&auth_pages, psync_crypto_auth_page, list, free);
|
||||
for (i = 0; i < pagecnt; i++)
|
||||
if (dp[i].freebuff)
|
||||
psync_free(dp[i].buff);
|
||||
psync_free(dp);
|
||||
free(dp[i].buff);
|
||||
free(dp);
|
||||
return ret;
|
||||
err0:
|
||||
free_waiters(&waiting);
|
||||
|
|
@ -3103,7 +3101,7 @@ int ppagecache_readv_locked(psync_openfile_t *of,
|
|||
}
|
||||
if (psync_list_isempty(&rq->ranges) && !needkey) {
|
||||
if (psync_list_isempty(&waiting)) {
|
||||
psync_free(rq);
|
||||
free(rq);
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
|
|
@ -3218,7 +3216,7 @@ static void psync_pagecache_new_upload_to_cache(uint64_t taskid, uint64_t hash,
|
|||
debug(D_ERROR, "could not open cache file %s for taskid %lu, skipping",
|
||||
filename, (unsigned long)taskid);
|
||||
pfile_delete(filename);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
return;
|
||||
}
|
||||
debug(D_NOTICE, "adding file %s to cache for hash %lu (%ld) size %ld",
|
||||
|
|
@ -3251,7 +3249,7 @@ static void psync_pagecache_new_upload_to_cache(uint64_t taskid, uint64_t hash,
|
|||
pfile_delete(filename);
|
||||
debug(D_NOTICE, "finished adding file %s to cache for hash %lu (%ld)",
|
||||
filename, (unsigned long)hash, (long)hash);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
}
|
||||
|
||||
static void switch_pageids(uint64_t hash, uint64_t oldhash, uint64_t *pageids,
|
||||
|
|
@ -3308,8 +3306,8 @@ static void psync_pagecache_modify_to_cache(uint64_t taskid, uint64_t hash,
|
|||
indexname, (unsigned long)taskid);
|
||||
pfile_delete(filename);
|
||||
pfile_delete(indexname);
|
||||
psync_free(filename);
|
||||
psync_free(indexname);
|
||||
free(filename);
|
||||
free(indexname);
|
||||
return;
|
||||
}
|
||||
tree = NULL;
|
||||
|
|
@ -3480,9 +3478,9 @@ err2:
|
|||
err1:
|
||||
psync_interval_tree_free(tree);
|
||||
pfile_delete(filename);
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
pfile_delete(indexname);
|
||||
psync_free(indexname);
|
||||
free(indexname);
|
||||
}
|
||||
|
||||
static void psync_pagecache_check_free_space() {
|
||||
|
|
@ -3597,7 +3595,7 @@ int ppagecache_have_all_pages(uint64_t hash, uint64_t size) {
|
|||
for (i = 0; i < pagecnt; i++)
|
||||
if (!db[i] && !has_page_in_cache_by_hash(hash, i))
|
||||
break;
|
||||
psync_free(db);
|
||||
free(db);
|
||||
return i == pagecnt;
|
||||
}
|
||||
|
||||
|
|
@ -3828,7 +3826,7 @@ void ppagecache_init() {
|
|||
(unsigned long)db_cache_max_page);
|
||||
}
|
||||
readcache = pfile_open(cache_file, O_RDWR, O_CREAT);
|
||||
psync_free(cache_file);
|
||||
free(cache_file);
|
||||
if (likely_log(pfile_seek(readcache,
|
||||
db_cache_max_page * PSYNC_FS_PAGE_SIZE,
|
||||
SEEK_SET) != -1))
|
||||
|
|
@ -3879,7 +3877,7 @@ void ppagecache_reopen_read() {
|
|||
cache_file = psync_strcat(cache_dir, "/",
|
||||
PSYNC_DEFAULT_READ_CACHE_FILE, NULL);
|
||||
readcache = pfile_open(cache_file, O_RDWR, O_CREAT);
|
||||
psync_free(cache_file);
|
||||
free(cache_file);
|
||||
}
|
||||
|
||||
void ppagecache_clean_read() {
|
||||
|
|
@ -3927,12 +3925,12 @@ int ppagecache_move(const char *path) {
|
|||
rdpath = psync_strcat(path, "/",
|
||||
PSYNC_DEFAULT_READ_CACHE_FILE, NULL);
|
||||
if (!stat(rdpath, &st)) {
|
||||
psync_free(rdpath);
|
||||
free(rdpath);
|
||||
return PRINT_RETURN_CONST(PERROR_CACHE_MOVE_NOT_EMPTY);
|
||||
}
|
||||
newrdcache = pfile_open(rdpath, O_RDWR, O_CREAT | O_EXCL);
|
||||
if (newrdcache == INVALID_HANDLE_VALUE) {
|
||||
psync_free(rdpath);
|
||||
free(rdpath);
|
||||
return PRINT_RETURN_CONST(PERROR_CACHE_MOVE_NO_WRITE_ACCESS);
|
||||
}
|
||||
opath = psync_strdup(psync_setting_get_string(_PS(fscachepath)));
|
||||
|
|
@ -3957,8 +3955,8 @@ int ppagecache_move(const char *path) {
|
|||
pthread_mutex_unlock(&clean_cache_mutex);
|
||||
pfile_close(newrdcache);
|
||||
pfile_delete(rdpath);
|
||||
psync_free(opath);
|
||||
psync_free(rdpath);
|
||||
free(opath);
|
||||
free(rdpath);
|
||||
return PRINT_RETURN_CONST(PERROR_CACHE_MOVE_DRIVE_HAS_TASKS);
|
||||
}
|
||||
ordcache = readcache;
|
||||
|
|
@ -3991,8 +3989,8 @@ int ppagecache_move(const char *path) {
|
|||
debug(D_NOTICE, "released locks");
|
||||
pfile_close(ordcache);
|
||||
ppath_ls(opath, clean_cache_del, (void *)1);
|
||||
psync_free(opath);
|
||||
psync_free(rdpath);
|
||||
free(opath);
|
||||
free(rdpath);
|
||||
debug(D_NOTICE, "end");
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -354,8 +354,8 @@ uint64_t ppassword_score(const char *cpassword) {
|
|||
num = score_variants(password, lpwd, ldpwd, plen);
|
||||
putil_wipe(lpwd, plen);
|
||||
putil_wipe(ldpwd, plen);
|
||||
psync_free(lpwd);
|
||||
psync_free(ldpwd);
|
||||
free(lpwd);
|
||||
free(ldpwd);
|
||||
mul_score(num);
|
||||
return score;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,24 +19,24 @@ char *ppath_default_db() {
|
|||
}
|
||||
|
||||
dbp = psync_strcat(pcdir, "/", PSYNC_DEFAULT_DB_NAME, NULL);
|
||||
psync_free(pcdir);
|
||||
free(pcdir);
|
||||
|
||||
if (stat(dbp, &st)) {
|
||||
// Inline the old database path function here
|
||||
if ((home = ppath_home())) {
|
||||
oldp = psync_strcat(home, "/", PSYNC_DEFAULT_POSIX_DBNAME, NULL);
|
||||
psync_free(home);
|
||||
free(home);
|
||||
|
||||
if (oldp) {
|
||||
if (!stat(oldp, &st)) {
|
||||
if (psync_sql_reopen(oldp)) {
|
||||
psync_free(dbp);
|
||||
free(dbp);
|
||||
return oldp;
|
||||
} else {
|
||||
pfile_rename(oldp, dbp);
|
||||
}
|
||||
}
|
||||
psync_free(oldp);
|
||||
free(oldp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -85,7 +85,7 @@ int ppath_ls(const char *path, ppath_ls_cb callback, void *ptr) {
|
|||
}
|
||||
|
||||
pl = strlen(path);
|
||||
cpath = (char *)psync_malloc(pl + NAME_MAX + 2);
|
||||
cpath = (char *)malloc(pl + NAME_MAX + 2);
|
||||
memcpy(cpath, path, pl);
|
||||
if (!pl || cpath[pl - 1] != '/')
|
||||
cpath[pl++] = '/';
|
||||
|
|
@ -107,7 +107,7 @@ int ppath_ls(const char *path, ppath_ls_cb callback, void *ptr) {
|
|||
}
|
||||
}
|
||||
|
||||
psync_free(cpath);
|
||||
free(cpath);
|
||||
closedir(dh);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -127,7 +127,7 @@ int ppath_ls_fast(const char *path, ppath_ls_fast_cb callback, void *ptr) {
|
|||
}
|
||||
|
||||
pl = strlen(path);
|
||||
cpath = (char *)psync_malloc(pl + NAME_MAX + 2);
|
||||
cpath = (char *)malloc(pl + NAME_MAX + 2);
|
||||
memcpy(cpath, path, pl);
|
||||
if (!pl || cpath[pl - 1] != '/')
|
||||
cpath[pl++] = '/';
|
||||
|
|
@ -157,7 +157,7 @@ int ppath_ls_fast(const char *path, ppath_ls_fast_cb callback, void *ptr) {
|
|||
// Ignore other file types
|
||||
}
|
||||
|
||||
psync_free(cpath);
|
||||
free(cpath);
|
||||
closedir(dh);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -171,14 +171,14 @@ char *ppath_pcloud() {
|
|||
}
|
||||
|
||||
path = psync_strcat(homedir, "/", PSYNC_DEFAULT_POSIX_DIR, NULL);
|
||||
psync_free(homedir);
|
||||
free(homedir);
|
||||
if (unlikely_log(!path)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (stat(path, &st) &&
|
||||
unlikely_log(mkdir(path, PSYNC_DEFAULT_POSIX_FOLDER_MODE))) {
|
||||
psync_free(path);
|
||||
free(path);
|
||||
return NULL;
|
||||
}
|
||||
return path;
|
||||
|
|
@ -192,7 +192,7 @@ char *ppath_private(char *name) {
|
|||
return NULL;
|
||||
rpath = psync_strcat(path, "/", name, NULL);
|
||||
if (stat(rpath, &st) && mkdir(path, PSYNC_DEFAULT_POSIX_FOLDER_MODE)) {
|
||||
psync_free(rpath);
|
||||
free(rpath);
|
||||
free(path);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -165,8 +165,7 @@ void ppathstatus_init() {
|
|||
psync_list_add_tail(&parent_cache_lru, &parent_cache_entries[i].list_lru);
|
||||
psync_list_add_tail(&cache_free, &parent_cache_entries[i].list_hash);
|
||||
}
|
||||
ptree_for_each_element_call_safe(folder_tasks, folder_tasks_t, tree,
|
||||
psync_free);
|
||||
ptree_for_each_element_call_safe(folder_tasks, folder_tasks_t, tree, free);
|
||||
folder_tasks = PSYNC_TREE_EMPTY;
|
||||
ptree_for_each_element_call_safe(sync_data, sync_data_t, tree,
|
||||
sync_data_free);
|
||||
|
|
@ -302,7 +301,7 @@ static folder_tasks_t *get_folder_tasks(psync_folderid_t folderid, int create) {
|
|||
static void free_folder_tasks(folder_tasks_t *ft) {
|
||||
debug(D_NOTICE, "marking folderid %lu as clean", (unsigned long)ft->folderid);
|
||||
ptree_del(&folder_tasks, &ft->tree);
|
||||
psync_free(ft);
|
||||
free(ft);
|
||||
}
|
||||
|
||||
static psync_folderid_t get_parent_folder(psync_folderid_t folderid) {
|
||||
|
|
@ -413,7 +412,7 @@ static void folder_moved(psync_folderid_t folderid,
|
|||
static void folder_moved_commit(void *ptr) {
|
||||
folder_moved_params_t *mp = (folder_moved_params_t *)ptr;
|
||||
folder_moved(mp->folderid, mp->old_parent_folderid, mp->new_parent_folderid);
|
||||
psync_free(mp);
|
||||
free(mp);
|
||||
}
|
||||
|
||||
void ppathstatus_fldr_moved(psync_folderid_t folderid,
|
||||
|
|
@ -429,7 +428,7 @@ void ppathstatus_fldr_moved(psync_folderid_t folderid,
|
|||
mp->folderid = folderid;
|
||||
mp->old_parent_folderid = old_parent_folderid;
|
||||
mp->new_parent_folderid = new_parent_folderid;
|
||||
psync_sql_transation_add_callbacks(folder_moved_commit, psync_free, mp);
|
||||
psync_sql_transation_add_callbacks(folder_moved_commit, free, mp);
|
||||
}
|
||||
|
||||
void ppathstatus_fldr_deleted(psync_folderid_t folderid) {
|
||||
|
|
@ -451,9 +450,8 @@ void ppathstatus_fldr_deleted(psync_folderid_t folderid) {
|
|||
}
|
||||
|
||||
static void sync_data_free(sync_data_t *sd) {
|
||||
ptree_for_each_element_call_safe(sd->folder_tasks, folder_tasks_t, tree,
|
||||
psync_free);
|
||||
psync_free(sd);
|
||||
ptree_for_each_element_call_safe(sd->folder_tasks, folder_tasks_t, tree, free);
|
||||
free(sd);
|
||||
}
|
||||
|
||||
static sync_data_t *get_sync_data(psync_syncid_t syncid, int create) {
|
||||
|
|
@ -662,7 +660,7 @@ static void free_sync_folder_tasks(sync_data_t *sd, folder_tasks_t *ft) {
|
|||
debug(D_NOTICE, "marking folderid %lu from syncid %u as clean",
|
||||
(unsigned long)ft->folderid, (unsigned)sd->syncid);
|
||||
ptree_del(&sd->folder_tasks, &ft->tree);
|
||||
psync_free(ft);
|
||||
free(ft);
|
||||
}
|
||||
|
||||
void ppathstatus_syncfldr_task_completed(
|
||||
|
|
@ -757,7 +755,7 @@ static void sync_folder_moved_commit(void *ptr) {
|
|||
sync_folder_moved_params_t *mp = (sync_folder_moved_params_t *)ptr;
|
||||
sync_folder_moved(mp->folderid, mp->old_syncid, mp->old_parent_folderid,
|
||||
mp->new_syncid, mp->new_parent_folderid);
|
||||
psync_free(mp);
|
||||
free(mp);
|
||||
}
|
||||
|
||||
void ppathstatus_syncfldr_moved(psync_folderid_t folderid,
|
||||
|
|
@ -781,7 +779,7 @@ void ppathstatus_syncfldr_moved(psync_folderid_t folderid,
|
|||
mp->new_parent_folderid = new_parent_folderid;
|
||||
mp->old_syncid = old_syncid;
|
||||
mp->new_syncid = new_syncid;
|
||||
psync_sql_transation_add_callbacks(sync_folder_moved_commit, psync_free, mp);
|
||||
psync_sql_transation_add_callbacks(sync_folder_moved_commit, free, mp);
|
||||
}
|
||||
|
||||
void ppathstatus_syncfldr_deleted(psync_syncid_t syncid,
|
||||
|
|
@ -900,7 +898,7 @@ static int move_encname_to_buff(psync_folderid_t folderid, char *buff,
|
|||
if (unlikely(len >= sizeof(buff)))
|
||||
return -1;
|
||||
memcpy(buff, encname, len + 1);
|
||||
psync_free(encname);
|
||||
free(encname);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1442,7 +1440,7 @@ psync_path_status_t ppathstatus_get(const char *path) {
|
|||
dp = NULL;
|
||||
}
|
||||
psync_sql_unlock();
|
||||
psync_free(dp);
|
||||
free(dp);
|
||||
if (len >= drive_path_len && !memcmp(drive_path, path, drive_path_len) &&
|
||||
valid_last_char(path[drive_path_len]))
|
||||
return psync_path_status_drive(path + drive_path_len,
|
||||
|
|
|
|||
|
|
@ -310,9 +310,9 @@ static void proc_send_event(void *ptr) {
|
|||
callback(event->event, event->data);
|
||||
|
||||
if (event->freedata)
|
||||
psync_free(event->data.ptr);
|
||||
free(event->data.ptr);
|
||||
|
||||
psync_free(event);
|
||||
free(event);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -360,7 +360,7 @@ void pqevent_queue_sync_event_id(psync_eventtype_t eventid, psync_syncid_t synci
|
|||
if (unlikely_log(!remotepath))
|
||||
return;
|
||||
pqevent_queue_sync_event_path(eventid, syncid, localpath, remoteid, remotepath);
|
||||
psync_free(remotepath);
|
||||
free(remotepath);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -379,7 +379,7 @@ void pqevent_queue_sync_event_path(psync_eventtype_t eventid, psync_syncid_t syn
|
|||
else
|
||||
slen = sizeof(psync_folder_event_t);
|
||||
event =
|
||||
(event_list_t *)psync_malloc(sizeof(event_list_t) + slen + llen + rlen);
|
||||
(event_list_t *)malloc(sizeof(event_list_t) + slen + llen + rlen);
|
||||
strct = (char *)(event + 1);
|
||||
lcopy = strct + slen;
|
||||
rcopy = lcopy + llen;
|
||||
|
|
@ -442,5 +442,5 @@ void pqevent_queue_event(psync_eventtype_t eventid, void *eventdata) {
|
|||
pthread_cond_signal(&eventcond);
|
||||
pthread_mutex_unlock(&eventmutex);
|
||||
} else
|
||||
psync_free(eventdata);
|
||||
free(eventdata);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ void prand_seed(unsigned char *seed, const void *addent, size_t aelen,
|
|||
psync_lhash_update(&hctx, home, strlen(home));
|
||||
if (likely_log(!stat(home, &st)))
|
||||
psync_lhash_update(&hctx, &st, sizeof(st));
|
||||
psync_free(home);
|
||||
free(home);
|
||||
}
|
||||
if (!fast) {
|
||||
debug(D_NOTICE, "getting seed from database");
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ cleanup:
|
|||
close(*sockfd);
|
||||
}
|
||||
if (response) {
|
||||
psync_free(response);
|
||||
free(response);
|
||||
}
|
||||
|
||||
debug(D_NOTICE, "InstanceThread exiting.");
|
||||
|
|
@ -285,14 +285,14 @@ int prpc_register(int cmdid, prpc_handler h) {
|
|||
prpc_init();
|
||||
memcpy(handlers, handlers_old,
|
||||
handlers_size_old * sizeof(prpc_handler));
|
||||
psync_free(handlers_old);
|
||||
free(handlers_old);
|
||||
}
|
||||
handlers[cmdid - calbacks_lower_band] = h;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void prpc_init() {
|
||||
handlers = (prpc_handler *)psync_malloc(sizeof(prpc_handler) * handlers_size);
|
||||
handlers = (prpc_handler *)malloc(sizeof(prpc_handler) * handlers_size);
|
||||
memset(handlers, 0, sizeof(prpc_handler) * handlers_size);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ static void *thread_entry(void *data) {
|
|||
((thread0_run)td->run)();
|
||||
}
|
||||
|
||||
psync_free(data);
|
||||
free(data);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ static void ratelimit_timer(psync_timer_t timer, void *ptr) {
|
|||
prun_thread(name, call);
|
||||
} else {
|
||||
ptimer_stop(timer);
|
||||
psync_free(node);
|
||||
free(node);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -123,11 +123,11 @@ void psync_settings_reset() {
|
|||
home = ppath_home();
|
||||
defaultfs = psync_strcat(home, "/",
|
||||
PSYNC_DEFAULT_FS_FOLDER, NULL);
|
||||
psync_free(home);
|
||||
free(home);
|
||||
home = ppath_pcloud();
|
||||
defaultcache = psync_strcat(home, "/",
|
||||
PSYNC_DEFAULT_CACHE_FOLDER, NULL);
|
||||
psync_free(home);
|
||||
free(home);
|
||||
for (i = 0; i < ARRAY_SIZE(settings); i++)
|
||||
if (settings[i].type == PSYNC_TSTRING)
|
||||
psync_free_after_sec(settings[i].str, 60);
|
||||
|
|
@ -165,8 +165,8 @@ void psync_settings_reset() {
|
|||
settings[i].fix_callback(&settings[i].boolean);
|
||||
}
|
||||
}
|
||||
psync_free(defaultfs);
|
||||
psync_free(defaultcache);
|
||||
free(defaultfs);
|
||||
free(defaultcache);
|
||||
}
|
||||
|
||||
void psync_settings_init() {
|
||||
|
|
@ -178,11 +178,11 @@ void psync_settings_init() {
|
|||
home = ppath_home();
|
||||
defaultfs = psync_strcat(home, "/",
|
||||
PSYNC_DEFAULT_FS_FOLDER, NULL);
|
||||
psync_free(home);
|
||||
free(home);
|
||||
home = ppath_pcloud();
|
||||
defaultcache = psync_strcat(home, "/",
|
||||
PSYNC_DEFAULT_CACHE_FOLDER, NULL);
|
||||
psync_free(home);
|
||||
free(home);
|
||||
settings[_PS(ignorepatterns)].str = PSYNC_IGNORE_PATTERNS_DEFAULT;
|
||||
settings[_PS(fsroot)].str = defaultfs;
|
||||
settings[_PS(fscachepath)].str = defaultcache;
|
||||
|
|
@ -209,15 +209,15 @@ void psync_settings_init() {
|
|||
settings[i].fix_callback(&settings[i].boolean);
|
||||
}
|
||||
}
|
||||
psync_free(defaultfs);
|
||||
psync_free(defaultcache);
|
||||
free(defaultfs);
|
||||
free(defaultcache);
|
||||
res = psync_sql_query("SELECT id, value FROM setting");
|
||||
while ((row = psync_sql_fetch_rowstr(res))) {
|
||||
name = row[0];
|
||||
for (i = 0; i < ARRAY_SIZE(settings); i++)
|
||||
if (!strcmp(name, settings[i].name)) {
|
||||
if (settings[i].type == PSYNC_TSTRING) {
|
||||
psync_free(settings[i].str);
|
||||
free(settings[i].str);
|
||||
settings[i].str = psync_strdup(row[1]);
|
||||
if (settings[i].fix_callback)
|
||||
settings[i].fix_callback(&settings[i].str);
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ static struct addrinfo *addr_load(const char *host, const char *port) {
|
|||
psync_sql_rdunlock();
|
||||
return NULL;
|
||||
}
|
||||
ret = (struct addrinfo *)psync_malloc(sizeof(struct addrinfo) * row[0] +
|
||||
ret = (struct addrinfo *)malloc(sizeof(struct addrinfo) * row[0] +
|
||||
row[1]);
|
||||
data = (char *)(ret + row[0]);
|
||||
for (i = 0; i < row[0] - 1; i++)
|
||||
|
|
@ -275,7 +275,7 @@ static void cb_connect_res(void *h, void *ptr) {
|
|||
res = (struct addrinfo *)ptr;
|
||||
sock = connect_res(res);
|
||||
r = psync_task_complete(h, (void *)(uintptr_t)sock);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (r && sock != INVALID_SOCKET)
|
||||
close(sock);
|
||||
}
|
||||
|
|
@ -380,7 +380,7 @@ int psock_try_write_buffer(psock_t *sock) {
|
|||
while ((b = sock->buffer)) {
|
||||
if (b->roffset == b->woffset) {
|
||||
sock->buffer = b->next;
|
||||
psync_free(b);
|
||||
free(b);
|
||||
continue;
|
||||
}
|
||||
if (sock->ssl) {
|
||||
|
|
@ -502,7 +502,7 @@ void psock_close(psock_t *sock) {
|
|||
}
|
||||
psock_clear_write_buffered(sock);
|
||||
close(sock->sock);
|
||||
psync_free(sock);
|
||||
free(sock);
|
||||
}
|
||||
|
||||
void psock_close_bad(psock_t *sock) {
|
||||
|
|
@ -510,14 +510,14 @@ void psock_close_bad(psock_t *sock) {
|
|||
pssl_free(sock->ssl);
|
||||
psock_clear_write_buffered(sock);
|
||||
close(sock->sock);
|
||||
psync_free(sock);
|
||||
free(sock);
|
||||
}
|
||||
|
||||
void psock_set_write_buffered(psock_t *sock) {
|
||||
psock_buf_t *sb;
|
||||
if (sock->buffer)
|
||||
return;
|
||||
sb = (psock_buf_t *)psync_malloc(offsetof(psock_buf_t, buff) +
|
||||
sb = (psock_buf_t *)malloc(offsetof(psock_buf_t, buff) +
|
||||
PSYNC_FIRST_SOCK_WRITE_BUFF_SIZE);
|
||||
sb->next = NULL;
|
||||
sb->size = PSYNC_FIRST_SOCK_WRITE_BUFF_SIZE;
|
||||
|
|
@ -773,7 +773,7 @@ static int psync_socket_write_to_buf(psock_t *sock, const void *buff, int num) {
|
|||
do {
|
||||
wr = b->size - b->woffset;
|
||||
if (!wr) {
|
||||
b->next = (psock_buf_t *)psync_malloc(
|
||||
b->next = (psock_buf_t *)malloc(
|
||||
offsetof(psock_buf_t, buff) + PSYNC_SECOND_SOCK_WRITE_BUFF_SIZE);
|
||||
b = b->next;
|
||||
b->next = NULL;
|
||||
|
|
@ -1107,7 +1107,7 @@ psock_ifaces_t *psock_list_adapters() {
|
|||
}
|
||||
addr = addr->ifa_next;
|
||||
}
|
||||
ret = psync_malloc(offsetof(psock_ifaces_t, interfaces) +
|
||||
ret = malloc(offsetof(psock_ifaces_t, interfaces) +
|
||||
sizeof(psock_iface_t) * cnt);
|
||||
memset(ret, 0,
|
||||
offsetof(psock_ifaces_t, interfaces) + sizeof(psock_iface_t) * cnt);
|
||||
|
|
@ -1135,7 +1135,7 @@ psock_ifaces_t *psock_list_adapters() {
|
|||
freeifaddrs(addrs);
|
||||
return ret;
|
||||
empty:
|
||||
ret = psync_malloc(offsetof(psock_ifaces_t, interfaces));
|
||||
ret = malloc(offsetof(psock_ifaces_t, interfaces));
|
||||
ret->interfacecnt = 0;
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@
|
|||
#include "pcache.h"
|
||||
#include "pcompiler.h"
|
||||
#include "plibs.h"
|
||||
#include "pmemlock.h"
|
||||
#include "prand.h"
|
||||
#include "psettings.h"
|
||||
#include "pssl.h"
|
||||
|
|
@ -71,7 +70,7 @@ static void ssl_debug(int loglevel, int errnum, const char *msg) {
|
|||
|
||||
static void free_encrypted(psync_encrypted_data_t e) {
|
||||
putil_wipe(e->data, e->datalen);
|
||||
pmemlock_free(e);
|
||||
free(e);
|
||||
}
|
||||
|
||||
void prsa_free_binary(psync_binary_rsa_key_t bin) {
|
||||
|
|
@ -80,13 +79,13 @@ void prsa_free_binary(psync_binary_rsa_key_t bin) {
|
|||
|
||||
void psymkey_free(psync_symmetric_key_t key) {
|
||||
putil_wipe(key->key, key->keylen);
|
||||
pmemlock_free(key);
|
||||
free(key);
|
||||
}
|
||||
|
||||
psync_encrypted_symmetric_key_t
|
||||
psymkey_alloc_encrypted(size_t len) {
|
||||
psync_encrypted_symmetric_key_t ret;
|
||||
ret = psync_malloc(offsetof(psync_encrypted_data_struct_t, data) + len);
|
||||
ret = malloc(offsetof(psync_encrypted_data_struct_t, data) + len);
|
||||
ret->datalen = len;
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -94,7 +93,7 @@ psymkey_alloc_encrypted(size_t len) {
|
|||
psync_encrypted_symmetric_key_t
|
||||
psymkey_copy_encrypted(psync_encrypted_symmetric_key_t src) {
|
||||
psync_encrypted_symmetric_key_t ret;
|
||||
ret = psync_malloc(offsetof(psync_encrypted_data_struct_t, data) +
|
||||
ret = malloc(offsetof(psync_encrypted_data_struct_t, data) +
|
||||
src->datalen);
|
||||
ret->datalen = src->datalen;
|
||||
memcpy(ret->data, src->data, src->datalen);
|
||||
|
|
@ -212,7 +211,7 @@ static ssl_connection_t *conn_alloc(const char *hostname) {
|
|||
ssl_connection_t *conn;
|
||||
size_t len;
|
||||
len = strlen(hostname) + 1;
|
||||
conn = (ssl_connection_t *)psync_malloc(offsetof(ssl_connection_t, cachekey) +
|
||||
conn = (ssl_connection_t *)malloc(offsetof(ssl_connection_t, cachekey) +
|
||||
len + 4);
|
||||
conn->isbroken = 0;
|
||||
memcpy(conn->cachekey, "SSLS", 4);
|
||||
|
|
@ -271,7 +270,7 @@ static int mbed_write(void *ptr, const unsigned char *buf, size_t len) {
|
|||
|
||||
static void free_session(void *ptr) {
|
||||
mbedtls_ssl_session_free((mbedtls_ssl_session *)ptr);
|
||||
psync_free(ptr);
|
||||
free(ptr);
|
||||
}
|
||||
|
||||
static void save_session(ssl_connection_t *conn) {
|
||||
|
|
@ -281,7 +280,7 @@ static void save_session(ssl_connection_t *conn) {
|
|||
// them, therefore it is thread safe to add session upon connect
|
||||
memset(sess, 0, sizeof(mbedtls_ssl_session));
|
||||
if (mbedtls_ssl_get_session(&conn->ssl, sess))
|
||||
psync_free(sess);
|
||||
free(sess);
|
||||
else
|
||||
pcache_add(conn->cachekey, sess, PSYNC_SSL_SESSION_CACHE_TIMEOUT,
|
||||
free_session, PSYNC_MAX_SSL_SESSIONS_PER_DOMAIN);
|
||||
|
|
@ -365,7 +364,7 @@ int pssl_connect(int sock, void **sslconn,
|
|||
debug(D_WARNING, "ssl_set_session failed");
|
||||
}
|
||||
mbedtls_ssl_session_free(sess);
|
||||
psync_free(sess);
|
||||
free(sess);
|
||||
}
|
||||
|
||||
ret = mbedtls_ssl_handshake(&conn->ssl);
|
||||
|
|
@ -387,7 +386,7 @@ int pssl_connect(int sock, void **sslconn,
|
|||
err1:
|
||||
mbedtls_ssl_free(&conn->ssl);
|
||||
err0:
|
||||
psync_free(conn);
|
||||
free(conn);
|
||||
return PRINT_RETURN_CONST(PSYNC_SSL_FAIL);
|
||||
}
|
||||
|
||||
|
|
@ -412,7 +411,7 @@ int pssl_connect_finish(void *sslconn, const char *hostname) {
|
|||
return PSYNC_SSL_NEED_FINISH;
|
||||
fail:
|
||||
mbedtls_ssl_free(&conn->ssl);
|
||||
psync_free(conn);
|
||||
free(conn);
|
||||
return PRINT_RETURN_CONST(PSYNC_SSL_FAIL);
|
||||
}
|
||||
|
||||
|
|
@ -431,7 +430,7 @@ int pssl_shutdown(void *sslconn) {
|
|||
return PSYNC_SSL_NEED_FINISH;
|
||||
noshutdown:
|
||||
mbedtls_ssl_free(&conn->ssl);
|
||||
psync_free(conn);
|
||||
free(conn);
|
||||
return PSYNC_SSL_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
@ -439,7 +438,7 @@ void pssl_free(void *sslconn) {
|
|||
ssl_connection_t *conn;
|
||||
conn = (ssl_connection_t *)sslconn;
|
||||
mbedtls_ssl_free(&conn->ssl);
|
||||
psync_free(conn);
|
||||
free(conn);
|
||||
}
|
||||
|
||||
int pssl_pendingdata(void *sslconn) {
|
||||
|
|
@ -485,7 +484,7 @@ psync_rsa_t pssl_gen_rsa(int bits) {
|
|||
if (mbedtls_rsa_gen_key(ctx, rng_get, &rng, bits,
|
||||
65537)) {
|
||||
mbedtls_rsa_free(ctx);
|
||||
psync_free(ctx);
|
||||
free(ctx);
|
||||
return PSYNC_INVALID_RSA;
|
||||
} else
|
||||
return ctx;
|
||||
|
|
@ -493,7 +492,7 @@ psync_rsa_t pssl_gen_rsa(int bits) {
|
|||
|
||||
void pssl_free_rsa(psync_rsa_t rsa) {
|
||||
mbedtls_rsa_free(rsa);
|
||||
psync_free(rsa);
|
||||
free(rsa);
|
||||
}
|
||||
|
||||
psync_rsa_publickey_t prsa_get_public(psync_rsa_t rsa) {
|
||||
|
|
@ -519,7 +518,7 @@ psync_rsa_privatekey_t prsa_get_private(psync_rsa_t rsa) {
|
|||
|
||||
if (unlikely(mbedtls_rsa_copy(ctx, rsa))) {
|
||||
mbedtls_rsa_free(ctx);
|
||||
psync_free(ctx);
|
||||
free(ctx);
|
||||
return PSYNC_INVALID_RSA;
|
||||
} else
|
||||
return ctx;
|
||||
|
|
@ -545,7 +544,7 @@ prsa_public_to_binary(psync_rsa_publickey_t rsa) {
|
|||
if (len <= 0)
|
||||
return PSYNC_INVALID_BIN_RSA;
|
||||
ret =
|
||||
pmemlock_malloc(offsetof(psync_encrypted_data_struct_t, data) + len);
|
||||
malloc(offsetof(psync_encrypted_data_struct_t, data) + len);
|
||||
ret->datalen = len;
|
||||
memcpy(ret->data, buff + sizeof(buff) - len, len);
|
||||
return ret;
|
||||
|
|
@ -566,7 +565,7 @@ prsa_private_to_binary(psync_rsa_privatekey_t rsa) {
|
|||
if (len <= 0)
|
||||
return PSYNC_INVALID_BIN_RSA;
|
||||
ret =
|
||||
pmemlock_malloc(offsetof(psync_encrypted_data_struct_t, data) + len);
|
||||
malloc(offsetof(psync_encrypted_data_struct_t, data) + len);
|
||||
ret->datalen = len;
|
||||
memcpy(ret->data, buff + sizeof(buff) - len, len);
|
||||
putil_wipe(buff + sizeof(buff) - len, len);
|
||||
|
|
@ -593,7 +592,7 @@ psync_rsa_publickey_t prsa_load_public(const unsigned char *keydata,
|
|||
if (unlikely(ret)) {
|
||||
debug(D_WARNING, "rsa_copy failed with code %d", ret);
|
||||
mbedtls_rsa_free(rsa);
|
||||
psync_free(rsa);
|
||||
free(rsa);
|
||||
return PSYNC_INVALID_RSA;
|
||||
} else {
|
||||
mbedtls_rsa_set_padding(rsa, MBEDTLS_RSA_PKCS_V21, MBEDTLS_MD_SHA1);
|
||||
|
|
@ -648,7 +647,7 @@ psync_rsa_privatekey_t prsa_load_private(const unsigned char *keydata, size_t ke
|
|||
if (unlikely(ret)) {
|
||||
debug(D_WARNING, "rsa_copy failed with code %d", ret);
|
||||
mbedtls_rsa_free(rsa);
|
||||
psync_free(rsa);
|
||||
free(rsa);
|
||||
return PSYNC_INVALID_RSA;
|
||||
} else {
|
||||
mbedtls_rsa_set_padding(rsa, MBEDTLS_RSA_PKCS_V21, MBEDTLS_MD_SHA1);
|
||||
|
|
@ -670,7 +669,7 @@ psync_symmetric_key_t
|
|||
psymkey_generate(const char *password, size_t keylen,
|
||||
const unsigned char *salt, size_t saltlen,
|
||||
size_t iterations) {
|
||||
psync_symmetric_key_t key = (psync_symmetric_key_t)pmemlock_malloc(
|
||||
psync_symmetric_key_t key = (psync_symmetric_key_t)malloc(
|
||||
keylen + offsetof(psync_symmetric_key_struct_t, key));
|
||||
mbedtls_md_context_t ctx;
|
||||
mbedtls_md_init(&ctx);
|
||||
|
|
@ -699,7 +698,7 @@ char *psymkey_derive(const char *username,
|
|||
else
|
||||
usercopy[i] = '*';
|
||||
psync_sha512(usercopy, userlen, usersha512);
|
||||
psync_free(usercopy);
|
||||
free(usercopy);
|
||||
mbedtls_md_init(&ctx);
|
||||
mbedtls_md_setup(&ctx, mbedtls_md_info_from_type(MBEDTLS_MD_SHA512), 1);
|
||||
const mbedtls_md_info_t *md_info = mbedtls_md_info_from_ctx(&ctx);
|
||||
|
|
@ -718,12 +717,12 @@ prsa_encrypt_data(psync_rsa_publickey_t rsa, const unsigned char *data,
|
|||
int code;
|
||||
size_t rsalen = mbedtls_rsa_get_len(rsa);
|
||||
|
||||
ret = (psync_encrypted_symmetric_key_t)psync_malloc(
|
||||
ret = (psync_encrypted_symmetric_key_t)malloc(
|
||||
offsetof(psync_encrypted_data_struct_t, data) + rsalen);
|
||||
if ((code = mbedtls_rsa_rsaes_oaep_encrypt(
|
||||
rsa, rng_get, &rng,
|
||||
NULL, 0, datalen, data, ret->data))) {
|
||||
psync_free(ret);
|
||||
free(ret);
|
||||
debug(
|
||||
D_WARNING,
|
||||
"rsa_rsaes_oaep_encrypt failed with error=%d, datalen=%lu, rsasize=%d",
|
||||
|
|
@ -745,7 +744,7 @@ psync_symmetric_key_t prsa_decrypt_data(psync_rsa_privatekey_t rsa,
|
|||
&rng, NULL,
|
||||
0, &len, data, buff, sizeof(buff)))
|
||||
return PSYNC_INVALID_SYM_KEY;
|
||||
ret = (psync_symmetric_key_t)pmemlock_malloc(
|
||||
ret = (psync_symmetric_key_t)malloc(
|
||||
offsetof(psync_symmetric_key_struct_t, key) + len);
|
||||
ret->keylen = len;
|
||||
memcpy(ret->key, buff, len);
|
||||
|
|
@ -775,7 +774,7 @@ paes_create_encoder(psync_symmetric_key_t key) {
|
|||
|
||||
void paes_free_encoder(psync_aes256_encoder aes) {
|
||||
putil_wipe(aes, sizeof(mbedtls_aes_context));
|
||||
psync_free(aes);
|
||||
free(aes);
|
||||
}
|
||||
|
||||
psync_aes256_encoder
|
||||
|
|
@ -789,7 +788,7 @@ paes_create_decoder(psync_symmetric_key_t key) {
|
|||
|
||||
void paes_free_decoder(psync_aes256_encoder aes) {
|
||||
putil_wipe(aes, sizeof(mbedtls_aes_context));
|
||||
psync_free(aes);
|
||||
free(aes);
|
||||
}
|
||||
|
||||
psync_rsa_signature_t
|
||||
|
|
@ -799,7 +798,7 @@ prsa_sign_sha256_hash(psync_rsa_privatekey_t rsa,
|
|||
int padding, hash_id;
|
||||
size_t rsalen = mbedtls_rsa_get_len(rsa);
|
||||
|
||||
ret = (psync_rsa_signature_t)psync_malloc(
|
||||
ret = (psync_rsa_signature_t)malloc(
|
||||
offsetof(psync_symmetric_key_struct_t, key) + rsalen);
|
||||
if (!ret)
|
||||
return (psync_rsa_signature_t)(void *)PERROR_NO_MEMORY;
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ void pstatus_upload_recalc() {
|
|||
filestou++;
|
||||
bytestou += pfile_stat_size(&st);
|
||||
}
|
||||
psync_free(filename);
|
||||
free(filename);
|
||||
}
|
||||
psync_sql_free_result(res);
|
||||
psync_status.filestoupload = filestou;
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ static void dir_scan(void *ptr, ppath_fast_stat *st) {
|
|||
size_t l, o;
|
||||
l = strlen(st->name);
|
||||
o = f->pathlen;
|
||||
nf = (scan_folder *)psync_malloc(sizeof(scan_folder) + o + l + 2);
|
||||
nf = (scan_folder *)malloc(sizeof(scan_folder) + o + l + 2);
|
||||
psync_list_init(&nf->subfolders);
|
||||
path = (char *)(nf + 1);
|
||||
memcpy(path, f->path, o);
|
||||
|
|
@ -184,7 +184,7 @@ static int sort_comp_tuple_rev(const void *p1, const void *p2) {
|
|||
static void free_folder(scan_folder *f) {
|
||||
psync_list_for_each_element_call(&f->subfolders, scan_folder, nextfolder,
|
||||
free_folder);
|
||||
psync_free(f);
|
||||
free(f);
|
||||
}
|
||||
|
||||
psuggested_folders_t *psuggest_scan_folder(const char *path) {
|
||||
|
|
@ -233,12 +233,12 @@ psuggested_folders_t *psuggest_scan_folder(const char *path) {
|
|||
ln += s->folder->pathlen + off + 2;
|
||||
sf[cnt] = s;
|
||||
descslen[cnt] = off + 1;
|
||||
descs[cnt] = psync_malloc(descslen[cnt]);
|
||||
descs[cnt] = malloc(descslen[cnt]);
|
||||
memcpy(descs[cnt], buff, descslen[cnt]);
|
||||
if (++cnt >= PSYNC_SCANNER_MAX_SUGGESTIONS)
|
||||
break;
|
||||
}
|
||||
ret = psync_malloc(offsetof(psuggested_folders_t, entries) +
|
||||
ret = malloc(offsetof(psuggested_folders_t, entries) +
|
||||
sizeof(psuggested_folder_t) * cnt + ln);
|
||||
str = ((char *)ret) + offsetof(psuggested_folders_t, entries) +
|
||||
sizeof(psuggested_folder_t) * cnt;
|
||||
|
|
@ -259,12 +259,11 @@ psuggested_folders_t *psuggest_scan_folder(const char *path) {
|
|||
ret->entries[i].description = str;
|
||||
memcpy(str, descs[i], descslen[i]);
|
||||
str += descslen[i];
|
||||
psync_free(descs[i]);
|
||||
free(descs[i]);
|
||||
debug(D_NOTICE, "suggesting %s (%s, %s)", ret->entries[i].localpath,
|
||||
ret->entries[i].name, ret->entries[i].description);
|
||||
}
|
||||
psync_list_for_each_element_call(&suggestions, suggested_folder, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&suggestions, suggested_folder, list, free);
|
||||
free_folder(f);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ void psyncer_dl_queue_del(psync_folderid_t folderid) {
|
|||
f = ptree_element(f->tree.right, synced_down_folder, tree);
|
||||
else {
|
||||
ptree_del(&synced_down_folders, &f->tree);
|
||||
psync_free(f);
|
||||
free(f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -129,8 +129,7 @@ void psyncer_dl_queue_del(psync_folderid_t folderid) {
|
|||
|
||||
void psyncer_dl_queue_clear() {
|
||||
pthread_mutex_lock(&sync_down_mutex);
|
||||
ptree_for_each_element_call_safe(synced_down_folders, synced_down_folder,
|
||||
tree, psync_free);
|
||||
ptree_for_each_element_call_safe(synced_down_folders, synced_down_folder, tree, free);
|
||||
synced_down_folders = PSYNC_TREE_EMPTY;
|
||||
pthread_mutex_unlock(&sync_down_mutex);
|
||||
}
|
||||
|
|
@ -212,7 +211,7 @@ psync_folderid_t psyncer_db_folder_create(
|
|||
if (psync_sql_affected_rows() > 0) {
|
||||
lfolderid = psync_sql_insertid();
|
||||
psync_sql_free_result(res);
|
||||
psync_free(vname);
|
||||
free(vname);
|
||||
return lfolderid;
|
||||
}
|
||||
psync_sql_free_result(res);
|
||||
|
|
@ -242,7 +241,7 @@ psync_folderid_t psyncer_db_folder_create(
|
|||
psync_sql_run_free(res);
|
||||
}
|
||||
psyncer_folder_inc_tasks(lfolderid);
|
||||
psync_free(vname);
|
||||
free(vname);
|
||||
return lfolderid;
|
||||
}
|
||||
|
||||
|
|
@ -342,12 +341,12 @@ static void psync_sync_newsyncedfolder(psync_syncid_t syncid) {
|
|||
}
|
||||
} else
|
||||
psync_sql_rollback_transaction();
|
||||
psync_free(localpath);
|
||||
free(localpath);
|
||||
}
|
||||
|
||||
static void psync_do_sync_thread(void *ptr) {
|
||||
psync_sync_newsyncedfolder(*((psync_syncid_t *)ptr));
|
||||
psync_free(ptr);
|
||||
free(ptr);
|
||||
}
|
||||
|
||||
void psyncer_create(psync_syncid_t syncid) {
|
||||
|
|
@ -474,8 +473,8 @@ re:
|
|||
folderid = pfolder_id_create(remotepath);
|
||||
if (unlikely(folderid == PSYNC_INVALID_FOLDERID)) {
|
||||
debug(D_WARNING, "could not get folderid/create folder %s", remotepath);
|
||||
psync_free(localpath);
|
||||
psync_free(remotepath);
|
||||
free(localpath);
|
||||
free(remotepath);
|
||||
if (psync_error != PERROR_OFFLINE) {
|
||||
delete_delayed_sync(id);
|
||||
goto re;
|
||||
|
|
@ -490,8 +489,8 @@ re:
|
|||
psync_sql_free_result(stmt);
|
||||
if (!urow) {
|
||||
psync_sql_commit_transaction();
|
||||
psync_free(localpath);
|
||||
psync_free(remotepath);
|
||||
free(localpath);
|
||||
free(remotepath);
|
||||
goto re;
|
||||
}
|
||||
stmt = psync_sql_prep_statement(
|
||||
|
|
@ -508,8 +507,8 @@ re:
|
|||
else
|
||||
syncid = -1;
|
||||
psync_sql_free_result(stmt);
|
||||
psync_free(localpath);
|
||||
psync_free(remotepath);
|
||||
free(localpath);
|
||||
free(remotepath);
|
||||
if (!psync_sql_commit_transaction() && syncid != -1) {
|
||||
ppathstatus_reload_syncs();
|
||||
psyncer_create(syncid);
|
||||
|
|
|
|||
|
|
@ -60,7 +60,6 @@
|
|||
#include "plist.h"
|
||||
#include "plocalnotify.h"
|
||||
#include "plocalscan.h"
|
||||
#include "pmemlock.h"
|
||||
#include "pnetlibs.h"
|
||||
#include "pnotify.h"
|
||||
#include "prpc.h"
|
||||
|
|
@ -85,9 +84,6 @@
|
|||
#include "pupload.h"
|
||||
#include "putil.h"
|
||||
|
||||
|
||||
#define BUGHUNT 0
|
||||
|
||||
// Variable containing UNIX time of the last backup file deleted event
|
||||
time_t lastBupDelEventTime = 0;
|
||||
time_t bupNotifDelay = 300;
|
||||
|
|
@ -99,10 +95,6 @@ typedef struct {
|
|||
|
||||
PSYNC_THREAD const char *psync_thread_name = "no name";
|
||||
|
||||
static psync_malloc_t psync_real_malloc = malloc;
|
||||
static psync_realloc_t psync_real_realloc = realloc;
|
||||
static psync_free_t psync_real_free = free;
|
||||
|
||||
const char *psync_database = NULL;
|
||||
|
||||
static int psync_libstate = 0;
|
||||
|
|
@ -127,93 +119,12 @@ static inline int psync_status_is_offline() {
|
|||
return PSYNC_INVALID_SYNCID; \
|
||||
} while (0)
|
||||
|
||||
PSYNC_NOINLINE void *psync_emergency_malloc(size_t size) {
|
||||
void *ret;
|
||||
debug(D_WARNING, "could not allocate %lu bytes", size);
|
||||
psync_try_free_memory();
|
||||
ret = psync_real_malloc(size);
|
||||
if (likely(ret))
|
||||
#if IS_DEBUG
|
||||
return memset(ret, 0xfa, size);
|
||||
#else
|
||||
return ret;
|
||||
#endif
|
||||
else {
|
||||
debug(
|
||||
D_CRITICAL,
|
||||
"could not allocate %lu bytes even after freeing some memory, aborting",
|
||||
size);
|
||||
abort();
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void *psync_malloc(size_t size) {
|
||||
void *ptr;
|
||||
#if 1 == BUGHUNT
|
||||
void *callstack[128];
|
||||
int frames = backtrace(callstack, 128);
|
||||
char **strs = backtrace_symbols(callstack, frames);
|
||||
#endif
|
||||
ptr = psync_real_malloc(size);
|
||||
#if 1 == BUGHUNT
|
||||
printf("Allocated %zu bytes at %p\n", size, ptr);
|
||||
for (int i = 0; i < frames; i++) {
|
||||
printf("%s\n", strs[i]);
|
||||
}
|
||||
free(strs);
|
||||
#endif
|
||||
if (likely(ptr))
|
||||
#if IS_DEBUG
|
||||
return memset(ptr, 0xfa, size);
|
||||
#else
|
||||
return ptr;
|
||||
#endif
|
||||
else
|
||||
return psync_emergency_malloc(size);
|
||||
}
|
||||
|
||||
PSYNC_NOINLINE void *psync_emergency_realloc(void *ptr, size_t size) {
|
||||
void *ret;
|
||||
debug(D_WARNING, "could not reallocate %lu bytes", size);
|
||||
psync_try_free_memory();
|
||||
ret = psync_real_realloc(ptr, size);
|
||||
if (likely(ret))
|
||||
return ret;
|
||||
else {
|
||||
debug(D_CRITICAL,
|
||||
"could not reallocate %lu bytes even after freeing some memory, "
|
||||
"aborting",
|
||||
size);
|
||||
abort();
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void *psync_realloc(void *ptr, size_t size) {
|
||||
void *ret;
|
||||
ret = psync_real_realloc(ptr, size);
|
||||
if (likely(ret))
|
||||
return ret;
|
||||
else
|
||||
return psync_emergency_realloc(ptr, size);
|
||||
}
|
||||
|
||||
void psync_free(void *ptr) { psync_real_free(ptr); }
|
||||
|
||||
uint32_t psync_get_last_error() { return psync_error; }
|
||||
|
||||
void psync_set_database_path(const char *databasepath) {
|
||||
psync_database = psync_strdup(databasepath);
|
||||
}
|
||||
|
||||
void psync_set_alloc(psync_malloc_t malloc_call, psync_realloc_t realloc_call,
|
||||
psync_free_t free_call) {
|
||||
psync_real_malloc = malloc_call;
|
||||
psync_real_realloc = realloc_call;
|
||||
psync_real_free = free_call;
|
||||
}
|
||||
|
||||
static void psync_stop_crypto_on_sleep() {
|
||||
if (psync_setting_get_bool(_PS(sleepstopcrypto)) &&
|
||||
pcryptofolder_is_unlocked()) {
|
||||
|
|
@ -259,7 +170,6 @@ int psync_init() {
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
pmemlock_init();
|
||||
pcache_init();
|
||||
psys_init();
|
||||
|
||||
|
|
@ -384,9 +294,9 @@ void psync_set_user_pass(const char *username, const char *password, int save) {
|
|||
psync_set_string_value("pass", password);
|
||||
} else {
|
||||
pthread_mutex_lock(&psync_my_auth_mutex);
|
||||
psync_free(psync_my_user);
|
||||
free(psync_my_user);
|
||||
psync_my_user = psync_strdup(username);
|
||||
psync_free(psync_my_pass);
|
||||
free(psync_my_pass);
|
||||
if (password && password[0])
|
||||
psync_my_pass = psync_strdup(password);
|
||||
pthread_mutex_unlock(&psync_my_auth_mutex);
|
||||
|
|
@ -401,7 +311,7 @@ void psync_set_pass(const char *password, int save) {
|
|||
psync_set_string_value("pass", password);
|
||||
else {
|
||||
pthread_mutex_lock(&psync_my_auth_mutex);
|
||||
psync_free(psync_my_pass);
|
||||
free(psync_my_pass);
|
||||
psync_my_pass = psync_strdup(password);
|
||||
pthread_mutex_unlock(&psync_my_auth_mutex);
|
||||
}
|
||||
|
|
@ -441,7 +351,7 @@ void psync_logout(uint32_t auth_status, int doinvauth) {
|
|||
|
||||
pthread_mutex_lock(&psync_my_auth_mutex);
|
||||
putil_wipe(psync_my_pass, sizeof(psync_my_pass));
|
||||
psync_free(psync_my_pass);
|
||||
free(psync_my_pass);
|
||||
pthread_mutex_unlock(&psync_my_auth_mutex);
|
||||
|
||||
pstatus_set(PSTATUS_TYPE_ONLINE, PSTATUS_ONLINE_CONNECTING);
|
||||
|
|
@ -501,7 +411,7 @@ apiservers_list_t *psync_get_apiservers(char **err) {
|
|||
locations = papi_find_result2(bres, "locations", PARAM_ARRAY);
|
||||
locationscnt = locations->length;
|
||||
if (!locationscnt) {
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return NULL;
|
||||
}
|
||||
builder = psync_list_builder_create(sizeof(apiserver_info_t),
|
||||
|
|
@ -569,7 +479,7 @@ void psync_unlink() {
|
|||
ret = psync_sql_close();
|
||||
pfile_delete(psync_database);
|
||||
if (ret) {
|
||||
psync_free(deviceid);
|
||||
free(deviceid);
|
||||
debug(D_ERROR, "failed to close database, exiting");
|
||||
exit(1);
|
||||
}
|
||||
|
|
@ -579,7 +489,7 @@ void psync_unlink() {
|
|||
res = psync_sql_prep_statement("REPLACE INTO setting (id, value) VALUES ('deviceid', ?)");
|
||||
psync_sql_bind_string(res, 1, deviceid);
|
||||
psync_sql_run_free(res);
|
||||
psync_free(deviceid);
|
||||
free(deviceid);
|
||||
}
|
||||
pthread_mutex_lock(&psync_my_auth_mutex);
|
||||
putil_wipe(psync_my_auth, sizeof(psync_my_auth));
|
||||
|
|
@ -617,7 +527,7 @@ int psync_tfa_type() { return psync_my_2fa_type; }
|
|||
static void check_tfa_result(uint64_t result) {
|
||||
if (result == 2064) {
|
||||
if (pstatus_get(PSTATUS_TYPE_AUTH) == PSTATUS_AUTH_TFAREQ) {
|
||||
psync_free(psync_my_2fa_token);
|
||||
free(psync_my_2fa_token);
|
||||
psync_my_2fa_token = NULL;
|
||||
pstatus_set(PSTATUS_TYPE_AUTH, PSTATUS_AUTH_PROVIDED);
|
||||
}
|
||||
|
|
@ -777,10 +687,10 @@ psync_syncid_t psync_add_sync_by_folderid(const char *localpath,
|
|||
if (!memcmp(syncmp, localpath, len) &&
|
||||
(localpath[len] == 0 || localpath[len] == '/' ||
|
||||
localpath[len] == '\\')) {
|
||||
psync_free(syncmp);
|
||||
free(syncmp);
|
||||
return_isyncid(PERROR_LOCAL_IS_ON_PDRIVE);
|
||||
}
|
||||
psync_free(syncmp);
|
||||
free(syncmp);
|
||||
}
|
||||
res = psync_sql_query("SELECT localpath FROM syncfolder");
|
||||
if (unlikely_log(!res))
|
||||
|
|
@ -1028,7 +938,7 @@ psuggested_folders_t *psync_get_sync_suggestions() {
|
|||
home = ppath_home();
|
||||
if (likely_log(home)) {
|
||||
ret = psuggest_scan_folder(home);
|
||||
psync_free(home);
|
||||
free(home);
|
||||
return ret;
|
||||
} else {
|
||||
psync_error = PERROR_NO_HOMEDIR;
|
||||
|
|
@ -1067,7 +977,7 @@ int psync_is_lname_to_ignore(const char *name, size_t namelen) {
|
|||
size_t ilen, off, pl;
|
||||
char buff[120];
|
||||
if (namelen >= sizeof(buff))
|
||||
namelower = (char *)psync_malloc(namelen + 1);
|
||||
namelower = (char *)malloc(namelen + 1);
|
||||
else
|
||||
namelower = buff;
|
||||
memcpy(namelower, name, namelen);
|
||||
|
|
@ -1096,13 +1006,13 @@ int psync_is_lname_to_ignore(const char *name, size_t namelen) {
|
|||
pl--;
|
||||
if (psync_match_pattern(namelower, pt, pl)) {
|
||||
if (namelower != buff)
|
||||
psync_free(namelower);
|
||||
free(namelower);
|
||||
debug(D_NOTICE, "ignoring file/folder %s", name);
|
||||
return 1;
|
||||
}
|
||||
} while (sc);
|
||||
if (namelower != buff)
|
||||
psync_free(namelower);
|
||||
free(namelower);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1161,7 +1071,7 @@ static int do_run_command_get_res(const char *cmd, size_t cmdlen,
|
|||
psync_process_api_error(result);
|
||||
}
|
||||
if (result)
|
||||
psync_free(res);
|
||||
free(res);
|
||||
else
|
||||
*pres = res;
|
||||
return (int)result;
|
||||
|
|
@ -1210,7 +1120,7 @@ int psync_register(const char *email, const char *password, int termsaccepted,
|
|||
psync_set_apiserver(PSYNC_API_HOST, PSYNC_LOCATIONID_DEFAULT);
|
||||
}
|
||||
psock_close(sock);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -1242,12 +1152,12 @@ int psync_change_password(const char *currentpass, const char *newpass,
|
|||
PAPI_BOOL("regetauth", 1)};
|
||||
ret = run_command_get_res("changepassword", params, err, &res);
|
||||
}
|
||||
psync_free(device);
|
||||
free(device);
|
||||
if (ret)
|
||||
return ret;
|
||||
psync_strlcpy(psync_my_auth, papi_find_result2(res, "auth", PARAM_STR)->str,
|
||||
sizeof(psync_my_auth));
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1260,7 +1170,7 @@ int psync_create_remote_folder_by_path(const char *path, char **err) {
|
|||
if (ret)
|
||||
return ret;
|
||||
pfileops_create_fldr(papi_find_result2(res, "metadata", PARAM_HASH));
|
||||
psync_free(res);
|
||||
free(res);
|
||||
pdiff_wake();
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1276,7 +1186,7 @@ int psync_create_remote_folder(psync_folderid_t parentfolderid,
|
|||
if (ret)
|
||||
return ret;
|
||||
pfileops_create_fldr(papi_find_result2(res, "metadata", PARAM_HASH));
|
||||
psync_free(res);
|
||||
free(res);
|
||||
pdiff_wake();
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1699,9 +1609,9 @@ int psync_remove_share(psync_shareid_t shareid, char **err) {
|
|||
result = psync_account_stopshare(shareid, &err1);
|
||||
if (result == 2075) {
|
||||
result = 2025;
|
||||
psync_free(err1);
|
||||
free(err1);
|
||||
} else {
|
||||
psync_free(*err);
|
||||
free(*err);
|
||||
*err = err1;
|
||||
}
|
||||
debug(D_NOTICE, "erroris %s", *err);
|
||||
|
|
@ -1731,9 +1641,9 @@ int psync_modify_share(psync_shareid_t shareid, uint32_t permissions,
|
|||
psync_account_modifyshare(shareid, convert_perms(permissions), &err1);
|
||||
if (result == 2075) {
|
||||
result = 2025;
|
||||
psync_free(err1);
|
||||
free(err1);
|
||||
} else {
|
||||
psync_free(*err);
|
||||
free(*err);
|
||||
*err = err1;
|
||||
}
|
||||
debug(D_NOTICE, "erroris %s", *err);
|
||||
|
|
@ -1751,7 +1661,7 @@ static void psync_del_all_except(void *ptr, ppath_fast_stat *st) {
|
|||
debug(D_NOTICE, "deleting old update file %s", fp);
|
||||
if (pfile_delete(fp))
|
||||
debug(D_WARNING, "could not delete %s", fp);
|
||||
psync_free(fp);
|
||||
free(fp);
|
||||
}
|
||||
|
||||
static char *psync_filename_from_res(const binresult *res) {
|
||||
|
|
@ -1769,8 +1679,8 @@ static char *psync_filename_from_res(const binresult *res) {
|
|||
nmarr[1] = nmd;
|
||||
ppath_ls_fast(path, psync_del_all_except, (void *)nmarr);
|
||||
ret = psync_strcat(path, "/", nmd, NULL);
|
||||
psync_free(nmd);
|
||||
psync_free(path);
|
||||
free(nmd);
|
||||
free(path);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1781,13 +1691,13 @@ static int psync_upload_result(binresult *res, psync_fileid_t *fileid) {
|
|||
const binresult *meta =
|
||||
papi_find_result2(res, "metadata", PARAM_ARRAY)->array[0];
|
||||
*fileid = papi_find_result2(meta, "fileid", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
pdiff_wake();
|
||||
return 0;
|
||||
} else {
|
||||
debug(D_WARNING, "uploadfile returned error %u: %s", (unsigned)result,
|
||||
papi_find_result2(res, "error", PARAM_STR)->str);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_process_api_error(result);
|
||||
return result;
|
||||
}
|
||||
|
|
@ -1852,7 +1762,7 @@ static int psync_load_file(const char *local_path, char **data,
|
|||
if (fstat(fd, &st1))
|
||||
goto err1;
|
||||
len = pfile_stat_size(&st1);
|
||||
buff = psync_malloc(len);
|
||||
buff = malloc(len);
|
||||
if (!buff)
|
||||
goto err1;
|
||||
off = 0;
|
||||
|
|
@ -1870,7 +1780,7 @@ static int psync_load_file(const char *local_path, char **data,
|
|||
*length = len;
|
||||
return 0;
|
||||
}
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
}
|
||||
return -1;
|
||||
err1:
|
||||
|
|
@ -1887,7 +1797,7 @@ int psync_upload_file(psync_folderid_t folderid, const char *remote_filename,
|
|||
if (psync_load_file(local_path, &data, &length))
|
||||
return -2;
|
||||
ret = psync_upload_data(folderid, remote_filename, data, length, fileid);
|
||||
psync_free(data);
|
||||
free(data);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1900,7 +1810,7 @@ int psync_upload_file_as(const char *remote_path, const char *remote_filename,
|
|||
return -2;
|
||||
ret =
|
||||
psync_upload_data_as(remote_path, remote_filename, data, length, fileid);
|
||||
psync_free(data);
|
||||
free(data);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -2020,7 +1930,7 @@ psync_folderid_t *psync_crypto_folderids() {
|
|||
ret[l] = row[0];
|
||||
if (++l == alloc) {
|
||||
alloc *= 2;
|
||||
ret = (psync_folderid_t *)psync_realloc(ret,
|
||||
ret = (psync_folderid_t *)realloc(ret,
|
||||
sizeof(psync_folderid_t) * alloc);
|
||||
}
|
||||
}
|
||||
|
|
@ -2063,7 +1973,7 @@ int psync_crypto_change_crypto_pass(const char *oldpass, const char *newpass,
|
|||
}
|
||||
}
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (result != 0)
|
||||
debug(D_WARNING, "crypto_changeuserprivate returned %u",
|
||||
(unsigned)result);
|
||||
|
|
@ -2110,7 +2020,7 @@ int psync_crypto_change_crypto_pass_unlocked(const char *newpass,
|
|||
}
|
||||
}
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (result != 0)
|
||||
debug(D_WARNING, "crypto_changeuserprivate returned %u",
|
||||
(unsigned)result);
|
||||
|
|
@ -2139,7 +2049,7 @@ int psync_crypto_crypto_send_change_user_private() {
|
|||
psync_apipool_release(api);
|
||||
}
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (result != 0)
|
||||
debug(D_WARNING, "crypto_sendchangeuserprivate returned %u",
|
||||
(unsigned)result);
|
||||
|
|
@ -2386,12 +2296,12 @@ int psync_get_promo(char **url, uint64_t *width, uint64_t *height) {
|
|||
|
||||
if (result) {
|
||||
debug(D_WARNING, "getpromourl returned %d", (int)result);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return result;
|
||||
}
|
||||
|
||||
if (!papi_find_result2(res, "haspromo", PARAM_BOOL)->num) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -2401,7 +2311,7 @@ int psync_get_promo(char **url, uint64_t *width, uint64_t *height) {
|
|||
if (!papi_find_result2(res, "width", PARAM_NUM)->num) {
|
||||
debug(D_NOTICE, "Parameter width not found.");
|
||||
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -2411,14 +2321,14 @@ int psync_get_promo(char **url, uint64_t *width, uint64_t *height) {
|
|||
if (!papi_find_result2(res, "height", PARAM_NUM)->num) {
|
||||
debug(D_NOTICE, "Parameter height not found.");
|
||||
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return result;
|
||||
}
|
||||
|
||||
*height = papi_find_result2(res, "height", PARAM_NUM)->num;
|
||||
debug(D_NOTICE, "Promo window Height: [%lu]", *height);
|
||||
|
||||
psync_free(res);
|
||||
free(res);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -2526,12 +2436,12 @@ int psync_is_folder_syncable(char *localPath, char **errMsg) {
|
|||
if (!memcmp(syncmp, localPath, len) &&
|
||||
(localPath[len] == 0 || localPath[len] == '/' ||
|
||||
localPath[len] == '\\')) {
|
||||
psync_free(syncmp);
|
||||
free(syncmp);
|
||||
|
||||
*errMsg = psync_strdup("Folder is located on pCloud drive.");
|
||||
return PERROR_LOCAL_IS_ON_PDRIVE;
|
||||
}
|
||||
psync_free(syncmp);
|
||||
free(syncmp);
|
||||
}
|
||||
|
||||
// Check if folder is not a child of an igrnored folder
|
||||
|
|
@ -2880,12 +2790,12 @@ userinfo_t *psync_get_userinfo() {
|
|||
PAPI_STR("timeformat", "timestamp")};
|
||||
res = psync_api_run_command("userinfo", params);
|
||||
if (!res) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return NULL;
|
||||
}
|
||||
err = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (err) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
@ -2900,7 +2810,7 @@ userinfo_t *psync_get_userinfo() {
|
|||
language = cres->str;
|
||||
llanguage =
|
||||
(cres->length + sizeof(void *)) / sizeof(void *) * sizeof(void *);
|
||||
info = (userinfo_t *)psync_malloc(sizeof(userinfo_t) + lemail + lcurrency +
|
||||
info = (userinfo_t *)malloc(sizeof(userinfo_t) + lemail + lcurrency +
|
||||
llanguage);
|
||||
ptr = (char *)(info + 1);
|
||||
memcpy(ptr, email, lemail);
|
||||
|
|
@ -2948,7 +2858,7 @@ userinfo_t *psync_get_userinfo() {
|
|||
info->usedquota = papi_find_result2(res, "usedquota", PARAM_NUM)->num;
|
||||
info->freequota = papi_find_result2(res, "freequota", PARAM_NUM)->num;
|
||||
info->registered = papi_find_result2(res, "registered", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return info;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -514,10 +514,6 @@ typedef void (*psync_free_t)(void *);
|
|||
|
||||
typedef void (*psync_generic_callback_t)();
|
||||
|
||||
void *psync_malloc(size_t size);
|
||||
void *psync_realloc(void *ptr, size_t size);
|
||||
void psync_free(void *ptr);
|
||||
|
||||
/* Event callback is called every time a download/upload is started/finished,
|
||||
* quota is changed, folder is shared or similar. Look at the PEVENT_ constants
|
||||
* for a list of possible events.
|
||||
|
|
@ -668,7 +664,7 @@ void psync_unlink();
|
|||
* psync_tfa_send_nofification() - sends notification with two factor
|
||||
* authentication code to all already logged in devices. If devices_list is not
|
||||
* null it is filled in with list of user's devices. In this case the caller is
|
||||
* supposed to free the list with a single call to psync_free(). Returns -1 in
|
||||
* supposed to free the list with a single call to free(). Returns -1 in
|
||||
* case of network error or one of the positive error codes listed at
|
||||
* https://docsqa2.pcloud.com/methods/auth/tfa_sendcodeviasysnotification.html
|
||||
*
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@
|
|||
#include <sys/resource.h>
|
||||
|
||||
#include "plibs.h"
|
||||
#include "pmemlock.h"
|
||||
#include "psys.h"
|
||||
|
||||
static uid_t psync_uid;
|
||||
|
|
@ -51,8 +50,7 @@ void psys_init() {
|
|||
psync_gids = psync_new_cnt(gid_t, psync_gids_cnt);
|
||||
if (unlikely_log(getgroups(psync_gids_cnt, psync_gids) != psync_gids_cnt))
|
||||
psync_gids_cnt = 0;
|
||||
pmemlock_set_pagesize(sysconf(_SC_PAGESIZE));
|
||||
debug(D_NOTICE, "detected page size %d", pmemlock_get_pagesize());
|
||||
debug(D_NOTICE, "detected page size %ld", sysconf(_SC_PAGESIZE));
|
||||
}
|
||||
|
||||
time_t psys_time_seconds() {
|
||||
|
|
|
|||
|
|
@ -254,7 +254,7 @@ static int download_send_error(stream_t *s, async_params_t *prms,
|
|||
ptree_del(&prms->streams, &s->tree);
|
||||
if (s->free)
|
||||
s->free(s, error);
|
||||
psync_free(s);
|
||||
free(s);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -599,7 +599,7 @@ static void proc_async_transfer(void *ptr) {
|
|||
pdeflate_destroy(prms->dec);
|
||||
ptree_for_each_element_call_safe(prms->streams, stream_t, tree,
|
||||
stream_destroy);
|
||||
psync_free(prms);
|
||||
free(prms);
|
||||
}
|
||||
|
||||
static int proc_start_async_transfer() {
|
||||
|
|
@ -636,11 +636,11 @@ static int proc_start_async_transfer() {
|
|||
(int)papi_find_result2(res, "result", PARAM_NUM)->num,
|
||||
papi_find_result2(res, "error", PARAM_STR)->str);
|
||||
psync_process_api_error(papi_find_result2(res, "result", PARAM_NUM)->num);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_apipool_release(api);
|
||||
goto err0;
|
||||
}
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (socketpair(AF_UNIX, SOCK_STREAM, 0, pair)) {
|
||||
debug(D_NOTICE, "socketpair() failed");
|
||||
goto err1;
|
||||
|
|
@ -723,7 +723,7 @@ static int sock_writeall(int sock, const void *buff, size_t len) {
|
|||
static stream_t *stream_create(async_params_t *prms, size_t addsize) {
|
||||
psync_tree *parent;
|
||||
stream_t *ret;
|
||||
ret = (stream_t *)psync_malloc(sizeof(stream_t) + addsize);
|
||||
ret = (stream_t *)malloc(sizeof(stream_t) + addsize);
|
||||
ret->streamid = ++prms->laststreamid;
|
||||
ret->flags = 0;
|
||||
ret->free = NULL;
|
||||
|
|
@ -747,7 +747,7 @@ static void stream_destroy(stream_t *s) {
|
|||
}
|
||||
if (s->free)
|
||||
s->free(s, PSYNC_ASYNC_ERROR_NET);
|
||||
psync_free(s);
|
||||
free(s);
|
||||
}
|
||||
|
||||
static int stream_process_data(async_params_t *prms) {
|
||||
|
|
@ -1065,8 +1065,8 @@ void ptask_cfldr_save_fldrkey(void *ptr) {
|
|||
psync_sql_bind_uint(res, 1, t->id);
|
||||
psync_sql_bind_blob(res, 2, (const char *)t->key->data, t->key->datalen);
|
||||
psync_sql_run_free(res);
|
||||
psync_free(t->key);
|
||||
psync_free(t);
|
||||
free(t->key);
|
||||
free(t);
|
||||
}
|
||||
|
||||
void ptask_cfldr_save_filekey(void *ptr) {
|
||||
|
|
@ -1079,6 +1079,6 @@ void ptask_cfldr_save_filekey(void *ptr) {
|
|||
psync_sql_bind_uint(res, 2, t->hash);
|
||||
psync_sql_bind_blob(res, 3, (const char *)t->key->data, t->key->datalen);
|
||||
psync_sql_run_free(res);
|
||||
psync_free(t->key);
|
||||
psync_free(t);
|
||||
free(t->key);
|
||||
free(t);
|
||||
}
|
||||
|
|
@ -15,7 +15,7 @@ static void proc_send_data_event(void *ptr) {
|
|||
data_event_fptr(data->eventid, (char *)data->str1, (char *)data->str2,
|
||||
data->uint1, data->uint2);
|
||||
|
||||
psync_free(ptr);
|
||||
free(ptr);
|
||||
}
|
||||
|
||||
void ptevent_init(void *ptr) {
|
||||
|
|
|
|||
|
|
@ -140,8 +140,7 @@ PSYNC_NOINLINE static void timer_process_timers(psync_list *timers) {
|
|||
}
|
||||
}
|
||||
pthread_mutex_unlock(&timer_mutex);
|
||||
psync_list_for_each_element_call(timers, psync_timer_structure_t, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(timers, psync_timer_structure_t, list, free);
|
||||
}
|
||||
|
||||
static void timer_thread() {
|
||||
|
|
@ -235,7 +234,7 @@ int ptimer_stop(psync_timer_t timer) {
|
|||
}
|
||||
pthread_mutex_unlock(&timer_mutex);
|
||||
if (needfree) {
|
||||
psync_free(timer);
|
||||
free(timer);
|
||||
return 0;
|
||||
} else
|
||||
return 1;
|
||||
|
|
|
|||
|
|
@ -411,7 +411,7 @@ void ptools_send_psyncs_event(const char *binapi, const char *auth) {
|
|||
int intRes;
|
||||
int syncCnt = 0;
|
||||
|
||||
errMsg = (char *)psync_malloc(1024 * sizeof(char));
|
||||
errMsg = (char *)malloc(1024 * sizeof(char));
|
||||
errMsg[0] = 0;
|
||||
|
||||
time(&rawtime);
|
||||
|
|
@ -425,7 +425,7 @@ void ptools_send_psyncs_event(const char *binapi, const char *auth) {
|
|||
|
||||
if (syncCnt < 1) {
|
||||
debug(D_NOTICE, "No syncs, skip the event.");
|
||||
psync_free(errMsg);
|
||||
free(errMsg);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -447,7 +447,7 @@ void ptools_send_psyncs_event(const char *binapi, const char *auth) {
|
|||
psync_sql_run_free(sql);
|
||||
}
|
||||
|
||||
psync_free(errMsg);
|
||||
free(errMsg);
|
||||
}
|
||||
|
||||
int ptools_set_backend_file_dates(uint64_t fileid, time_t ctime, time_t mtime) {
|
||||
|
|
|
|||
|
|
@ -103,14 +103,14 @@ static void modify_screenshot_public_link(void *par) {
|
|||
"account required.");
|
||||
}
|
||||
|
||||
psync_free(linkidp);
|
||||
psync_free(bres);
|
||||
free(linkidp);
|
||||
free(bres);
|
||||
}
|
||||
|
||||
int64_t do_psync_screenshot_public_link(const char *path, int hasdelay,
|
||||
uint64_t delay, char **link /*OUT*/,
|
||||
char **err /*OUT*/) {
|
||||
scr_params *params = psync_malloc(sizeof(scr_params));
|
||||
scr_params *params = malloc(sizeof(scr_params));
|
||||
int64_t ret =
|
||||
do_psync_file_public_link(path, ¶ms->linkid, link, err, 0, 0, 0);
|
||||
if (hasdelay) {
|
||||
|
|
@ -118,7 +118,7 @@ int64_t do_psync_screenshot_public_link(const char *path, int hasdelay,
|
|||
prun_thread1("Modify link expiration.", modify_screenshot_public_link,
|
||||
params);
|
||||
} else
|
||||
psync_free(params);
|
||||
free(params);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -150,7 +150,7 @@ int64_t do_psync_file_public_link(const char *path, int64_t *plinkid,
|
|||
int numparam = 2 + !!expire + !!maxdownloads + !!maxtraffic;
|
||||
int pind = 1;
|
||||
|
||||
t = (binparam *)psync_malloc(numparam * sizeof(binparam));
|
||||
t = (binparam *)malloc(numparam * sizeof(binparam));
|
||||
init_param_str(t, "auth", psync_my_auth);
|
||||
init_param_str(t + pind++, "path", path);
|
||||
if (expire)
|
||||
|
|
@ -163,12 +163,12 @@ int64_t do_psync_file_public_link(const char *path, int64_t *plinkid,
|
|||
if (unlikely(!api)) {
|
||||
debug(D_WARNING, "Can't gat api from the pool. No pool ?\n");
|
||||
*err = psync_strndup("Connection error.", 17);
|
||||
psync_free(t);
|
||||
free(t);
|
||||
return 1;
|
||||
}
|
||||
bres = papi_send(api, "getfilepublink", sizeof("getfilepublink") - 1,
|
||||
t, pind, -1, 1);
|
||||
psync_free(t);
|
||||
free(t);
|
||||
}
|
||||
|
||||
if (likely(bres))
|
||||
|
|
@ -197,7 +197,7 @@ int64_t do_psync_file_public_link(const char *path, int64_t *plinkid,
|
|||
*plinkid = linkid;
|
||||
|
||||
free_ret:
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return (int64_t)result;
|
||||
}
|
||||
|
||||
|
|
@ -227,7 +227,7 @@ int64_t do_psync_folder_public_link(const char *path, char **link /*OUT*/,
|
|||
int numparam = 2 + !!expire + !!maxdownloads + !!maxtraffic;
|
||||
int pind = 1;
|
||||
|
||||
t = (binparam *)psync_malloc(numparam * sizeof(binparam));
|
||||
t = (binparam *)malloc(numparam * sizeof(binparam));
|
||||
init_param_str(t, "auth", psync_my_auth);
|
||||
init_param_str(t + pind++, "path", path);
|
||||
if (expire)
|
||||
|
|
@ -244,7 +244,7 @@ int64_t do_psync_folder_public_link(const char *path, char **link /*OUT*/,
|
|||
}
|
||||
bres = papi_send(api, "getfolderpublink",
|
||||
sizeof("getfolderpublink") - 1, t, pind, -1, 1);
|
||||
psync_free(t);
|
||||
free(t);
|
||||
}
|
||||
if (likely(bres))
|
||||
psync_apipool_release(api);
|
||||
|
|
@ -271,7 +271,7 @@ int64_t do_psync_folder_public_link(const char *path, char **link /*OUT*/,
|
|||
*link = psync_strndup(rescode, strlen(rescode));
|
||||
result = papi_find_result2(bres, "linkid", PARAM_NUM)->num;
|
||||
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -301,7 +301,7 @@ int64_t do_psync_folder_public_link_full(const char *path, char **link /*OUT*/,
|
|||
int numparam = 2 + !!expire + !!maxdownloads + !!maxtraffic + !!password;
|
||||
int pind = 1;
|
||||
|
||||
t = (binparam *)psync_malloc(numparam * sizeof(binparam));
|
||||
t = (binparam *)malloc(numparam * sizeof(binparam));
|
||||
init_param_str(t, "auth", psync_my_auth);
|
||||
init_param_str(t + pind++, "path", path);
|
||||
if (password)
|
||||
|
|
@ -320,7 +320,7 @@ int64_t do_psync_folder_public_link_full(const char *path, char **link /*OUT*/,
|
|||
}
|
||||
bres = papi_send(api, "getfolderpublink",
|
||||
sizeof("getfolderpublink") - 1, t, pind, -1, 1);
|
||||
psync_free(t);
|
||||
free(t);
|
||||
}
|
||||
|
||||
if (likely(bres))
|
||||
|
|
@ -349,7 +349,7 @@ int64_t do_psync_folder_public_link_full(const char *path, char **link /*OUT*/,
|
|||
*link = psync_strndup(rescode, strlen(rescode));
|
||||
result = papi_find_result2(bres, "linkid", PARAM_NUM)->num;
|
||||
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -397,7 +397,7 @@ int64_t do_psync_folder_updownlink_link(int canupload,
|
|||
}
|
||||
|
||||
result = 0;
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -428,21 +428,21 @@ int64_t do_ptree_public_link(const char *linkname, const char *root,
|
|||
if (unlikely(!(!!root + !!numfolders + !!numfiles)))
|
||||
return -3;
|
||||
|
||||
t = (binparam *)psync_malloc(numparam * sizeof(binparam));
|
||||
t = (binparam *)malloc(numparam * sizeof(binparam));
|
||||
|
||||
init_param_str(t, "auth", psync_my_auth);
|
||||
|
||||
init_param_str(t + pind++, "name", linkname);
|
||||
|
||||
if (root) {
|
||||
ids = (char *)psync_malloc(FOLDERID_ENTRY_SIZE);
|
||||
ids = (char *)malloc(FOLDERID_ENTRY_SIZE);
|
||||
id = psync_fsfolderid_by_path(root, 0);
|
||||
k = sprintf(ids, "%lld", (long long)id);
|
||||
init_param_str(t + pind++, "folderid", ids);
|
||||
}
|
||||
|
||||
if (numfolders) {
|
||||
ids1 = (char *)psync_malloc(numfolders * FOLDERID_ENTRY_SIZE);
|
||||
ids1 = (char *)malloc(numfolders * FOLDERID_ENTRY_SIZE);
|
||||
idsp = ids1;
|
||||
for (i = 0; i < numfolders; ++i) {
|
||||
id = psync_fsfolderid_by_path(folders[i], 0);
|
||||
|
|
@ -462,7 +462,7 @@ int64_t do_ptree_public_link(const char *linkname, const char *root,
|
|||
psync_uint_row row;
|
||||
psync_fspath_t *filep;
|
||||
|
||||
ids2 = (char *)psync_malloc(numfiles * FOLDERID_ENTRY_SIZE);
|
||||
ids2 = (char *)malloc(numfiles * FOLDERID_ENTRY_SIZE);
|
||||
idsp = ids2;
|
||||
for (i = 0; i < numfiles; ++i) {
|
||||
psync_sql_rdlock();
|
||||
|
|
@ -540,14 +540,14 @@ int64_t do_ptree_public_link(const char *linkname, const char *root,
|
|||
result = papi_find_result2(bres, "linkid", PARAM_NUM)->num;
|
||||
|
||||
if (ids)
|
||||
psync_free(ids);
|
||||
free(ids);
|
||||
if (ids1)
|
||||
psync_free(ids1);
|
||||
free(ids1);
|
||||
if (ids2)
|
||||
psync_free(ids2);
|
||||
free(ids2);
|
||||
|
||||
psync_free(bres);
|
||||
psync_free(t);
|
||||
free(bres);
|
||||
free(t);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -601,7 +601,7 @@ int cache_links(char *err, size_t err_size /*OUT*/) {
|
|||
debug(D_WARNING, "Send command returned in valid result.\n");
|
||||
//*err = psync_strndup("Connection error.", 17);
|
||||
snprintf(err, err_size, "Connection error.");
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return 0;
|
||||
}
|
||||
result = papi_find_result2(bres, "result", PARAM_NUM)->num;
|
||||
|
|
@ -612,7 +612,7 @@ int cache_links(char *err, size_t err_size /*OUT*/) {
|
|||
debug(D_WARNING, "command listpublinks returned error code %u",
|
||||
(unsigned)result);
|
||||
psync_process_api_error(result);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
if (psync_handle_api_result(result) == PSYNC_NET_TEMPFAIL)
|
||||
return -result;
|
||||
else {
|
||||
|
|
@ -624,7 +624,7 @@ int cache_links(char *err, size_t err_size /*OUT*/) {
|
|||
publinks = papi_find_result2(bres, "publinks", PARAM_ARRAY);
|
||||
linkscnt = publinks->length;
|
||||
if (!linkscnt) {
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return 0;
|
||||
}
|
||||
for (i = 0; i < linkscnt; ++i) {
|
||||
|
|
@ -708,7 +708,7 @@ int cache_links(char *err, size_t err_size /*OUT*/) {
|
|||
psync_sql_run_free(q);
|
||||
}
|
||||
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return linkscnt;
|
||||
}
|
||||
|
||||
|
|
@ -749,7 +749,7 @@ int do_psync_delete_link(int64_t linkid, char **err /*OUT*/) {
|
|||
return -1;
|
||||
}
|
||||
}
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -798,7 +798,7 @@ int do_psync_change_link(unsigned long long linkid, unsigned long long expire,
|
|||
int numparam = 5; // +!!expire + !!maxdownloads + !!maxtraffic + !!password;
|
||||
int pind = 1;
|
||||
|
||||
t = (binparam *)psync_malloc(numparam * sizeof(binparam));
|
||||
t = (binparam *)malloc(numparam * sizeof(binparam));
|
||||
init_param_str(t, "auth", psync_my_auth);
|
||||
init_param_num(t + pind++, "linkid", linkid);
|
||||
if (linkpassword)
|
||||
|
|
@ -829,7 +829,7 @@ int do_psync_change_link(unsigned long long linkid, unsigned long long expire,
|
|||
}
|
||||
bres = papi_send(api, "changepublink", sizeof("changepublink") - 1, t,
|
||||
pind, -1, 1);
|
||||
psync_free(t);
|
||||
free(t);
|
||||
result = process_bres("deletepublink", bres, api, err);
|
||||
return result;
|
||||
}
|
||||
|
|
@ -859,7 +859,7 @@ int do_change_link_expire(unsigned long long linkid, unsigned long long expire,
|
|||
}
|
||||
|
||||
result = process_bres("changepublink", bres, api, err);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -888,7 +888,7 @@ int do_change_link_password(unsigned long long linkid, const char *password,
|
|||
bres = papi_send2(api, "changepublink", paramsd);
|
||||
}
|
||||
result = process_bres("changepublink", bres, api, err);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -919,7 +919,7 @@ int do_change_link_enable_upload(unsigned long long linkid,
|
|||
}
|
||||
|
||||
result = process_bres("changepublink", bres, api, err);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -953,7 +953,7 @@ int64_t do_psync_upload_link(const char *path, const char *comment,
|
|||
int numparam = 3 + !!expire + !!maxspace + !!maxfiles;
|
||||
int pind = 1;
|
||||
|
||||
t = (binparam *)psync_malloc(numparam * sizeof(binparam));
|
||||
t = (binparam *)malloc(numparam * sizeof(binparam));
|
||||
init_param_str(t, "auth", psync_my_auth);
|
||||
init_param_str(t + pind++, "path", path);
|
||||
init_param_str(t + pind++, "comment", comment);
|
||||
|
|
@ -971,7 +971,7 @@ int64_t do_psync_upload_link(const char *path, const char *comment,
|
|||
}
|
||||
bres = papi_send(api, "createuploadlink",
|
||||
sizeof("createuploadlink") - 1, t, pind, -1, 1);
|
||||
psync_free(t);
|
||||
free(t);
|
||||
}
|
||||
|
||||
if (likely(bres))
|
||||
|
|
@ -1002,7 +1002,7 @@ int64_t do_psync_upload_link(const char *path, const char *comment,
|
|||
|
||||
result = papi_find_result2(bres, "uploadlinkid", PARAM_NUM)->num;
|
||||
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -1025,7 +1025,7 @@ int do_psync_delete_upload_link(int64_t uploadlinkid, char **err /*OUT*/) {
|
|||
|
||||
bres = papi_send2(api, "deleteuploadlink", params);
|
||||
result = process_bres("deletepublink", bres, api, err);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -1142,12 +1142,12 @@ plink_contents_t *do_show_link(const char *code, char **err /*OUT*/) {
|
|||
if (meta) {
|
||||
contents = papi_check_result2(meta, "contents", PARAM_ARRAY);
|
||||
if (!contents) {
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return 0;
|
||||
}
|
||||
concnt = contents->length;
|
||||
if (!concnt) {
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return 0;
|
||||
}
|
||||
builder = psync_list_builder_create(sizeof(link_cont_t),
|
||||
|
|
@ -1171,10 +1171,10 @@ plink_contents_t *do_show_link(const char *code, char **err /*OUT*/) {
|
|||
pcont->icon = papi_find_result2(link, "icon", PARAM_NUM)->num;
|
||||
}
|
||||
ret = (plink_contents_t *)psync_list_builder_finalize(builder);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return ret;
|
||||
}
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1296,7 +1296,7 @@ int cache_upload_links(char **err /*OUT*/) {
|
|||
psync_sql_run_free(q);
|
||||
}
|
||||
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return linkscnt;
|
||||
}
|
||||
|
|
@ -1313,11 +1313,11 @@ void cache_links_all() {
|
|||
if (err) {
|
||||
debug(D_WARNING, "Problem cacheing links errcode %d errmsg[%s]\n", ret,
|
||||
err);
|
||||
psync_free(err);
|
||||
free(err);
|
||||
}
|
||||
}
|
||||
if (err)
|
||||
psync_free(err);
|
||||
free(err);
|
||||
}
|
||||
|
||||
int do_delete_all_links(int64_t folderid, int64_t fileid, char **err) {
|
||||
|
|
@ -1446,7 +1446,7 @@ preciever_list_t *do_list_email_with_access(unsigned long long linkid,
|
|||
|
||||
if (!lcnt) {
|
||||
ret = (preciever_list_t *)psync_list_builder_finalize(builder);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return ret;
|
||||
}
|
||||
for (i = 0; i < lcnt; ++i) {
|
||||
|
|
@ -1463,7 +1463,7 @@ preciever_list_t *do_list_email_with_access(unsigned long long linkid,
|
|||
}
|
||||
ret = (preciever_list_t *)psync_list_builder_finalize(builder);
|
||||
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -1487,7 +1487,7 @@ int do_link_add_access(unsigned long long linkid, const char *mail,
|
|||
|
||||
bres = papi_send2(api, "publink/addaccess", params);
|
||||
result = process_bres("publink/addaccess", bres, api, err);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -1510,7 +1510,7 @@ int do_link_remove_access(unsigned long long linkid,
|
|||
|
||||
bres = papi_send2(api, "publink/removeaccess", params);
|
||||
result = process_bres("publink/removeaccess", bres, api, err);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -1566,7 +1566,7 @@ bookmarks_list_t *do_cache_bookmarks(char **err) {
|
|||
offsetof(bookmarks_list_t, entries));
|
||||
if (!lcnt) {
|
||||
ret = (bookmarks_list_t *)psync_list_builder_finalize(builder);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1599,7 +1599,7 @@ bookmarks_list_t *do_cache_bookmarks(char **err) {
|
|||
}
|
||||
ret = (bookmarks_list_t *)psync_list_builder_finalize(builder);
|
||||
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -1621,7 +1621,7 @@ int do_remove_bookmark(const char *code, int locationid, char **err) {
|
|||
|
||||
bres = papi_send2(api, "publink/unpin", params);
|
||||
result = process_bres("publink/unpin", bres, api, err);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -1646,7 +1646,7 @@ int do_change_bookmark(const char *code, int locationid, const char *name,
|
|||
|
||||
bres = papi_send2(api, "publink/changepin", params);
|
||||
result = process_bres("publink/changepin", bres, api, err);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ static int64_t do_run_command_res(const char *cmd, size_t cmdlen,
|
|||
if (unlikely(!res))
|
||||
return -1;
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
if (unlikely(result)) {
|
||||
psync_process_api_error(result);
|
||||
debug(D_WARNING, "command %s returned code %u", cmd, (unsigned)result);
|
||||
|
|
@ -240,7 +240,7 @@ static int task_createfolder(psync_syncid_t syncid,
|
|||
(unsigned)result, papi_find_result2(bres, "error", PARAM_STR)->str,
|
||||
(unsigned long)parentfolderid, name);
|
||||
psync_process_api_error(result);
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
if (psync_handle_api_result(result) == PSYNC_NET_TEMPFAIL)
|
||||
return -1;
|
||||
else
|
||||
|
|
@ -268,7 +268,7 @@ static int task_createfolder(psync_syncid_t syncid,
|
|||
pdiff_unlock();
|
||||
if (papi_find_result2(bres, "created", PARAM_BOOL)->num)
|
||||
pdiff_wake();
|
||||
psync_free(bres);
|
||||
free(bres);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
|
@ -375,7 +375,7 @@ int handle_api_errors(sync_err_struct *err_struct) {
|
|||
|
||||
ptevent_process(event_data);
|
||||
|
||||
psync_free(event_data);
|
||||
free(event_data);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
@ -432,7 +432,7 @@ static int task_renameremotefolder(psync_folderid_t folderid,
|
|||
ret = handle_api_errors(&err_struct);
|
||||
}
|
||||
|
||||
psync_free(res);
|
||||
free(res);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -505,7 +505,7 @@ static void set_local_file_conflicted(psync_fileid_t localfileid,
|
|||
psync_sql_rollback_transaction();
|
||||
else
|
||||
psync_sql_commit_transaction();
|
||||
psync_free(newpath);
|
||||
free(newpath);
|
||||
}
|
||||
|
||||
static int copy_file(psync_fileid_t fileid, uint64_t hash,
|
||||
|
|
@ -535,7 +535,7 @@ static int copy_file(psync_fileid_t fileid, uint64_t hash,
|
|||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (unlikely(result)) {
|
||||
pdiff_unlock();
|
||||
psync_free(res);
|
||||
free(res);
|
||||
debug(D_WARNING, "command copyfile returned code %u", (unsigned)result);
|
||||
psync_process_api_error(result);
|
||||
return 0;
|
||||
|
|
@ -545,7 +545,7 @@ static int copy_file(psync_fileid_t fileid, uint64_t hash,
|
|||
papi_find_result2(meta, "fileid", PARAM_NUM)->num,
|
||||
papi_find_result2(meta, "hash", PARAM_NUM)->num);
|
||||
pdiff_unlock();
|
||||
psync_free(res);
|
||||
free(res);
|
||||
pdiff_wake();
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -607,7 +607,7 @@ static int copy_file_if_exists(const unsigned char *hashhex, uint64_t fsize,
|
|||
return -1;
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (unlikely(result)) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
debug(D_WARNING, "command getfilesbychecksum returned code %u",
|
||||
(unsigned)result);
|
||||
psync_process_api_error(result);
|
||||
|
|
@ -615,7 +615,7 @@ static int copy_file_if_exists(const unsigned char *hashhex, uint64_t fsize,
|
|||
}
|
||||
metas = papi_find_result2(res, "metadata", PARAM_ARRAY);
|
||||
if (!metas->length) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return 0;
|
||||
}
|
||||
meta = metas->array[0];
|
||||
|
|
@ -633,7 +633,7 @@ static int copy_file_if_exists(const unsigned char *hashhex, uint64_t fsize,
|
|||
(long unsigned)folderid, name);
|
||||
}
|
||||
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -695,7 +695,7 @@ static int upload_file(const char *localpath, const unsigned char *hashhex,
|
|||
params, ARRAY_SIZE(params), fsize, 0)))
|
||||
goto err1;
|
||||
bw = 0;
|
||||
buff = psync_malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
buff = malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
while (bw < fsize) {
|
||||
if (unlikely(upload->stop)) {
|
||||
debug(D_NOTICE, "upload of %s stopped", localpath);
|
||||
|
|
@ -720,7 +720,7 @@ static int upload_file(const char *localpath, const unsigned char *hashhex,
|
|||
upload->uploaded += rrd;
|
||||
add_bytes_uploaded(rrd);
|
||||
}
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
pfile_close(fd);
|
||||
psync_set_default_sendbuf(api);
|
||||
pdiff_lock();
|
||||
|
|
@ -733,7 +733,7 @@ static int upload_file(const char *localpath, const unsigned char *hashhex,
|
|||
}
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (unlikely(result)) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
debug(D_WARNING, "command uploadfile returned code %u", (unsigned)result);
|
||||
psync_process_api_error(result);
|
||||
if (psync_handle_api_result(result) == PSYNC_NET_TEMPFAIL)
|
||||
|
|
@ -773,16 +773,16 @@ static int upload_file(const char *localpath, const unsigned char *hashhex,
|
|||
"uploaded file differs localsize=%lu, remotesize=%lu, localhash=%s, "
|
||||
"remotehash=%s",
|
||||
(unsigned long)fsize, (unsigned long)rsize, hashhex, hashhexsrv);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
return -1;
|
||||
}
|
||||
psync_free(res);
|
||||
free(res);
|
||||
pdiff_wake();
|
||||
debug(D_NOTICE, "file %s uploaded to %lu/%s", localpath,
|
||||
(long unsigned)folderid, name);
|
||||
return 0;
|
||||
err2:
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
err1:
|
||||
psync_apipool_release_bad(api);
|
||||
err0:
|
||||
|
|
@ -809,7 +809,7 @@ static int upload_range(psock_t *api, psync_upload_range_list_t *r,
|
|||
return PSYNC_NET_TEMPFAIL;
|
||||
bw = 0;
|
||||
|
||||
buff = psync_malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
buff = malloc(PSYNC_COPY_BUFFER_SIZE);
|
||||
while (bw < r->len) {
|
||||
if (unlikely(upload->stop)) {
|
||||
debug(D_NOTICE, "upload stopped");
|
||||
|
|
@ -829,10 +829,10 @@ static int upload_range(psock_t *api, psync_upload_range_list_t *r,
|
|||
upload->uploaded += rrd;
|
||||
add_bytes_uploaded(rrd);
|
||||
}
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
return PSYNC_NET_OK;
|
||||
err0:
|
||||
psync_free(buff);
|
||||
free(buff);
|
||||
return PSYNC_NET_TEMPFAIL;
|
||||
}
|
||||
|
||||
|
|
@ -943,7 +943,7 @@ static int upload_save(psock_t *api, psync_fileid_t localfileid,
|
|||
ret = PSYNC_NET_OK;
|
||||
pdiff_wake();
|
||||
}
|
||||
psync_free(res);
|
||||
free(res);
|
||||
} else
|
||||
ret = PSYNC_NET_TEMPFAIL;
|
||||
pdiff_unlock();
|
||||
|
|
@ -986,7 +986,7 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex,
|
|||
goto err0;
|
||||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (unlikely(result)) {
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_apipool_release(api);
|
||||
psync_process_api_error(result);
|
||||
debug(D_WARNING, "upload_create returned %lu", (unsigned long)result);
|
||||
|
|
@ -996,7 +996,7 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex,
|
|||
return 0;
|
||||
}
|
||||
uploadid = papi_find_result2(res, "uploadid", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_sql_start_transaction();
|
||||
sql = psync_sql_query_nolock("SELECT id FROM localfile WHERE id=?");
|
||||
psync_sql_bind_uint(sql, 1, localfileid);
|
||||
|
|
@ -1030,8 +1030,7 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex,
|
|||
if (unlikely(fd == INVALID_HANDLE_VALUE)) {
|
||||
debug(D_WARNING, "could not open local file %s", localpath);
|
||||
psync_apipool_release(api);
|
||||
psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list, free);
|
||||
return -1;
|
||||
}
|
||||
if (likely(uploadoffset < fsize)) {
|
||||
|
|
@ -1089,12 +1088,12 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex,
|
|||
if (fileid &&
|
||||
psync_net_scan_file_for_blocks(api, &rlist, fileid, hash, fd) ==
|
||||
PSYNC_NET_TEMPFAIL) {
|
||||
psync_free(nname);
|
||||
free(nname);
|
||||
goto err1;
|
||||
}
|
||||
} else
|
||||
psync_sql_free_result(sql);
|
||||
psync_free(nname);
|
||||
free(nname);
|
||||
} else
|
||||
psync_sql_free_result(sql);
|
||||
}
|
||||
|
|
@ -1108,10 +1107,10 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex,
|
|||
psync_net_scan_upload_for_blocks(api, &rlist,
|
||||
psync_get_result_cell(fr, id, 0),
|
||||
fd) == PSYNC_NET_TEMPFAIL) {
|
||||
psync_free(fr);
|
||||
free(fr);
|
||||
goto err1;
|
||||
}
|
||||
psync_free(fr);
|
||||
free(fr);
|
||||
}
|
||||
rid = 0;
|
||||
respwait = 0;
|
||||
|
|
@ -1154,7 +1153,7 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex,
|
|||
result = papi_find_result2(res, "result", PARAM_NUM)->num;
|
||||
if (unlikely(result)) {
|
||||
id = papi_find_result2(res, "id", PARAM_NUM)->num;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
psync_process_api_error(result);
|
||||
if (unlikely_log(!id))
|
||||
goto err1;
|
||||
|
|
@ -1163,7 +1162,7 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex,
|
|||
if (unlikely_log(!res))
|
||||
goto err1;
|
||||
respwait--;
|
||||
psync_free(res);
|
||||
free(res);
|
||||
}
|
||||
psync_list_for_each_element(le2, &rlist, psync_upload_range_list_t,
|
||||
list) if (le2->id == id) {
|
||||
|
|
@ -1193,7 +1192,7 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex,
|
|||
"file size mismatch after upload, expected: %lu, got: %lu",
|
||||
(unsigned long)fsize,
|
||||
(unsigned long)papi_find_result2(res, "size", PARAM_NUM)->num);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
goto err1;
|
||||
} else if (unlikely(memcmp(
|
||||
papi_find_result2(res, PSYNC_CHECKSUM, PARAM_STR)->str,
|
||||
|
|
@ -1203,12 +1202,12 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex,
|
|||
"hash mismatch after upload, expected: %." NTO_STR(
|
||||
PSYNC_HASH_DIGEST_HEXLEN) "s, got: %." NTO_STR(PSYNC_HASH_DIGEST_HEXLEN) "s",
|
||||
hashhex, papi_find_result2(res, PSYNC_CHECKSUM, PARAM_STR)->str);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
goto err1;
|
||||
} else
|
||||
assert(respwait == 0);
|
||||
}
|
||||
psync_free(res);
|
||||
free(res);
|
||||
}
|
||||
restart:
|
||||
if (le->type == PSYNC_URANGE_UPLOAD) {
|
||||
|
|
@ -1244,8 +1243,7 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex,
|
|||
respwait++;
|
||||
uploadoffset += le->len;
|
||||
}
|
||||
psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list, free);
|
||||
if (pfile_size(fd) != fsize) {
|
||||
debug(D_NOTICE, "file %s changed filesize while uploading, restarting task",
|
||||
localpath);
|
||||
|
|
@ -1265,15 +1263,13 @@ static int upload_big_file(const char *localpath, const unsigned char *hashhex,
|
|||
}
|
||||
err1:
|
||||
pfile_close(fd);
|
||||
psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list, free);
|
||||
err0:
|
||||
psync_apipool_release_bad(api);
|
||||
return -1;
|
||||
errp:
|
||||
pfile_close(fd);
|
||||
psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list,
|
||||
psync_free);
|
||||
psync_list_for_each_element_call(&rlist, psync_upload_range_list_t, list, free);
|
||||
psync_apipool_release_bad(api);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1283,7 +1279,7 @@ static void delete_uploadid(psync_uploadid_t uploadid) {
|
|||
PAPI_NUM("uploadid", uploadid)};
|
||||
binresult *res;
|
||||
res = psync_api_run_command("upload_delete", params);
|
||||
psync_free(res);
|
||||
free(res);
|
||||
}
|
||||
|
||||
static void delete_uploadids(psync_fileid_t localfileid) {
|
||||
|
|
@ -1302,7 +1298,7 @@ static void delete_uploadids(psync_fileid_t localfileid) {
|
|||
psync_sql_bind_uint(res, 1, localfileid);
|
||||
psync_sql_run_free(res);
|
||||
}
|
||||
psync_free(rows);
|
||||
free(rows);
|
||||
}
|
||||
|
||||
static void delete_from_localfile(psync_fileid_t localfileid) {
|
||||
|
|
@ -1373,7 +1369,7 @@ static int task_uploadfile(psync_syncid_t syncid, psync_folderid_t localfileid,
|
|||
if (stat(localpath, &st)) {
|
||||
debug(D_NOTICE, "can not stat %s anymore, failing for now",
|
||||
localpath);
|
||||
psync_free(localpath);
|
||||
free(localpath);
|
||||
return -1;
|
||||
}
|
||||
ctime = ptimer_time();
|
||||
|
|
@ -1382,7 +1378,7 @@ static int task_uploadfile(psync_syncid_t syncid, psync_folderid_t localfileid,
|
|||
if (ret == 10) {
|
||||
debug(D_NOTICE, "file %s kept changing %d times, skipping for now",
|
||||
localpath, ret);
|
||||
psync_free(localpath);
|
||||
free(localpath);
|
||||
return -1;
|
||||
}
|
||||
debug(D_NOTICE, "file %s got old enough", localpath);
|
||||
|
|
@ -1391,7 +1387,7 @@ static int task_uploadfile(psync_syncid_t syncid, psync_folderid_t localfileid,
|
|||
lock = psync_lock_file(localpath);
|
||||
if (!lock) {
|
||||
debug(D_NOTICE, "file %s is currently locked, skipping for now", localpath);
|
||||
psync_free(localpath);
|
||||
free(localpath);
|
||||
psys_sleep_milliseconds(PSYNC_SLEEP_ON_LOCKED_FILE);
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -1408,7 +1404,7 @@ static int task_uploadfile(psync_syncid_t syncid, psync_folderid_t localfileid,
|
|||
ret = psync_get_upload_checksum(uploadid, uhashhex, &ufsize);
|
||||
if (ret == PSYNC_NET_TEMPFAIL) {
|
||||
psync_unlock_file(lock);
|
||||
psync_free(localpath);
|
||||
free(localpath);
|
||||
return -1;
|
||||
} else if (ret == PSYNC_NET_PERMFAIL)
|
||||
uploadid = 0;
|
||||
|
|
@ -1422,7 +1418,7 @@ static int task_uploadfile(psync_syncid_t syncid, psync_folderid_t localfileid,
|
|||
debug(D_WARNING, "could not open local file %s, deleting it from localfile",
|
||||
localpath);
|
||||
psync_unlock_file(lock);
|
||||
psync_free(localpath);
|
||||
free(localpath);
|
||||
delete_from_localfile(localfileid);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1451,7 +1447,7 @@ static int task_uploadfile(psync_syncid_t syncid, psync_folderid_t localfileid,
|
|||
(unsigned long)localfileid);
|
||||
psync_sql_free_result(res);
|
||||
psync_unlock_file(lock);
|
||||
psync_free(localpath);
|
||||
free(localpath);
|
||||
return 0;
|
||||
}
|
||||
psync_sql_free_result(res);
|
||||
|
|
@ -1487,8 +1483,8 @@ static int task_uploadfile(psync_syncid_t syncid, psync_folderid_t localfileid,
|
|||
|
||||
if (ret == 1 || ret == -1) {
|
||||
psync_unlock_file(lock);
|
||||
psync_free(nname);
|
||||
psync_free(localpath);
|
||||
free(nname);
|
||||
free(localpath);
|
||||
return ret == 1 ? 0 : -1;
|
||||
}
|
||||
memcpy(upload->hash, hashhex, PSYNC_HASH_DIGEST_HEXLEN);
|
||||
|
|
@ -1530,8 +1526,8 @@ static int task_uploadfile(psync_syncid_t syncid, psync_folderid_t localfileid,
|
|||
}
|
||||
}
|
||||
psync_unlock_file(lock);
|
||||
psync_free(nname);
|
||||
psync_free(localpath);
|
||||
free(nname);
|
||||
free(localpath);
|
||||
if (!ret)
|
||||
delete_uploadids(localfileid);
|
||||
return ret;
|
||||
|
|
@ -1578,7 +1574,7 @@ static void task_run_upload_file_thread(void *ptr) {
|
|||
wake_upload_when_ready();
|
||||
pthread_mutex_unlock(¤t_uploads_mutex);
|
||||
pstatus_upload_recalc_async();
|
||||
psync_free(ut);
|
||||
free(ut);
|
||||
}
|
||||
|
||||
static int task_run_uploadfile(uint64_t taskid, psync_syncid_t syncid,
|
||||
|
|
@ -1606,7 +1602,7 @@ static int task_run_uploadfile(uint64_t taskid, psync_syncid_t syncid,
|
|||
psync_sql_bind_uint(res, 1, taskid);
|
||||
psync_sql_run_free(res);
|
||||
len = strlen(filename);
|
||||
ut = (upload_task_t *)psync_malloc(offsetof(upload_task_t, filename) + len +
|
||||
ut = (upload_task_t *)malloc(offsetof(upload_task_t, filename) + len +
|
||||
1);
|
||||
ut->upllist.taskid = taskid;
|
||||
ut->upllist.localfileid = localfileid;
|
||||
|
|
@ -1636,7 +1632,7 @@ static int task_run_uploadfile(uint64_t taskid, psync_syncid_t syncid,
|
|||
}
|
||||
pthread_mutex_unlock(¤t_uploads_mutex);
|
||||
if (stop) {
|
||||
psync_free(ut);
|
||||
free(ut);
|
||||
res = psync_sql_prep_statement("UPDATE task SET inprogress=0 WHERE id=?");
|
||||
psync_sql_bind_uint(res, 1, taskid);
|
||||
psync_sql_run_free(res);
|
||||
|
|
@ -1741,7 +1737,7 @@ static void upload_thread() {
|
|||
}
|
||||
} else if (type != PSYNC_UPLOAD_FILE)
|
||||
psys_sleep_milliseconds(PSYNC_SLEEP_ON_FAILED_UPLOAD);
|
||||
psync_free(row);
|
||||
free(row);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -289,7 +289,7 @@ static void status_change(pstatus_t *status) {
|
|||
static int cryptocheck = 0;
|
||||
|
||||
char *err;
|
||||
err = (char *)psync_malloc(1024);
|
||||
err = (char *)malloc(1024);
|
||||
|
||||
std::cout << "Down: " << status->downloadstr << "| Up: " << status->uploadstr
|
||||
<< ", status is " << status2string(status->status) << std::endl;
|
||||
|
|
@ -348,8 +348,9 @@ static void status_change(pstatus_t *status) {
|
|||
(int)status->status, status2string(status->status));
|
||||
}
|
||||
|
||||
if (err)
|
||||
psync_free(err);
|
||||
if (err) {
|
||||
free(err);
|
||||
}
|
||||
}
|
||||
|
||||
int clib::pclsync_lib::start_crypto(const char *pwd) {
|
||||
|
|
@ -429,7 +430,7 @@ int clib::pclsync_lib::list_sync_folders(const char *unused) {
|
|||
pshm_write(folders, folderssz);
|
||||
pthread_mutex_unlock(&mtx);
|
||||
|
||||
psync_free(folders);
|
||||
free(folders);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -463,10 +464,10 @@ int clib::pclsync_lib::init() {
|
|||
std::cout << "logged in with user " << username_old << ", not "
|
||||
<< username_ << ", unlinking" << std::endl;
|
||||
psync_unlink();
|
||||
psync_free(username_old);
|
||||
free(username_old);
|
||||
return 2;
|
||||
}
|
||||
psync_free(username_old);
|
||||
free(username_old);
|
||||
}
|
||||
|
||||
prpc_register(STARTCRYPTO, &start_crypto);
|
||||
|
|
|
|||
Loading…
Reference in New Issue