ctc-oss / fapolicy-analyzer

Tools to assist with the configuration and management of fapolicyd.
https://ctc-oss.github.io/fapolicy-analyzer
GNU General Public License v3.0
12 stars 5 forks source link

Revert after untrust in empty ATDB #829

Closed egbicker closed 1 year ago

egbicker commented 1 year ago

When I revert my changes after deploying an ATDB that is now empty, I get a divide by 0 error.

Steps to recreate:

  1. Have entries in ATDB
  2. Untrust all entries
  3. Deploy changeset
  4. Select "No" on the revert dialog option
  5. A ZeroDivisionError appears
Traceback (most recent call last):

File "/usr/lib/python3.11/site-packages/rx/subject/subject.py", line 55, in on_next
    super().on_next(value)
  File "/usr/lib/python3.11/site-packages/rx/core/observer/observer.py", line 26, in on_next
    self._on_next_core(value)
  File "/usr/lib/python3.11/site-packages/rx/subject/subject.py", line 62, in _on_next_core
    observer.on_next(value)
  File "/usr/lib/python3.11/site-packages/rx/core/observer/autodetachobserver.py", line 26, in on_next
    self._on_next(value)
  File "/usr/lib/python3.11/site-packages/rx/subject/subject.py", line 55, in on_next
    super().on_next(value)
  File "/usr/lib/python3.11/site-packages/rx/core/observer/observer.py", line 26, in on_next
    self._on_next_core(value)
  File "/usr/lib/python3.11/site-packages/rx/subject/subject.py", line 62, in _on_next_core
    observer.on_next(value)
  File "/usr/lib/python3.11/site-packages/rx/core/observer/autodetachobserver.py", line 26, in on_next
    self._on_next(value)
  File "/usr/lib/python3.11/site-packages/rx/core/observer/autodetachobserver.py", line 26, in on_next
    self._on_next(value)
  File "/usr/lib/python3.11/site-packages/rx/core/observer/autodetachobserver.py", line 26, in on_next
    self._on_next(value)
  File "/usr/lib/python3.11/site-packages/rx/internal/concurrency.py", line 16, in inner
    return fn(*args, **kw)
           ^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/rx/core/observer/autodetachobserver.py", line 26, in on_next
    self._on_next(value)
  File "/usr/lib/python3.11/site-packages/rx/core/operators/map.py", line 39, in on_next
    obv.on_error(err)
  File "/usr/lib/python3.11/site-packages/rx/core/observer/autodetachobserver.py", line 34, in on_error
    self._on_error(error)
  File "/usr/lib/python3.11/site-packages/rx/core/observer/autodetachobserver.py", line 34, in on_error
    self._on_error(error)
  File "/usr/lib/python3.11/site-packages/rx/subject/subject.py", line 73, in on_error
    super().on_error(error)
  File "/usr/lib/python3.11/site-packages/rx/core/observer/observer.py", line 43, in on_error
    self._on_error_core(error)
  File "/usr/lib/python3.11/site-packages/rx/subject/subject.py", line 82, in _on_error_core
    observer.on_error(error)
  File "/usr/lib/python3.11/site-packages/rx/core/observer/autodetachobserver.py", line 34, in on_error
    self._on_error(error)
  File "/usr/lib/python3.11/site-packages/rx/core/observer/autodetachobserver.py", line 34, in on_error
    self._on_error(error)
  File "/usr/lib/python3.11/site-packages/rx/internal/basic.py", line 34, in default_error
    raise err
  File "/usr/lib/python3.11/site-packages/rx/core/operators/map.py", line 37, in on_next
    result = _mapper(value)
             ^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/site-packages/fapolicy_analyzer/redux/_internal/store.py", line 247, in <lambda>
    op.map(lambda action: reducer(state.value, action)),
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/site-packages/fapolicy_analyzer/redux/_internal/reducer.py", line 87, in _combine_reducers
    updated = value(current, action)
              ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/site-packages/fapolicy_analyzer/redux/_internal/reducer.py", line 87, in _combine_reducers
    updated = value(current, action)
              ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/site-packages/fapolicy_analyzer/redux/_internal/reducer.py", line 59, in _handle_actions_reducer
    return action_map.get(select_action_type(action),
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/site-packages/fapolicy_analyzer/ui/reducers/trust_reducer.py", line 68, in handle_received_trust_update
    percent_complete=running_count / state.trust_count * 100,
                    ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
ZeroDivisionError: division by zero