[PATCH 6/6] xfsprogs: use pointers to reference path characters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Switch from using array references to using pointers to
refer to the pathname characters as they get generated.

Signed-off-by: Alex Elder <aelder@xxxxxxx>

---
 db/metadump.c |   31 +++++++++++++++++--------------
 1 file changed, 17 insertions(+), 14 deletions(-)

Index: b/db/metadump.c
===================================================================
--- a/db/metadump.c
+++ b/db/metadump.c
@@ -444,6 +444,8 @@ generate_obfuscated_name(
 	    	name++;
 	do {
 		uchar_t	high_bit;
+		uchar_t	*first;
+		int	shift;
 
 		dup = 0;
 
@@ -454,8 +456,9 @@ generate_obfuscated_name(
 		 */
 		newhash = 0;
 		for (i = 0; i < namelen - 5; i++) {
-			newp[i] = random_filename_char();
-			newhash = newp[i] ^ rol32(newhash, 7);
+			*newp = random_filename_char();
+			newhash = *newp ^ rol32(newhash, 7);
+			newp++;
 		}
 
 		/*
@@ -470,24 +473,24 @@ generate_obfuscated_name(
 		 */
 		newhash = rol32(newhash, 3) ^ hash;
 
+		first = newp;
 		high_bit = 0;
-		for (i = 5; i > 0; i--) {
-		    	int shift = (i - 1) * 7;
-
-			newp[namelen - i] = (newhash >> shift) & 0x7f ^ high_bit;
-			if (is_invalid_char(newp[namelen - i])) {
-				newp[namelen - i] ^= 1;
+		for (shift = 28; shift >= 0; shift -= 7) {
+			*newp = newhash >> shift & 0x7f ^ high_bit;
+			if (is_invalid_char(*newp)) {
+				*newp ^= 1;
 				high_bit = 0x80;
 			} else
 				high_bit = 0;
+			newp++;
 		}
 
 		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]));
+			*first ^= 0x10;
+			if (is_invalid_char(*first)) {
+				*--newp ^= 2;
+				*first ^= 0x20;
+				ASSERT(!is_invalid_char(*newp));
 			}
 		}
 
@@ -495,7 +498,7 @@ generate_obfuscated_name(
 
 		for (p = nametable[hash % NAME_TABLE_SIZE]; p; p = p->next) {
 			if (p->hash == hash && p->namelen == namelen &&
-					memcmp(p->name, newname, namelen) == 0){
+					!memcmp(p->name, newname, namelen)) {
 				dup = 1;
 				break;
 			}


_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs


[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux