Out of curiosity, I tried libpam4j on several Linux distro. It worked well on all of them, except Debian 5.0 (which is not really a recent OS). The stacktrace I got is:
JNA: Callback org.jvnet.libpam.PAM$1@6aad0302 threw the following exception:
java.lang.ExceptionInInitializerError
at java.lang.Class.initializeClass(libgcj.so.90)
at org.jvnet.libpam.PAM$1.callback(PAM.java:80)
at java.lang.reflect.Method.invoke(libgcj.so.90)
at com.sun.jna.CallbackReference$DefaultCallbackProxy.invokeCallback(CallbackReference.java:471)
at com.sun.jna.CallbackReference$DefaultCallbackProxy.callback(CallbackReference.java:501)
at com.sun.jna.Function.invoke(Function.java:383)
at com.sun.jna.Function.invoke(Function.java:315)
at com.sun.jna.Library$Handler.invoke(Library.java:212)
at $Proxy0.pam_authenticate(Unknown Source:0)
at org.jvnet.libpam.PAM.authenticate(PAM.java:124)
at Main.main(Main.java:19)
Caused by: java.lang.IllegalArgumentException: incompatible return types: public abstract org.jvnet.libpam.impl.LinuxPasswd org.jvnet.libpam.impl.LinuxCLibrary.getpwnam(java.lang.String), public abstract org.jvnet.libpam.impl.CLibrary$passwd org.jvnet.libpam.impl.CLibrary.getpwnam(java.lang.String)
at java.lang.reflect.Proxy$ProxySignature.checkCompatibility(libgcj.so.90)
at java.lang.reflect.Proxy$ProxyData.getProxyData(libgcj.so.90)
at java.lang.reflect.Proxy.getProxyClass(libgcj.so.90)
at java.lang.reflect.Proxy.newProxyInstance(libgcj.so.90)
at com.sun.jna.Native.loadLibrary(Native.java:415)
at com.sun.jna.Native.loadLibrary(Native.java:391)
at org.jvnet.libpam.impl.CLibrary$Instance.init(CLibrary.java:143)
at org.jvnet.libpam.impl.CLibrary$Instance.access$000(CLibrary.java:134)
at org.jvnet.libpam.impl.CLibrary.<clinit>(CLibrary.java:132)
at java.lang.Class.initializeClass(libgcj.so.90)
...10 more
I looked for the definition of struct passwd on Debian 5, and according to the manpage, it is the same as described in LinuxPasswd.java.
By curiosity, what would it take to add Debian 5 support?
I'm very new to PAM and JNA, so I would like to know if I can consider doing it if needed in the future.
Hi,
Out of curiosity, I tried libpam4j on several Linux distro. It worked well on all of them, except Debian 5.0 (which is not really a recent OS). The stacktrace I got is:
I looked for the definition of
struct passwd
on Debian 5, and according to the manpage, it is the same as described in LinuxPasswd.java.By curiosity, what would it take to add Debian 5 support? I'm very new to PAM and JNA, so I would like to know if I can consider doing it if needed in the future.
Thanks!