Skip to content

Commit

Permalink
Use tmp struct and node id when converting subject
Browse files Browse the repository at this point in the history
Break out the steps so it's clearer what is happening.

Verified that writing group subjects 4444, 5555, and 6666
properly got converted to node IDs 0xFFFFFFFFFFFF115C,
0xFFFFFFFFFFFF15B3, and 0xFFFFFFFFFFFF1A0A, and reading
them properly converted them back.
  • Loading branch information
mlepage-google committed Mar 3, 2022
1 parent 7847262 commit 9087509
Showing 1 changed file with 14 additions and 11 deletions.
25 changes: 14 additions & 11 deletions src/app/clusters/access-control-server/access-control-server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -250,10 +250,11 @@ struct AccessControlEntryCodec
{
for (size_t i = 0; i < subjectCount; ++i)
{
Subject subject;
ReturnErrorOnFailure(entry.GetSubject(i, subject.nodeId));
ReturnErrorOnFailure(Convert(subject.nodeId, subject));
subjectBuffer[i] = subject.nodeId;
NodeId subject;
ReturnErrorOnFailure(entry.GetSubject(i, subject));
Subject tmp;
ReturnErrorOnFailure(AccessControlEntryCodec::Convert(subject, tmp));
subjectBuffer[i] = tmp.nodeId;
}
staging.subjects.SetNonNull(subjectBuffer, subjectCount);
}
Expand Down Expand Up @@ -302,9 +303,10 @@ struct AccessControlEntryCodec
auto iterator = staging.subjects.Value().begin();
while (iterator.Next())
{
Subject subject = { .nodeId = iterator.GetValue(), .authMode = staging.authMode };
ReturnErrorOnFailure(Convert(subject, subject.nodeId));
ReturnErrorOnFailure(entry.AddSubject(nullptr, subject.nodeId));
Subject tmp = { .nodeId = iterator.GetValue(), .authMode = staging.authMode };
NodeId subject;
ReturnErrorOnFailure(Convert(tmp, subject));
ReturnErrorOnFailure(entry.AddSubject(nullptr, subject));
}
ReturnErrorOnFailure(iterator.GetStatus());
}
Expand Down Expand Up @@ -393,10 +395,11 @@ CHIP_ERROR LogEntryChangedEvent(const AccessControl::Entry & entry, const Access
{
for (size_t i = 0; i < subjectCount; ++i)
{
Subject subject;
ReturnErrorOnFailure(entry.GetSubject(i, subject.nodeId));
ReturnErrorOnFailure(AccessControlEntryCodec::Convert(subject.nodeId, subject));
subjectBuffer[i] = subject.nodeId;
NodeId subject;
ReturnErrorOnFailure(entry.GetSubject(i, subject));
Subject tmp;
ReturnErrorOnFailure(AccessControlEntryCodec::Convert(subject, tmp));
subjectBuffer[i] = tmp.nodeId;
}
staging.subjects.SetNonNull(subjectBuffer, subjectCount);
}
Expand Down

0 comments on commit 9087509

Please sign in to comment.