Solaris 10 build of saslauthd/auth_getpwent.c
Dale Moore
Dale.Moore at cs.cmu.edu
Fri Jun 19 15:11:40 EDT 2009
I am running into problems trying to build cyrus-sasl-2.1.23 .
I get the following error on saslauthd/auth_getpwent.c when compiling with
- SUNWspro-12-0907 C compiler
- using openssl 0.9.7m
- both solaris 9 and solaris 10
"/usr/include/crypt.h", line 22: syntax error before or at: (
"/usr/include/crypt.h", line 22: syntax error before or at: const
"/usr/include/crypt.h", line 22: syntax error before or at: )
"/usr/include/crypt.h", line 22: warning: syntax error: empty declaration
The problem is similar to
% cat > /usr/tmp/deleteme.c <<EOF
#include <stdlib.h>
#include <openssl/des.h>
#include <crypt.h>
EOF
% cc -I/usr/local/include -c /usr/tmp/deleteme.c
"/usr/include/crypt.h", line 22: syntax error before or at: (
"/usr/include/crypt.h", line 22: syntax error before or at: const
"/usr/include/crypt.h", line 22: syntax error before or at: )
The problem is that openssl/des.h does
#include <openssl/des_old.h>
And openssl/des_old.h does
#define des_crypt(b,s) \
DES_crypt((b),(s))
While solaris crypt.h does
extern char* des_crypt(const char *, const char *)
The result is
extern char* des_crypt((const char *), (const char *))
Which is lexically incorrect.
The setup in saslauthd/auth_getpwent.c looks like this...
# ifdef WITH_DES
# ifdef WITH_SSL_DES
# include <openssl/des.h>
# else
# include <des.h>
# endif /* WITH_SSL_DES */
# endif /* WITH_DES */
#ifdef HAVE_CRYPT_H
#include <crypt.h>
#endif
This problem does not occur with saslauthd/lak.c even though both include
many of the same include files. The saslauthd/lak.c has additional
boilerplate...
#ifdef HAVE_CRYPT_H
#include <crypt.h>
#endif
#ifdef HAVE_OPENSSL
#ifndef OPENSSL_DISABLE_OLD_DES_SUPPORT
#define OPENSSL_DISABLE_OLD_DES_SUPPORT
#endif
#include <openssl/evp.h>
#include <openssl/des.h>
#endif
Perhaps the lak.c style conditional includes could be used by auth_getpwent.c .
Or perhaps at least they should be somewhat consistent.
Do you agree?
More information about the Cyrus-sasl
mailing list