Skip to content

Commit 5730ac5

Browse files
authored
Fixed SEGFAULT in WebDav task sync + type changes (#16345)
1 parent b27233b commit 5730ac5

2 files changed

Lines changed: 15 additions & 6 deletions

File tree

network/cloud_sync/webdav.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ static char *webdav_get_auth_header(const char *method, const char *url)
449449

450450
static void webdav_log_http_failure(const char *path, http_transfer_data_t *data)
451451
{
452-
int i;
452+
size_t i;
453453
RARCH_WARN("webdav failed: %s: HTTP %d\n", path, data->status);
454454
for (i = 0; data->headers && i < data->headers->size; i++)
455455
RARCH_WARN("%s\n", data->headers->elems[i].data);
@@ -469,7 +469,7 @@ static void webdav_stat_cb(retro_task_t *task, void *task_data, void *user_data,
469469

470470
if (data && data->status == 401 && data->headers && webdav_st->basic == true)
471471
{
472-
int i;
472+
size_t i;
473473
webdav_st->basic = false;
474474
for (i = 0; i < data->headers->size; i++)
475475
{

tasks/task_cloudsync.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ static bool task_cloud_sync_should_ignore_file(const char *filename)
264264
static void task_cloud_sync_manifest_append_dir(file_list_t *manifest,
265265
const char *dir_fullpath, char *dir_name)
266266
{
267-
int i;
267+
size_t i;
268268
struct string_list *dir_list;
269269
char dir_fullpath_slash[PATH_MAX_LENGTH];
270270

@@ -273,6 +273,12 @@ static void task_cloud_sync_manifest_append_dir(file_list_t *manifest,
273273

274274
dir_list = dir_list_new(dir_fullpath_slash, NULL, false, true, true, true);
275275

276+
if (dir_list->size == 0)
277+
{
278+
string_list_free(dir_list);
279+
return;
280+
}
281+
276282
file_list_reserve(manifest, manifest->size + dir_list->size);
277283
for (i = 0; i < dir_list->size; i++)
278284
{
@@ -318,7 +324,7 @@ static struct string_list *task_cloud_sync_directory_map(void)
318324
static void task_cloud_sync_build_current_manifest(task_cloud_sync_state_t *sync_state)
319325
{
320326
struct string_list *dirlist = task_cloud_sync_directory_map();
321-
int i;
327+
size_t i;
322328

323329
if (!(sync_state->current_manifest = (file_list_t *)calloc(1, sizeof(file_list_t))))
324330
{
@@ -368,7 +374,10 @@ static void task_cloud_sync_update_progress(retro_task_t *task)
368374
if (sync_state->current_manifest)
369375
count += sync_state->current_manifest->size;
370376

371-
task_set_progress(task, (val * 100) / count);
377+
if (count != 0)
378+
task_set_progress(task, (val * 100) / count);
379+
else
380+
task_set_progress(task, 100);
372381
}
373382

374383
static void task_cloud_sync_add_to_updated_manifest(task_cloud_sync_state_t *sync_state, const char *key, char *hash, bool server)
@@ -490,7 +499,7 @@ static void task_cloud_sync_fetch_server_file(task_cloud_sync_state_t *sync_stat
490499
char directory[PATH_MAX_LENGTH];
491500
char filename[PATH_MAX_LENGTH];
492501
settings_t *settings = config_get_ptr();
493-
int i;
502+
size_t i;
494503

495504
/* we're just fetching a file the server has, we can update this now */
496505
task_cloud_sync_add_to_updated_manifest(sync_state, key, CS_FILE_HASH(server_file), true);

0 commit comments

Comments
 (0)