Ok, after my rollback from 9.5.1 I ended up on client 9.2.7 (which is new in my environment) and I think I might be encountering another inspector issue in this version. I’m retrieving a Service DACL and comparing it to the string I expect it to be. But I’m getting a wrong answer on at least one of my new 9.2.7 client machines, and it seems to evaluate differently between 9.2.7 and 9.5.1 - implies a difference between 9.2.7 and 9.5.1
Actual value:
C:\temp>sc sdshow tapisrv
D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCLCSWLOCRRC;;;IU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
On a single machine, using the 9.5 Debugger and the 9.2.7 Client, the Fixlet Debugger will yield different results depending on whether I’m in “Local Fixlet Debugger Evaluator” or “Local Client Evaluator” modes -
//Local Client Evaluator -
q: (dacl of security descriptor of service "TapiSrv") as string = "D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCLCSWLOCRRC;;;IU)"
A: False
// Local Fixlet Debugger Evaluator -
q: (dacl of security descriptor of service "TapiSrv") as string = "D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCLCSWLOCRRC;;;IU)"
A: True
T: 1.172 ms
So then I try to display the DACL, and it looks the same either way -
// client
q: dacl of security descriptor of service "tapisrv" as string
A: D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCLCSWLOCRRC;;;IU)
// debugger
q: dacl of security descriptor of service "tapisrv" as string
A: D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCLCSWLOCRRC;;;IU)
So, thinking maybe it was some kind of weird whitespace/unprintable character thing (which shouldn’t happen retrieving a DACL), I tried wrapping it in quotes, and this shows a problem -
// Debugger
q: "%22" & dacl of security descriptor of service "tapisrv" as string & "%22"
A: "D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCLCSWLOCRRC;;;IU)"
// Local Client
q: "%22" & dacl of security descriptor of service "tapisrv" as string & "%22"
A: "D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCLCSWLOCRRC;;;IU)
…the closing doublequotes don’t appear at all when evaluating it in “Local Client Evaluator” mode.
It’s not a big problem for me - most of my clients are still between 9.2.1 and 9.2.2. It’s really only my Relays that I had upgraded to 9.5, then downgraded to 9.2.7 that are being affected by this. But is it a known problem? It seems to be working in 9.5, at least in the Fixlet Debugger.
I’m not sure whether this is specific to DACLs or a more generic string handling problem. I don’t seem to be able to append to a string-casted DACL which implies something wrong is going on but no error is thrown -
q: "%22" & dacl of security descriptor of service "tapisrv" as string as trimmed string & "%22 HOWDY"
A: "D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCLCSWLOCRRC;;;IU)
T: 0.061 ms