Skip to content

Commit a84e2c2

Browse files
committed
security fix: CP-11: Admin Packages Delete Package
1 parent c0a8aee commit a84e2c2

2 files changed

Lines changed: 18 additions & 0 deletions

File tree

packages/packagesManager.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,12 @@ def submitDelete(self):
109109
packageName = data['packageName']
110110

111111
delPackage = Package.objects.get(packageName=packageName)
112+
113+
## Check package ownership
114+
admin = Administrator.objects.get(pk=userID)
115+
if ACLManager.CheckPackageOwnership(delPackage, admin, currentACL) == 0:
116+
return ACLManager.loadErrorJson('deleteStatus', 0)
117+
112118
delPackage.delete()
113119

114120
data_ret = {'status': 1, 'deleteStatus': 1, 'error_message': "None"}

plogical/acl.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,18 @@ class ACLManager:
4343
'"dkimManager": 1, "createFTPAccount": 1, "deleteFTPAccount": 1, "listFTPAccounts": 1, "createBackup": 1,' \
4444
' "restoreBackup": 0, "addDeleteDestinations": 0, "scheduleBackups": 0, "remoteBackups": 0, "googleDriveBackups": 1, "manageSSL": 1, ' \
4545
'"hostnameSSL": 0, "mailServerSSL": 0 }'
46+
47+
@staticmethod
48+
def CheckPackageOwnership(package, admin, currentACL):
49+
if currentACL['admin'] == 1:
50+
return 1
51+
elif package.admin == admin:
52+
return 1
53+
else:
54+
return 0
55+
56+
57+
4658
@staticmethod
4759
def FindIfChild():
4860
try:

0 commit comments

Comments
 (0)