Race conditions can occur when choosing the local path to write too
Bug #1250612 reported by
Manuel de la Peña
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ubuntu-download-manager |
Fix Released
|
Critical
|
Manuel de la Peña | ||
ubuntu-download-manager (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
We have a serious race condition with the generation and use of local paths. The race condition can happen if two diff unconfined applications use two same local paths. The single download just checks if the path is present but not if the path is used in a different download. Once both downloads are created and started they will write in the same path making the download a corrupted one.
Related branches
lp:~mandel/ubuntu-download-manager/atomic-steps
- PS Jenkins bot: Approve (continuous-integration)
- Diego Sarmentero (community): Approve
-
Diff: 1895 lines (+1198/-98)32 files modifieddebian/libubuntu-download-manager-common-dev.install (+1/-0)
download-manager.pro (+7/-1)
ubuntu-download-manager-common-tests/main.cpp (+25/-0)
ubuntu-download-manager-common-tests/test_metadata.cpp (+169/-0)
ubuntu-download-manager-common-tests/test_metadata.h (+55/-0)
ubuntu-download-manager-common-tests/ubuntu-download-manager-common-tests.pro (+36/-0)
ubuntu-download-manager-common/ubuntu-download-manager-common.pro (+2/-0)
ubuntu-download-manager-common/ubuntu/download_manager/metadata.cpp (+80/-0)
ubuntu-download-manager-common/ubuntu/download_manager/metadata.h (+56/-0)
ubuntu-download-manager-priv/downloads/daemon.cpp (+5/-2)
ubuntu-download-manager-priv/downloads/factory.cpp (+3/-8)
ubuntu-download-manager-priv/downloads/file_download.cpp (+61/-59)
ubuntu-download-manager-priv/downloads/file_download.h (+5/-4)
ubuntu-download-manager-priv/downloads/group_download.cpp (+2/-1)
ubuntu-download-manager-priv/system/file_manager.cpp (+5/-0)
ubuntu-download-manager-priv/system/file_manager.h (+1/-0)
ubuntu-download-manager-priv/system/filename_mutex.cpp (+133/-0)
ubuntu-download-manager-priv/system/filename_mutex.h (+64/-0)
ubuntu-download-manager-priv/ubuntu-download-manager-priv.pro (+4/-2)
ubuntu-download-manager-test-lib/ubuntu-download-manager-test-lib.pro (+4/-2)
ubuntu-download-manager-test-lib/ubuntu/download_manager/tests/base_testcase.cpp (+1/-1)
ubuntu-download-manager-test-lib/ubuntu/download_manager/tests/server/file_manager.cpp (+1/-1)
ubuntu-download-manager-test-lib/ubuntu/download_manager/tests/server/filename_mutex.cpp (+58/-0)
ubuntu-download-manager-test-lib/ubuntu/download_manager/tests/server/filename_mutex.h (+43/-0)
ubuntu-download-manager-tests/downloads/test_download.cpp (+197/-4)
ubuntu-download-manager-tests/downloads/test_download.h (+9/-0)
ubuntu-download-manager-tests/downloads/test_downloads_db.cpp (+5/-5)
ubuntu-download-manager-tests/downloads/test_downloads_db.h (+2/-0)
ubuntu-download-manager-tests/downloads/test_group_download.cpp (+7/-6)
ubuntu-download-manager-tests/system/test_filename_mutex.cpp (+108/-0)
ubuntu-download-manager-tests/system/test_filename_mutex.h (+45/-0)
ubuntu-download-manager-tests/ubuntu-download-manager-tests.pro (+4/-2)
Changed in ubuntu-download-manager: | |
status: | Triaged → In Progress |
Changed in ubuntu-download-manager: | |
status: | In Progress → Fix Released |
To post a comment you must log in.
This bug was fixed in the package ubuntu- download- manager - 0.3+14. 04.20140224- 0ubuntu1
--------------- download- manager (0.3+14. 04.20140224- 0ubuntu1) trusty; urgency=low
ubuntu-
[ Manuel de la Peña ]
* Ensure that we do no have race issues between the diff downloads.
This is fixed in two ways: 1. Use a temp file. 2. USe a mutex to
decide the final path of the download. (LP: #1250612)
-- Ubuntu daily release <email address hidden> Mon, 24 Feb 2014 23:20:09 +0000