Uploaded image for project: 'Hadoop Common'
  1. Hadoop Common
  2. HADOOP-12345

Pad hostname correctly in CredentialsSys.java

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 2.6.0, 2.7.0
    • Fix Version/s: 2.8.0, 3.0.0-alpha1
    • Component/s: nfs
    • Labels:
      None
    • Target Version/s:

      Description

      Hi -

      There is a bug in the way hadoop-nfs sets the credential length in "Credentials" field of the NFS RPC packet when using AUTH_SYS

      In CredentialsSys.java, when we are writing the creds in to XDR object, we set the length as follows:

      // mStamp + mHostName.length + mHostName + mUID + mGID + mAuxGIDs.count
      96 mCredentialsLength = 20 + mHostName.getBytes().length;

      (20 corresponds to 4 bytes for mStamp, 4 bytes for mUID, 4 bytes for mGID, 4 bytes for length field of hostname, 4 bytes for number of aux 4 gids) and this is okay.

      However when we add the length of the hostname to this, we are not adding the extra padded bytes for the hostname (If the length is not a multiple of 4) and thus when the NFS server reads the packet, it returns GARBAGE_ARGS because it doesn't read the uid field when it is expected to read. I can reproduce this issue constantly on machines where the hostname length is not a multiple of 4.

      A possible fix is to do something this:
      int pad = mHostName.getBytes().length % 4;
      // mStamp + mHostName.length + mHostName + mUID + mGID + mAuxGIDs.count
      mCredentialsLength = 20 + mHostName.getBytes().length + pad;

      I would be happy to submit the patch but I need some help to commit into mainline. I haven't committed into Hadoop yet.

      Cheers!
      Pradeep

        Attachments

        1. HADOOP-12345.patch
          3 kB
          Pradeep Nayak Udupi Kadbet
        2. HADOOP-12345.001.patch
          4 kB
          Pradeep Nayak Udupi Kadbet
        3. HADOOP-12345.002.patch
          5 kB
          Pradeep Nayak Udupi Kadbet

          Activity

            People

            • Assignee:
              pradeepu Pradeep Nayak Udupi Kadbet
              Reporter:
              pradeepu Pradeep Nayak Udupi Kadbet
            • Votes:
              0 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

              • Due:
                Created:
                Updated:
                Resolved: