You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by wa...@apache.org on 2016/06/30 00:32:56 UTC

hadoop git commit: HADOOP-12345. Pad hostname correctly in CredentialsSys.java. Contributed by Pradeep Nayak Udupi Kadbet.

Repository: hadoop
Updated Branches:
  refs/heads/trunk 5c07c573d -> 846ada2de


HADOOP-12345. Pad hostname correctly in CredentialsSys.java. Contributed by Pradeep Nayak Udupi Kadbet.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/846ada2d
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/846ada2d
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/846ada2d

Branch: refs/heads/trunk
Commit: 846ada2de33f9840d6e60fd7339ecc2d71f277c7
Parents: 5c07c57
Author: Andrew Wang <wa...@apache.org>
Authored: Wed Jun 29 17:32:35 2016 -0700
Committer: Andrew Wang <wa...@apache.org>
Committed: Wed Jun 29 17:32:35 2016 -0700

----------------------------------------------------------------------
 .../hadoop/oncrpc/security/Credentials.java     |  6 +++
 .../hadoop/oncrpc/security/CredentialsSys.java  | 17 ++++++++
 .../oncrpc/security/TestCredentialsSys.java     | 42 ++++++++++++++++++++
 3 files changed, 65 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/846ada2d/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/security/Credentials.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/security/Credentials.java b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/security/Credentials.java
index 29c706b..639a1e5 100644
--- a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/security/Credentials.java
+++ b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/security/Credentials.java
@@ -17,6 +17,7 @@
  */
 package org.apache.hadoop.oncrpc.security;
 
+import com.google.common.annotations.VisibleForTesting;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.oncrpc.XDR;
@@ -66,4 +67,9 @@ public abstract class Credentials extends RpcAuthInfo {
   protected Credentials(AuthFlavor flavor) {
     super(flavor);
   }
+
+  @VisibleForTesting
+  int getCredentialLength() {
+    return mCredentialsLength;
+  }
 }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/846ada2d/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/security/CredentialsSys.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/security/CredentialsSys.java b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/security/CredentialsSys.java
index d13c361..4d39de3 100644
--- a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/security/CredentialsSys.java
+++ b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/oncrpc/security/CredentialsSys.java
@@ -20,6 +20,7 @@ package org.apache.hadoop.oncrpc.security;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 
+import com.google.common.annotations.VisibleForTesting;
 import org.apache.commons.io.Charsets;
 import org.apache.hadoop.oncrpc.XDR;
 
@@ -63,6 +64,11 @@ public class CredentialsSys extends Credentials {
     return mAuxGIDs;
   }
 
+  @VisibleForTesting
+  int getStamp() {
+    return mStamp;
+  }
+
   public void setGID(int gid) {
     this.mGID = gid;
   }
@@ -75,6 +81,11 @@ public class CredentialsSys extends Credentials {
     this.mStamp = stamp;
   }
 
+  @VisibleForTesting
+  void setHostName(String hostname) {
+    this.mHostName = hostname;
+  }
+
   @Override
   public void read(XDR xdr) {
     mCredentialsLength = xdr.readInt();
@@ -93,8 +104,14 @@ public class CredentialsSys extends Credentials {
 
   @Override
   public void write(XDR xdr) {
+    int padding = 0;
+    // Ensure there are padding bytes if hostname is not a multiple of 4.
+    padding = 4 - (mHostName.getBytes(Charsets.UTF_8).length % 4);
+    // padding bytes is zero if hostname is already a multiple of 4.
+    padding = padding % 4;
     // mStamp + mHostName.length + mHostName + mUID + mGID + mAuxGIDs.count
     mCredentialsLength = 20 + mHostName.getBytes(Charsets.UTF_8).length;
+    mCredentialsLength = mCredentialsLength + padding;
     // mAuxGIDs
     if (mAuxGIDs != null && mAuxGIDs.length > 0) {
       mCredentialsLength += mAuxGIDs.length * 4;

http://git-wip-us.apache.org/repos/asf/hadoop/blob/846ada2d/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/oncrpc/security/TestCredentialsSys.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/oncrpc/security/TestCredentialsSys.java b/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/oncrpc/security/TestCredentialsSys.java
index 2b9e339..745ac5c 100644
--- a/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/oncrpc/security/TestCredentialsSys.java
+++ b/hadoop-common-project/hadoop-nfs/src/test/java/org/apache/hadoop/oncrpc/security/TestCredentialsSys.java
@@ -33,6 +33,7 @@ public class TestCredentialsSys {
     CredentialsSys credential = new CredentialsSys();
     credential.setUID(0);
     credential.setGID(1);
+    credential.setStamp(1234);
     
     XDR xdr = new XDR();
     credential.write(xdr);
@@ -42,5 +43,46 @@ public class TestCredentialsSys {
     
     assertEquals(0, newCredential.getUID());
     assertEquals(1, newCredential.getGID());
+    assertEquals(1234, newCredential.getStamp());
+  }
+
+  @Test
+  public void testHostNameNotMultipleOf4() {
+    CredentialsSys credential = new CredentialsSys();
+    credential.setUID(0);
+    credential.setGID(1);
+    credential.setStamp(1234);
+    credential.setHostName("hadoop-nfs");
+
+    XDR xdr = new XDR();
+    credential.write(xdr);
+
+    CredentialsSys newCredential = new CredentialsSys();
+    newCredential.read(xdr.asReadOnlyWrap());
+
+    assertEquals(0, newCredential.getUID());
+    assertEquals(1, newCredential.getGID());
+    assertEquals(1234, newCredential.getStamp());
+    assertEquals(32, newCredential.getCredentialLength());
+  }
+
+  @Test
+  public void testHostNameMultipleOf4() {
+    CredentialsSys credential = new CredentialsSys();
+    credential.setUID(0);
+    credential.setGID(1);
+    credential.setStamp(1234);
+    credential.setHostName("apachehadoop");
+
+    XDR xdr = new XDR();
+    credential.write(xdr);
+
+    CredentialsSys newCredential = new CredentialsSys();
+    newCredential.read(xdr.asReadOnlyWrap());
+
+    assertEquals(0, newCredential.getUID());
+    assertEquals(1, newCredential.getGID());
+    assertEquals(1234, newCredential.getStamp());
+    assertEquals(32, newCredential.getCredentialLength());
   }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org