Use ProtoOutputStream to strip Pii sensetive fields in incidentd
The in-place algorithm in ProtoOutputStream will have at most 2 copies
of possible nested message values incidentd is getting which makes it
more ram-efficient, and minimize allocations.
Bug: 65641021
Test: the units pass
Change-Id: Ic3fe99b7e27895bd613a129ba0f12ccfca4af317
diff --git a/cmds/incidentd/src/PrivacyBuffer.h b/cmds/incidentd/src/PrivacyBuffer.h
index 720b38e..c9ca9a7 100644
--- a/cmds/incidentd/src/PrivacyBuffer.h
+++ b/cmds/incidentd/src/PrivacyBuffer.h
@@ -20,6 +20,7 @@
#include "Privacy.h"
#include <android/util/EncodedBuffer.h>
+#include <android/util/ProtoOutputStream.h>
#include <stdint.h>
#include <utils/Errors.h>
@@ -60,8 +61,11 @@
const Privacy* mPolicy;
EncodedBuffer::iterator& mData;
- EncodedBuffer mBuffer;
+ ProtoOutputStream mProto;
size_t mSize;
+
+ status_t stripField(const Privacy* parentPolicy, const PrivacySpec& spec);
+ void writeFieldOrSkip(uint32_t fieldTag, bool skip);
};
#endif // PRIVACY_BUFFER_H
\ No newline at end of file