aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/crcutil/protected_crc.h
diff options
context:
space:
mode:
authorf0b0s <f0b0s@yandex-team.ru>2022-02-10 16:46:51 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:46:51 +0300
commitdeabc5260ac2e17b8f5152ee060bec1740613540 (patch)
treebc498b2fe3c447d13c2abea85b429fee8dd485ef /contrib/libs/crcutil/protected_crc.h
parent2e6009493e74f88988b81f219b301f450331648d (diff)
downloadydb-deabc5260ac2e17b8f5152ee060bec1740613540.tar.gz
Restoring authorship annotation for <f0b0s@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/crcutil/protected_crc.h')
-rw-r--r--contrib/libs/crcutil/protected_crc.h122
1 files changed, 61 insertions, 61 deletions
diff --git a/contrib/libs/crcutil/protected_crc.h b/contrib/libs/crcutil/protected_crc.h
index 762fceda9b..81a7051bc8 100644
--- a/contrib/libs/crcutil/protected_crc.h
+++ b/contrib/libs/crcutil/protected_crc.h
@@ -1,61 +1,61 @@
-// Copyright 2010 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Protects CRC tables with its own CRC.
-// CRC tables get corrupted too, and if corruption is
-// not caught, data poisoning becomes a reality.
-
-#ifndef CRCUTIL_PROTECTED_CRC_H_
-#define CRCUTIL_PROTECTED_CRC_H_
-
-namespace crcutil {
-
-#pragma pack(push, 16)
-
-// Class CrcImplementation should not have virtual functions:
-// vptr is stored as the very first field, vptr value is defined
-// at runtime, so it is impossible to CRC(*this) once and
-// guarantee that this value will not change from run to run.
-//
-template<typename CrcImplementation> class ProtectedCrc
- : public CrcImplementation {
- public:
- typedef typename CrcImplementation::Crc Crc;
-
- // Returns check value that the caller should compare
- // against pre-computed, trusted constant.
- //
- // Computing SelfCheckValue() after CRC initialization,
- // storing it in memory, and periodically checking against
- // stored value may not work: if CRC tables were initialized
- // incorrectly and/or had been corrupted during initialization,
- // CheckValue() will return garbage. Garbage in, garbage out.
- // Consequitive checks will not detect a problem, the application
- // will happily produce and save the data with corrupt CRC.
- //
- // The application should call SelfCheckValue() regularly:
- // 1. First and foremost, on every CRC mismatch.
- // 2. After CRC'ing the data but before sending it out or writing it.
- // 3. Worst case, every Nth CRC'ed byte or every Nth call to CRC.
- //
- Crc SelfCheckValue() const {
- return CrcDefault(this, sizeof(*this), 0);
- }
-} GCC_ALIGN_ATTRIBUTE(16);
-
-#pragma pack(pop)
-
-} // namespace crcutil
-
-#endif // CRCUTIL_PROTECTED_CRC_H_
+// Copyright 2010 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Protects CRC tables with its own CRC.
+// CRC tables get corrupted too, and if corruption is
+// not caught, data poisoning becomes a reality.
+
+#ifndef CRCUTIL_PROTECTED_CRC_H_
+#define CRCUTIL_PROTECTED_CRC_H_
+
+namespace crcutil {
+
+#pragma pack(push, 16)
+
+// Class CrcImplementation should not have virtual functions:
+// vptr is stored as the very first field, vptr value is defined
+// at runtime, so it is impossible to CRC(*this) once and
+// guarantee that this value will not change from run to run.
+//
+template<typename CrcImplementation> class ProtectedCrc
+ : public CrcImplementation {
+ public:
+ typedef typename CrcImplementation::Crc Crc;
+
+ // Returns check value that the caller should compare
+ // against pre-computed, trusted constant.
+ //
+ // Computing SelfCheckValue() after CRC initialization,
+ // storing it in memory, and periodically checking against
+ // stored value may not work: if CRC tables were initialized
+ // incorrectly and/or had been corrupted during initialization,
+ // CheckValue() will return garbage. Garbage in, garbage out.
+ // Consequitive checks will not detect a problem, the application
+ // will happily produce and save the data with corrupt CRC.
+ //
+ // The application should call SelfCheckValue() regularly:
+ // 1. First and foremost, on every CRC mismatch.
+ // 2. After CRC'ing the data but before sending it out or writing it.
+ // 3. Worst case, every Nth CRC'ed byte or every Nth call to CRC.
+ //
+ Crc SelfCheckValue() const {
+ return CrcDefault(this, sizeof(*this), 0);
+ }
+} GCC_ALIGN_ATTRIBUTE(16);
+
+#pragma pack(pop)
+
+} // namespace crcutil
+
+#endif // CRCUTIL_PROTECTED_CRC_H_