Eliminate a now pointless loop. Done as a separate patch to
make the effects of upcoming changes more clear.
Signed-off-by: Alex Elder <aelder@xxxxxxx>
---
db/metadump.c | 129 ++++++++++++++++++++++++++++------------------------------
1 file changed, 63 insertions(+), 66 deletions(-)
Index: b/db/metadump.c
===================================================================
--- a/db/metadump.c
+++ b/db/metadump.c
@@ -443,80 +443,77 @@ generate_obfuscated_name(
if (*name == '/')
name++;
do {
+ uchar_t high_bit;
+
dup = 0;
- for (;;) {
- uchar_t high_bit;
- /*
- * The beginning of the obfuscated name can
- * be pretty much anything, so fill it in
- * with random characters.
- */
- newhash = 0;
- for (i = 0; i < namelen - 5; i++) {
- newp[i] = random_filename_char();
- newhash = newp[i] ^ rol32(newhash, 7);
- }
+ /*
+ * The beginning of the obfuscated name can be
+ * pretty much anything, so fill it in with random
+ * characters.
+ */
+ newhash = 0;
+ for (i = 0; i < namelen - 5; i++) {
+ newp[i] = random_filename_char();
+ newhash = newp[i] ^ rol32(newhash, 7);
+ }
- /*
- * Compute which five bytes need to be used
- * at the end of the name so the hash of the
- * obfuscated is the same as the hash of the
- * original. If any result in an invalid
- * character, flip a bit and arrange for a
- * corresponding bit in a neighboring byte
- * to be flipped as well. For the last
- * byte, the "neighbor" to change is the
- * first byte we're computing here.
- */
- newhash = rol32(newhash, 3) ^ hash;
+ /*
+ * Compute which five bytes need to be used at the
+ * end of the name so the hash of the obfuscated is
+ * the same as the hash of the original. If any
+ * result in an invalid character, flip a bit and
+ * arrange for a corresponding bit in a neighboring
+ * byte to be flipped as well. For the last byte,
+ * the "neighbor" to change is the first byte we're
+ * computing here.
+ */
+ newhash = rol32(newhash, 3) ^ hash;
+
+ high_bit = 0;
+ newp[namelen - 5] = (newhash >> 28) & 0x7f ^ high_bit;
+ if (is_invalid_char(newp[namelen - 5])) {
+ newp[namelen - 5] ^= 1;
+ high_bit = 0x80;
+ } else
high_bit = 0;
- newp[namelen - 5] = (newhash >> 28) & 0x7f ^ high_bit;
+ newp[namelen - 4] = (newhash >> 21) & 0x7f ^ high_bit;
+ if (is_invalid_char(newp[namelen - 4])) {
+ newp[namelen - 4] ^= 1;
+ high_bit = 0x80;
+ } else
+ high_bit = 0;
+
+ newp[namelen - 3] = (newhash >> 14) & 0x7f ^ high_bit;
+ if (is_invalid_char(newp[namelen - 3])) {
+ newp[namelen - 3] ^= 1;
+ high_bit = 0x80;
+ } else
+ high_bit = 0;
+
+ newp[namelen - 2] = (newhash >> 7) & 0x7f ^ high_bit;
+ if (is_invalid_char(newp[namelen - 2])) {
+ newp[namelen - 2] ^= 1;
+ high_bit = 0x80;
+ } else
+ high_bit = 0;
+
+ newp[namelen - 1] = (newhash >> 0) & 0x7f ^ high_bit;
+ if (is_invalid_char(newp[namelen - 1])) {
+ newp[namelen - 1] ^= 1;
+ high_bit = 0x80;
+ } else
+ high_bit = 0;
+
+ if (high_bit) {
+ newp[namelen - 5] ^= 0x10;
if (is_invalid_char(newp[namelen - 5])) {
- newp[namelen - 5] ^= 1;
- high_bit = 0x80;
- } else
- high_bit = 0;
-
- newp[namelen - 4] = (newhash >> 21) & 0x7f ^ high_bit;
- if (is_invalid_char(newp[namelen - 4])) {
- newp[namelen - 4] ^= 1;
- high_bit = 0x80;
- } else
- high_bit = 0;
-
- newp[namelen - 3] = (newhash >> 14) & 0x7f ^ high_bit;
- if (is_invalid_char(newp[namelen - 3])) {
- newp[namelen - 3] ^= 1;
- high_bit = 0x80;
- } else
- high_bit = 0;
-
- newp[namelen - 2] = (newhash >> 7) & 0x7f ^ high_bit;
- if (is_invalid_char(newp[namelen - 2])) {
- newp[namelen - 2] ^= 1;
- high_bit = 0x80;
- } else
- high_bit = 0;
-
- newp[namelen - 1] = (newhash >> 0) & 0x7f ^ high_bit;
- if (is_invalid_char(newp[namelen - 1])) {
- newp[namelen - 1] ^= 1;
- high_bit = 0x80;
- } else
- high_bit = 0;
-
- if (high_bit) {
- newp[namelen - 5] ^= 0x10;
- if (is_invalid_char(newp[namelen - 5])) {
- newp[namelen - 1] ^= 2;
- newp[namelen - 5] ^= 0x20;
- ASSERT(!is_invalid_char(newp[namelen -
1]));
- }
+ newp[namelen - 1] ^= 2;
+ newp[namelen - 5] ^= 0x20;
+ ASSERT(!is_invalid_char(newp[namelen - 1]));
}
- break;
}
ASSERT(libxfs_da_hashname(newname, namelen) == hash);
|