Fix NULL-deref in pfs_rename_openfile_locked
Check putil_strdup return before freeing old name. On OOM, keep old name and return -ENOMEM instead of setting NULL. Fixes #260
This commit is contained in:
parent
6ce166a0a5
commit
138e73e254
|
|
@ -309,8 +309,13 @@ int pfs_rename_openfile_locked(psync_fsfileid_t fileid,
|
||||||
fl->currentfolder =
|
fl->currentfolder =
|
||||||
pfs_task_get_or_create_folder_tasks_locked(folderid);
|
pfs_task_get_or_create_folder_tasks_locked(folderid);
|
||||||
}
|
}
|
||||||
|
char *newname = putil_strdup(name);
|
||||||
|
if (!newname) {
|
||||||
|
pthread_mutex_unlock(&fl->mutex);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
free(fl->currentname);
|
free(fl->currentname);
|
||||||
fl->currentname = putil_strdup(name);
|
fl->currentname = newname;
|
||||||
pthread_mutex_unlock(&fl->mutex);
|
pthread_mutex_unlock(&fl->mutex);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue