Fix Prevent issue
authorTomasz Iwanek <t.iwanek@samsung.com>
Fri, 20 Sep 2013 10:59:14 +0000 (12:59 +0200)
committerSoo-Hyun Choi <sh9.choi@samsung.com>
Fri, 20 Sep 2013 15:32:29 +0000 (00:32 +0900)
commit5076baa608858a7085c6bc81a9838de4c7420aa7
treeeba1d1e492ea3f68708a08a9f5fe44c98846fba5
parentfb54cae00cd8275cd566501669aa4c57d2f77c38
Fix Prevent issue

- Incorrect usage of TEMP_FAILURE_RETRY

[Issue#]   CID: 22993, 22996, LINUXWRT-906
[Problem]  closedir() repeated if EINTR occurrs
[Cause]    Same as Prevent CID: 22995
           https://review.tizendev.org/gerrit/#/c/83449/

  * For POSIX closedir() specifies two possible errno values: EBADF, EINTR
    (see closedir(3p)).
  * For Linux, on the other hand, only one errno value is specified: EBADF
    (see closedir(3)).
  * In fact, closedir() implementation in GNU C Library may set other errno
    values as well, e.g. EINVAL if value NULL is passed to the function
    (verified for glibc 2.15, source file sysdeps/unix/closedir.c).

  * Assuming that closedir() is just a wrapper around a call to close()
    system call and having in mind that it was decided (and confirmed by
    Linus Torvalds) that repeating close() even for EINTR is unsafe which I have
    decided to not repeat closedir() in such case as well.

  * What's more, implementation of closedir() in GNU C Library calls free()
    on the stream handle, so repeating closedir() may lead to memory
    corruption (as reported by Prevent).

[Solution] Do not repeat closedir() on error (even EINTR).

[SCMRequest] N/A
[Verification] Build repository.

Change-Id: I857861d1f10954d4c199bf8d54fc5ea13cb00d44
src/jobs/widget_install/task_manifest_file.cpp
src/jobs/widget_install/task_widget_config.cpp