Code

Opened 6 years ago

Closed 3 years ago

#7844 closed Bug (fixed)

Very small race condition in file field saving

Reported by: mtredinnick Owned by: nobody
Component: Core (Other) Version: master
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Noticed this whilst reading Model._save_FIELD_file() for another reason. The directory name used to save the file can be sensitive to the current datetime value, since upload_to directories can contain format strings. This directory name is computed a couple of times in this function, from what I can work out: once when creating the directories at the top of the function and once when call field.get_filename().

It's possible that the time delay between creating the directory and using the directory lower down could be sufficiently long that the name actually changes. For example, using day-based formats and then clock crosses midnight. The directory name should be the same throughout the code.

Attachments (1)

7844.diff (1.3 KB) - added by scum 6 years ago.
Added a optional parameter to get_filename fixingthe race condition. Not as pretty, but the only way I can think to do it right.

Download all attachments as: .zip

Change History (4)

comment:1 Changed 6 years ago by mtredinnick

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Triage Stage changed from Unreviewed to Accepted

Changed 6 years ago by scum

Added a optional parameter to get_filename fixingthe race condition. Not as pretty, but the only way I can think to do it right.

comment:2 Changed 3 years ago by lukeplant

  • Severity set to Normal
  • Type set to Bug

comment:3 Changed 3 years ago by koenb

  • Easy pickings unset
  • Resolution set to fixed
  • Status changed from new to closed
  • UI/UX unset

This part of the code was changed drastically in the file storage refactor. I can not find a similar race condition in the current FileField implementation.

Closing as fixed.

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'new'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.