From a9a6893c89516e8bb5e2c907b3e3941ceb276b8c Mon Sep 17 00:00:00 2001 From: Daniel Kahn Gillmor Date: Thu, 21 Feb 2019 15:20:02 -0500 Subject: [PATCH] Handle unix: socket prefix the same as local: sendmail's milter.c treats these two declarations the same way, so what we do for one should also be done for the other. --- dkimpy_milter/util.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/dkimpy_milter/util.py b/dkimpy_milter/util.py index 57b433c..abab538 100644 --- a/dkimpy_milter/util.py +++ b/dkimpy_milter/util.py @@ -150,10 +150,17 @@ def own_socketfile(milterconfig): """If socket is Unix socket, chown to UserID before dropping privileges""" import os user, group = user_group(milterconfig.get('UserID')) - if milterconfig.get('Socket')[:1] == '/': - os.chown(milterconfig.get('Socket'), user, group) - if milterconfig.get('Socket')[:6] == "local:": - os.chown(milterconfig.get('Socket')[6:], user, group) + offset = None + sockname = milterconfig.get('Socket') + if sockname[:1] == '/': + offset = 0 + elif sockname[:6] == "local:": + offset = 6 + elif sockname[:5] == "unix:": + offset = 5 + + if offset is not None: + os.chown(sockname[offset:], user, group) def read_keyfile(milterconfig, keytype):