[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] ac4959: Cosmetic changes

GitHub noreply at github.com
Fri May 26 11:58:35 UTC 2017


  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: ac49591e3c3a2f30c5492023c992d9ef75105872
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/ac49591e3c3a2f30c5492023c992d9ef75105872
  Author: Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>
  Date:   2017-05-25 (Thu, 25 May 2017)

  Changed paths:
    M platforms/Cross/plugins/FilePlugin/FilePlugin.h
    M platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c

  Log Message:
  -----------
  Cosmetic changes

- unify style: char* x -> char *x
- rename misleading sqFileNameIndex -> sqFileName
- rename oldName -> sqOldName because we have to distinguish squeak names and c names
- remove dead code #if 0
- call setFile with NULL rather than 0 to avoid making a pointer from integer warning


  Commit: c1db1eb40b73373b4e4fe6541cda74c8c742edc7
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/c1db1eb40b73373b4e4fe6541cda74c8c742edc7
  Author: Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>
  Date:   2017-05-25 (Thu, 25 May 2017)

  Changed paths:
    M platforms/Cross/plugins/FilePlugin/FilePlugin.h
    M platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c
    M platforms/win32/plugins/FilePlugin/sqWin32FilePrims.c

  Log Message:
  -----------
  Fix possible race condition in unix FilePlugin sqFileOpen

>From original post of Monty
http://forum.world.st/Please-review-and-merge-A-commit-to-fix-race-conditions-is-sqFileOpen-buffer-overflows-in-sqUnixFilee-td4920046.html

This commit fixes race conditions in sqFilePluginBasicPrims.c's sqFileOpen() and adds sqFileOpenNew() to support a new primitive to open only new files for IO atomically using open() with O_CREAT|O_EXCL and the equivalent on Windows, failing if they already exist. This will hopefully eventually replace any in-image code that tests for a file's existence before opening it for writing and creation/truncation, a classic race condition.

sqFileOpen() issues:

Look at the current implementation. It tries fopen() with "r+b", reading/writing of an existing file, then if that fails, with "w+b", reading/writing of a new or truncated file. If the file is created and modified elsewhere between the first and second fopen(), you get unintentional truncation with potential data loss. There's also a minor race condition involving the setting of Mac file characteristics. The fix is replacing use of fopen() with the more general sys call open() and fdopen() after and proper error checking throughout.


  Commit: 64a159ba324702316c4c74961118061a9e4fffed
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/64a159ba324702316c4c74961118061a9e4fffed
  Author: Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>
  Date:   2017-05-26 (Fri, 26 May 2017)

  Changed paths:
    M platforms/Cross/plugins/FilePlugin/FilePlugin.h
    M platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c
    M platforms/win32/plugins/FilePlugin/sqWin32FilePrims.c

  Log Message:
  -----------
  Merge pull request #140 from OpenSmalltalk/monty_fix_fopen_race

Monty fix fopen race


Compare: https://github.com/OpenSmalltalk/opensmalltalk-vm/compare/f1dfe3c34335...64a159ba3247


More information about the Vm-dev mailing list