Re: mcserv / slackware / shadow



hi pavel!

thank you very much for your reply.


On Thu, Aug 22, 2002 at 12:42:55PM -0400, Pavel Roskin wrote:

I appreciate that you finally found time to report this problem.

i accept the blame for the delay - my only excuse is that i was (am?) 
thinking it to be a problem i have caused myself, which would 
accordingly 'disappear' come time... ;-)


You should not be patching config.h.in - it is generated by autoheader 
from configure.in.

if i don't, it doesn't compile:

mcserv.c: In function `do_classic_auth':
mcserv.c:839: warning: implicit declaration of function `getspnam'
mcserv.c:839: warning: assignment makes pointer from integer without a cast
mcserv.c:842: dereferencing pointer to incomplete type
make[3]: *** [mcserv.o] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

i never invoked autoheader myself, though - wouldn't dare.
should i?


The logic in configure.in is to check for shadow.h only if function 
pw_encrypt has been found in -lshadow. 

it doesn't (from config.log):

configure:7863: checking for pw_encrypt in -lshadow
configure:7896: gcc -o conftest -O3 -Wall  -I$(top_srcdir) -s conftest.c -lshadow   -L/opt/gnome/lib -lglib 
&5
/usr/i386-slackware-linux/bin/ld: cannot find -lshadow
collect2: ld returned 1 exit status
configure:7899: $? = 1
configure: failed program was:
#line 7870 "configure"


You must have pw_encrypt in some other library. 
Maybe it's in libcrypt? 

i think i don't have or use a pw_encrypt function; rather i assume the 
crypt function of libcrypt (part of openssl) is used.
from the generated config.h:

[...]

/* Define to 1 if you have the `crypt' function. */
#define HAVE_CRYPT 1

/* Define to 1 if you have the <crypt.h> header file. */
#define HAVE_CRYPT_H 1

[...]

/* Define if PAM (Pluggable Authentication Modules) is available */
/* #undef HAVE_PAM */

[...]

/* Define to 1 if you have the <shadow.h> header file. */
/* #undef HAVE_SHADOW_H */

/* Define to 1 if you have the <shadow/shadow.h> header file. */
/* #undef HAVE_SHADOW_SHADOW_H */

[...]

/* Define to use shadow passwords on Linux */
/* #undef LINUX_SHADOW */

[...]

/* Define if function `crypt' needs a prototype */
/* #undef NEED_CRYPT_PROTOTYPE */

[...]


What happens if you don't add "-lcrypt" by hand?

it doesn't work, either: invalid password from mfcs.


My guess is that mcserv is using PAM, and it's configured not to accept 
the password for some reason.  That's one problem.

i don't think i have pam; i think my crypt library comes with openssl.
but i do have a shadow password file.

The other problem is that the shadow support is not enabled on your
system.  If you find the library that defines pw_encrypt(), it will be
easy to fix properly.  Sorry, I don't have Slackware around.
 
seams i 'fixed' something the wrong way and refixed it to make it work, 
finally?


You probably also have the third problem, that you fixed by patching
mcserv.c.  But you should know that better.

maybe i only 'fixed' the things i twisted by cheating on config.h.in 
and -lcrypt...


thank you very much for your time!

regards,
christian

-- 



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