summaryrefslogtreecommitdiff
path: root/src/gib_hash.c
diff options
context:
space:
mode:
authorTobias Stoeckmann <tobias@stoeckmann.org>2019-07-12 19:43:59 +0200
committerTobias Stoeckmann <tobias@stoeckmann.org>2019-07-12 19:43:59 +0200
commit2c38c9da3ea45d6c692314ad2e2f7213de2afaeb (patch)
treea48c15bc188c64836eb8c1f4e34fe6a2306a1182 /src/gib_hash.c
parent2c6e4fbabf502840a5138c489e3ace16294a9a75 (diff)
Check stat for error before setting permissions.
When setting wallpapers without --no-fehbg option, a ~/.fehbg file is created. This file is set to be an executable for later re-use. Calling stat() without checking the return value can lead to issues. If the call fails, then s.st_mode is undefined and excessive permissions could be set to .fehbg, at worst even setuid/setgid bits for a world writable file. While adjusting this, I changed the code to use fstat() and fchmod() to avoid a further -- but very unlikely -- issue: race condition in form of TOCTOU. If the file ~/.fehsetbg is replaced by a symlink right before the chmod call, then a different file would be set executable + the default mode of the (newly created) file. I don't expect this to be a real world issue but changed this part "while at it" anyway for more robust code and a good example on how to handle files. Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
Diffstat (limited to 'src/gib_hash.c')
0 files changed, 0 insertions, 0 deletions