Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-21507

libpam4j problem under FreeBSD 10

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • pam-auth-plugin
    • None
    • FreeBSD 10.0

    Description

      Hi,

      I installed jenkins-1.545, under FreeBSD-10.0RC5.

      For this installation, I enabled a feature which I don't
      normally use. In the configuration setup,
      I enabled security, and used Unix security. This uses the
      PAM plugin for Jenkins.

      I enabled "Matrix security", and created one user "jenkins"
      and gave the user all the permissions.

      The "jenkins" user was already created in /etc/passwd.

      I validated that I could login as "jenkins" from the command-line.

      When I tried to login via the jenkins web interface as "jenkins",
      I saw this error traceback in /var/log/jenkins.log:

      JNA: Callback org.jvnet.libpam.PAM$1@
      66732173 threw the following exception:
      Invalid file format
      at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:166)
      at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:239)
      at com.sun.jna.Library$Handler.<init>(Library.java:140)
      at com.sun.jna.Native.loadLibrary(Native.java:366)
      at com.sun.jna.Native.loadLibrary(Native.java:351)
      at org.jvnet.libpam.impl.CLibrary$Instance.init(CLibrary.java:127)
      at org.jvnet.libpam.impl.CLibrary$Instance.access$000(CLibrary.java:124)
      at org.jvnet.libpam.impl.CLibrary.<clinit>(CLibrary.java:122)
      at org.jvnet.libpam.PAM$1.callback(PAM.java:80)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:239)
      at com.sun.jna.Library$Handler.<init>(Library.java:140)
      at com.sun.jna.Native.loadLibrary(Native.java:366)
      at com.sun.jna.Native.loadLibrary(Native.java:351)
      at org.jvnet.libpam.impl.CLibrary$Instance.init(CLibrary.java:127)
      at org.jvnet.libpam.impl.CLibrary$Instance.access$000(CLibrary.java:124)
      at org.jvnet.libpam.impl.CLibrary.<clinit>(CLibrary.java:122)
      at org.jvnet.libpam.PAM$1.callback(PAM.java:80)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      java:57)
      sorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:622)
      lbackReference.java:394)
      eference.java:424)
      at com.sun.jna.Native.invokeInt(Native Method)
      at com.sun.jna.Function.invoke(Function.java:344)
      at com.sun.jna.Function.invoke(Function.java:276)
      at com.sun.jna.Library$Handler.invoke(Library.java:216)

      and the login failed.

      After further investigation of the source code, it looks like in Jenkins,
      one of the modules
      used in PAM authentication is this one:
      http://libpam4j.kohsuke.org/

      libpam4j has some hardcoded logic about the size
      of certain C data structures such as "struct passwd" gets the logic
      wrong, becaue in FreeBSD, those structures have changed since
      this code was written.

      Attachments

        Issue Links

          Activity

            People

              rodrigc Craig Rodrigues
              rodrigc Craig Rodrigues
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: