Upon further investigation, python3-apparmor-click and python3-apparmor-
easyprof both use shutil.move() to put a temp file into place.
shutil.move() will use os.rename() if the files reside on the same file,
but will use shutil.copy2() followed by an unlink otherwise. Since the
tempfile.mkstemp() in both cases does not specify to use a different
temp directory (ie, dir=None), these files will be created in /tmp,
which is a tmpfs on devices (verified on mako), therefore the
shutil.move() is not atomic. This confirms that utilizing a blocking
lock file will prevent at least some forms of races and corruption. We
could adjust the mkstemp() call to use the same filesystem, however,
that would result in unexpected behavior when two aa-clickhooks are run
at the same time (ie, both would think they did everything correctly but
each could have missed something).

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to apparmor in Ubuntu.
https://bugs.launchpad.net/bugs/1377338

Title:
  apparmor may fail to load some profiles if one is corrupted

Status in “apparmor” package in Ubuntu:
  Triaged
Status in “click-apparmor” package in Ubuntu:
  In Progress
Status in “click-apparmor” package in Ubuntu RTM:
  In Progress

Bug description:
  Steps to reproduce (on the emulator):
  1. sudo sh -c 'echo foo > 
/var/lib/apparmor/profiles/click_com.ubuntu.music_music_1.3.638'
  2. sudo start apparmor ACTION=teardown
  3. sudo start apparmor
  start: Job failed to start
  4. sudo aa-status|egrep '^ '|grep -v '('| sort -u > /tmp/aa-status.music_bad
  5. sudo rm -f /var/lib/apparmor/profiles/click_com.ubuntu.music_music_1.3.638
  6. sudo aa-clickhook # regenerates the missing profile to had a good one
  7. sudo start apparmor ACTION=teardown
  8. sudo start apparmor
  9. sudo aa-status|egrep '^ '|grep -v '('| sort -u > /tmp/aa-status.music_good
  10. diff -Naur /tmp/aa-status.music_bad /tmp/aa-status.music_good
  --- /tmp/aa-status.music_bad  2014-10-03 22:47:52.890906744 +0000
  +++ /tmp/aa-status.music_good 2014-10-03 22:49:54.372739381 +0000
  @@ -13,6 +13,10 @@
      
com.ubuntu.developer.webapps.webapp-twitter_webapp-twitter_1.0.18//oxide_helper
      com.ubuntu.developer.webapps.webapp-twitter_webapp-twitter-helper_1.0.18
      com.ubuntu.dropping-letters_dropping-letters_0.1.2.2.66
  +   com.ubuntu.music_music_1.3.638
  +   com.ubuntu.shorts_shorts_0.2.330
  +   com.ubuntu.sudoku_sudoku_1.1.292
  +   com.ubuntu.weather_weather_1.1.374
      lxc-container-default
      lxc-container-default-with-mounting
      lxc-container-default-with-nesting

  Expected results: only com.ubuntu.music_music_1.3.638 should be
  missing.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/1377338/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to