From 5ce5ba5e58f104d33229bf60f35f7623d09619cc Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Fri, 2 May 2014 14:45:51 -0500 Subject: [PATCH] Refuse to convert a non-empty directory into a link with the file module Also adds an integration test for the above. Fixes #7254 --- files/file | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/files/file b/files/file index 13beb646e77..d758d54b8cc 100644 --- a/files/file +++ b/files/file @@ -192,8 +192,13 @@ def main(): if state == 'hard': if not os.path.isabs(src): module.fail_json(msg="absolute paths are required") - - elif prev_state in ['file', 'hard', 'directory'] and not force: + elif prev_state == 'directory': + if not force: + module.fail_json(path=path, msg='refusing to convert between %s and %s for %s' % (prev_state, state, src)) + elif len(os.listdir(path)) > 0: + # refuse to replace a directory that has files in it + module.fail_json(path=path, msg='the directory %s is not empty, refusing to convert it' % path) + elif prev_state in ['file', 'hard'] and not force: module.fail_json(path=path, msg='refusing to convert between %s and %s for %s' % (prev_state, state, src)) if prev_state == 'absent':