|
9 | 9 |
|
10 | 10 | namespace NKikimr::NCms {
|
11 | 11 |
|
| 12 | +namespace { |
| 13 | + |
| 14 | +template<typename T> |
| 15 | +bool ParseFromStringSafe(const TString& input, T* output) { |
| 16 | + google::protobuf::TextFormat::Parser parser; |
| 17 | + parser.AllowUnknownField(true); |
| 18 | + return parser.ParseFromString(input, output); |
| 19 | +} |
| 20 | + |
| 21 | +} // anonymous namespace |
| 22 | + |
12 | 23 | class TCms::TTxLoadState : public TTransactionBase<TCms> {
|
13 | 24 | public:
|
14 | 25 | TTxLoadState(TCms *self)
|
@@ -91,7 +102,7 @@ class TCms::TTxLoadState : public TTransactionBase<TCms> {
|
91 | 102 | request.Owner = owner;
|
92 | 103 | request.Order = order;
|
93 | 104 | request.Priority = priority;
|
94 |
| - google::protobuf::TextFormat::ParseFromString(requestStr, &request.Request); |
| 105 | + ParseFromStringSafe(requestStr, &request.Request); |
95 | 106 |
|
96 | 107 | LOG_DEBUG(ctx, NKikimrServices::CMS, "Loaded request %s owned by %s: %s",
|
97 | 108 | id.data(), owner.data(), requestStr.data());
|
@@ -149,7 +160,7 @@ class TCms::TTxLoadState : public TTransactionBase<TCms> {
|
149 | 160 | permission.PermissionId = id;
|
150 | 161 | permission.RequestId = requestId;
|
151 | 162 | permission.Owner = owner;
|
152 |
| - google::protobuf::TextFormat::ParseFromString(actionStr, &permission.Action); |
| 163 | + ParseFromStringSafe(actionStr, &permission.Action); |
153 | 164 | permission.Deadline = TInstant::MicroSeconds(deadline);
|
154 | 165 |
|
155 | 166 | LOG_DEBUG(ctx, NKikimrServices::CMS, "Loaded permission %s owned by %s valid until %s: %s",
|
@@ -185,7 +196,7 @@ class TCms::TTxLoadState : public TTransactionBase<TCms> {
|
185 | 196 | TNotificationInfo notification;
|
186 | 197 | notification.NotificationId = id;
|
187 | 198 | notification.Owner = owner;
|
188 |
| - google::protobuf::TextFormat::ParseFromString(notificationStr, ¬ification.Notification); |
| 199 | + ParseFromStringSafe(notificationStr, ¬ification.Notification); |
189 | 200 |
|
190 | 201 | LOG_DEBUG(ctx, NKikimrServices::CMS, "Loaded notification %s owned by %s: %s",
|
191 | 202 | id.data(), owner.data(), notificationStr.data());
|
|
0 commit comments