/**
* @param string $ctrlFlags
* @param string $aclType
* @param SecurityDescriptor $sd
* @throws SddlParserException
*/
protected function parseControlFlags($ctrlFlags, $aclType, SecurityDescriptor $sd)
{
$flags = ['P' => $aclType . 'ACL_PROTECTED', 'AR' => $aclType . 'ACL_AUTO_INHERIT_REQ', 'AI' => $aclType . 'ACL_AUTO_INHERIT'];
foreach ($flags as $flag => $name) {
if (strpos($ctrlFlags, $flag) !== false) {
$sd->getControlFlags()->add(ControlFlags::FLAG[$name]);
$ctrlFlags = str_replace($flag, '', $ctrlFlags);
}
}
if (!empty($ctrlFlags)) {
throw new SddlParserException(sprintf('The control flag(s) "%s" passed to the %sACL are not recognized.', $ctrlFlags, $aclType));
}
}