narrowAccessors dynamically disables filter accessors by walking the fields declared in the expression. The field can be expressed as a regular LHS/RHS component, used as a function parameter or referenced in the bound field.
()
| 152 | // as a regular LHS/RHS component, used as a function parameter or |
| 153 | // referenced in the bound field. |
| 154 | func (f *filter) narrowAccessors() { |
| 155 | var ( |
| 156 | removeEvtAccessor = true |
| 157 | removePsAccessor = true |
| 158 | removeThreadAccessor = true |
| 159 | removeModuleAccessor = true |
| 160 | removeFileAccessor = true |
| 161 | removeRegistryAccessor = true |
| 162 | removeNetworkAccessor = true |
| 163 | removeHandleAccessor = true |
| 164 | removePEAccessor = true |
| 165 | removeMemAccessor = true |
| 166 | removeDNSAccessor = true |
| 167 | removeThreadpoolAccessor = true |
| 168 | ) |
| 169 | |
| 170 | for _, field := range f.fields { |
| 171 | switch { |
| 172 | case field.Name.IsEvtField() || field.Name.IsKevtField(): |
| 173 | removeEvtAccessor = false |
| 174 | case field.Name.IsPeField(): |
| 175 | removePEAccessor = false |
| 176 | case field.Name.IsPsField(): |
| 177 | removePsAccessor = false |
| 178 | case field.Name.IsThreadField(): |
| 179 | removeThreadAccessor = false |
| 180 | case field.Name.IsImageField() || field.Name.IsModuleField(): |
| 181 | removeModuleAccessor = false |
| 182 | case field.Name.IsFileField(): |
| 183 | removeFileAccessor = false |
| 184 | case field.Name.IsRegistryField(): |
| 185 | removeRegistryAccessor = false |
| 186 | case field.Name.IsNetworkField(): |
| 187 | removeNetworkAccessor = false |
| 188 | case field.Name.IsHandleField(): |
| 189 | removeHandleAccessor = false |
| 190 | case field.Name.IsMemField(): |
| 191 | removeMemAccessor = false |
| 192 | case field.Name.IsDNSField(): |
| 193 | removeDNSAccessor = false |
| 194 | case field.Name.IsThreadpoolField(): |
| 195 | removeThreadpoolAccessor = false |
| 196 | } |
| 197 | } |
| 198 | |
| 199 | if removeEvtAccessor { |
| 200 | f.removeAccessor(&evtAccessor{}) |
| 201 | } |
| 202 | if removePsAccessor { |
| 203 | f.removeAccessor(&psAccessor{}) |
| 204 | } |
| 205 | if removeThreadAccessor { |
| 206 | f.removeAccessor(&threadAccessor{}) |
| 207 | } |
| 208 | if removeModuleAccessor { |
| 209 | f.removeAccessor(&moduleAccessor{}) |
| 210 | } |
| 211 | if removeFileAccessor { |
no test coverage detected