mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-25 13:55:47 +03:00
Check for valid result count after query.
This commit is contained in:
parent
78c43e542c
commit
c491e8bb68
1 changed files with 22 additions and 17 deletions
|
@ -399,15 +399,16 @@ csync_file_stat_t *csync_statedb_get_stat_by_hash(CSYNC *ctx, uint64_t phash) {
|
||||||
if (result->count < 10) {
|
if (result->count < 10) {
|
||||||
CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "WRN: Amount of result columns wrong, db version mismatch!");
|
CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "WRN: Amount of result columns wrong, db version mismatch!");
|
||||||
}
|
}
|
||||||
/* phash, pathlen, path, inode, uid, gid, mode, modtime */
|
if(result->count > 7) {
|
||||||
len = strlen(result->vector[2]);
|
/* phash, pathlen, path, inode, uid, gid, mode, modtime */
|
||||||
st = c_malloc(sizeof(csync_file_stat_t) + len + 1);
|
len = strlen(result->vector[2]);
|
||||||
if (st == NULL) {
|
st = c_malloc(sizeof(csync_file_stat_t) + len + 1);
|
||||||
c_strlist_destroy(result);
|
if (st == NULL) {
|
||||||
return NULL;
|
c_strlist_destroy(result);
|
||||||
}
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FIXME:
|
* FIXME:
|
||||||
* We use an INTEGER(8) which is signed to the phash in the sqlite3 db,
|
* We use an INTEGER(8) which is signed to the phash in the sqlite3 db,
|
||||||
* but the phash is an uint64_t. So for some values we get a string like
|
* but the phash is an uint64_t. So for some values we get a string like
|
||||||
|
@ -417,16 +418,20 @@ csync_file_stat_t *csync_statedb_get_stat_by_hash(CSYNC *ctx, uint64_t phash) {
|
||||||
* st->phash = strtoull(result->vector[0], NULL, 10);
|
* st->phash = strtoull(result->vector[0], NULL, 10);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* The query suceeded so use the phash we pass to the function. */
|
/* The query suceeded so use the phash we pass to the function. */
|
||||||
st->phash = phash;
|
st->phash = phash;
|
||||||
|
|
||||||
st->pathlen = atoi(result->vector[1]);
|
st->pathlen = atoi(result->vector[1]);
|
||||||
memcpy(st->path, (len ? result->vector[2] : ""), len + 1);
|
memcpy(st->path, (len ? result->vector[2] : ""), len + 1);
|
||||||
st->inode = atoi(result->vector[3]);
|
st->inode = atoi(result->vector[3]);
|
||||||
st->uid = atoi(result->vector[4]);
|
st->uid = atoi(result->vector[4]);
|
||||||
st->gid = atoi(result->vector[5]);
|
st->gid = atoi(result->vector[5]);
|
||||||
st->mode = atoi(result->vector[6]);
|
st->mode = atoi(result->vector[6]);
|
||||||
st->modtime = strtoul(result->vector[7], NULL, 10);
|
st->modtime = strtoul(result->vector[7], NULL, 10);
|
||||||
|
} else {
|
||||||
|
CSYNC_LOG(CSYNC_LOG_PRIORITY_TRACE, "No result record found for phash = %llu",
|
||||||
|
(long long unsigned int) phash);
|
||||||
|
}
|
||||||
|
|
||||||
if(result->count > 8 && result->vector[8]) {
|
if(result->count > 8 && result->vector[8]) {
|
||||||
st->type = atoi(result->vector[8]);
|
st->type = atoi(result->vector[8]);
|
||||||
|
|
Loading…
Reference in a new issue