From dc07e765f263ef459dcd2afd1ece01cfc85a0edd Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Wed, 19 May 1999 01:12:33 +0000 Subject: [PATCH] Vienna Bulk Commit This commit includes many changes. All changes compile under NT but have not been tested under UNIX. A Summary of changes (likely incomplete): NT changes: Removed lint. Clean up configuration support for "Debug", "Release", "SDebug", and "SRelease" configurations. Share output directories for clients, libraries, and slapd. (maybe they should be combined further and moved to build/{,S}{Debug,Release}). Enable threading when _MT is defined. Enable debuging when _DEBUG is defined. Disable setting of NDEBUG under Release/SRelease. Asserts are disabled in when LDAP_DEBUG is not defined. Added 'build/main.dsp' Master project. Removed non-slapd projects from slapd.dsp (see main.dsp). Removed replaced many uses of _WIN32 macro with feature based macros. ldap_cdefs.h changes #define LDAP_CONST const (see below) #define LDAP_F(type) LDAP_F_PRE type LDAP_F_POST To allow specifiers to be added before and after the type declaration. (For DLL handling) LBER/LDAP changes Namespace changes: s/lber_/ber_/ for here and there. s/NAME_ERROR/LDAP_NAME_ERROR/g Deleted NULLMSG and other NULL* macros for namespace reasons. "const" libraries. Installed headers (ie: lber.h, ldap.h) use LDAP_CONST macro. Normally set to 'const' when __STDC__. Can be set externally to enable/disable 'constification' of external interface. Internal interface always uses 'const'. Did not fix warnings in -lldif (in lieu of new LDIF parser). Added _ext API implementations (excepting search and bind). Need to implement ldap_int_get_controls() for reponses with controls. Added numberous assert() checks. LDAP_R _MT defines HAVE_NT_THREADS Added numberous assert() checks. Changed ldap_pthread_t back to unsigned long. Used cast to HANDLE in _join(). LDBM Replaced _WIN32 with HAVE_SYSLOG ud Added version string if MKVERSION is not defined. (MKVERSION needs to be set under UNIX). slapd Made connection sockbuf field a pointer to a sockbuf. This removed slap.h dependency on lber-int.h. lber-int.h now only included by those files needing to mess with the sockbuf. Used ber_* functions/macros to access sockbuf internals whenever possible. Added version string if MKVERSION is not defined. (MKVERSION needs to be set under UNIX). Removed FD_SET unsigned lint slapd/tools Used EXEEXT to added ".exe" to routines. Need to define EXEEXT under UNIX. ldappasswd Added ldappasswd.dsp. Ported to NT. Used getpid() to seed rand(). nt_debug Minor cleanup. Added "portable.h" include and used where appropriate. Added const to char* format argument. --- clients/gopher/go500.c | 2 +- clients/gopher/go500gw.c | 2 +- clients/tools/ldapdelete.c | 2 +- clients/tools/ldapdelete.dsp | 72 +- clients/tools/ldapmodify.c | 6 +- clients/tools/ldapmodify.dsp | 80 +- clients/tools/ldapmodify.dsw | 3 + clients/tools/ldapmodrdn.c | 2 +- clients/tools/ldapmodrdn.dsp | 72 +- clients/tools/ldappasswd.c | 27 +- clients/tools/ldapsearch.c | 4 +- clients/tools/ldapsearch.dsp | 68 +- clients/ud/main.c | 16 +- clients/ud/ud.dsp | 24 +- clients/ud/ud.dsw | 15 + clients/ud/ud.h | 9 + contrib/saucer/main.c | 2 +- include/ac/assert.h | 4 +- include/ac/socket.h | 5 + include/ac/time.h | 8 +- include/avl.h | 24 +- include/disptmpl.h | 36 +- include/getopt-compat.h | 6 +- include/lber.h | 396 ++++++-- include/lber_pvt.h | 9 +- include/ldap.h | 1148 +++++++++++++++------- include/ldap_cdefs.h | 16 +- include/ldap_features.h.nt | 4 +- include/ldap_log.h | 4 +- include/ldap_pvt.h | 17 +- include/ldap_pvt_thread.h | 87 +- include/ldif.h | 23 +- include/lutil.h | 36 +- include/lutil_lockf.h | 7 +- include/lutil_md5.h | 12 +- include/lutil_sha1.h | 21 +- include/portable.h.nt | 14 +- include/srchpref.h | 10 +- libraries/libavl/libavl.dsp | 34 +- libraries/libavl/testavl.dsp | 70 +- libraries/liblber/assert.c | 2 +- libraries/liblber/bprint.c | 90 +- libraries/liblber/decode.c | 76 +- libraries/liblber/dtest.c | 12 +- libraries/liblber/dtest.dsp | 72 +- libraries/liblber/encode.c | 96 +- libraries/liblber/etest.c | 26 +- libraries/liblber/etest.dsp | 72 +- libraries/liblber/idtest.c | 3 +- libraries/liblber/idtest.dsp | 72 +- libraries/liblber/io.c | 117 ++- libraries/liblber/lber-int.h | 94 +- libraries/liblber/liblber.dsp | 28 +- libraries/liblber/options.c | 12 +- libraries/liblber/sockbuf.c | 210 ++-- libraries/libldap/abandon.c | 106 +- libraries/libldap/add.c | 103 +- libraries/libldap/apitest.c | 92 +- libraries/libldap/apitest.dsp | 64 +- libraries/libldap/apitest.dsw | 15 + libraries/libldap/bind.c | 8 +- libraries/libldap/cache.c | 10 +- libraries/libldap/cldap.c | 12 +- libraries/libldap/compare.c | 99 +- libraries/libldap/controls.c | 108 +- libraries/libldap/delete.c | 88 +- libraries/libldap/error.c | 2 +- libraries/libldap/friendly.c | 5 +- libraries/libldap/getdn.c | 43 +- libraries/libldap/getentry.c | 2 +- libraries/libldap/getfilter.c | 30 +- libraries/libldap/getvalues.c | 4 +- libraries/libldap/ldap-int.h | 55 +- libraries/libldap/libldap.dsp | 24 +- libraries/libldap/ltest.dsp | 72 +- libraries/libldap/modify.c | 93 +- libraries/libldap/modrdn.c | 239 +++-- libraries/libldap/open.c | 22 +- libraries/libldap/options.c | 82 +- libraries/libldap/os-ip.c | 20 +- libraries/libldap/print.c | 4 +- libraries/libldap/references.c | 2 +- libraries/libldap/request.c | 21 +- libraries/libldap/result.c | 10 +- libraries/libldap/sbind.c | 4 +- libraries/libldap/search.c | 55 +- libraries/libldap/sort.c | 4 +- libraries/libldap/ufn.c | 13 +- libraries/libldap/unbind.c | 43 +- libraries/libldap/url.c | 72 +- libraries/libldap_r/libldap_r.dsp | 78 +- libraries/libldap_r/rdwr.c | 32 + libraries/libldap_r/thr_nt.c | 3 +- libraries/libldbm/ldbm.c | 18 +- libraries/libldbm/libldbm.dsp | 59 +- libraries/libldif/libldif.dsp | 32 +- libraries/libldif/line64.c | 18 +- libraries/liblutil/liblutil.dsp | 12 +- servers/ldapd/main.c | 12 +- servers/ldapd/request.c | 4 +- servers/ldapd/result.c | 4 +- servers/ldapd/search.c | 2 +- servers/slapd/back-ldbm/backldbm.dsp | 60 +- servers/slapd/bind.c | 14 +- servers/slapd/connection.c | 56 +- servers/slapd/daemon.c | 24 +- servers/slapd/libslapd.dsp | 68 +- servers/slapd/main.c | 17 +- servers/slapd/nt_debug.c | 10 +- servers/slapd/result.c | 13 +- servers/slapd/slap.h | 4 +- servers/slapd/slapd.dsp | 80 +- servers/slapd/slapd.dsw | 249 +---- servers/slapd/tools/ldbmcat.dsp | 72 +- servers/slapd/tools/ldbmtest.dsp | 64 +- servers/slapd/tools/ldif.dsp | 72 +- servers/slapd/tools/ldif2id2children.dsp | 71 +- servers/slapd/tools/ldif2id2entry.dsp | 70 +- servers/slapd/tools/ldif2index.dsp | 70 +- servers/slapd/tools/ldif2ldbm.c | 12 +- servers/slapd/tools/ldif2ldbm.dsp | 70 +- servers/slapd/wsa_err.c | 2 + servers/slurpd/args.c | 2 +- 123 files changed, 4573 insertions(+), 1806 deletions(-) diff --git a/clients/gopher/go500.c b/clients/gopher/go500.c index 54fff23d92..fa9d9b37a2 100644 --- a/clients/gopher/go500.c +++ b/clients/gopher/go500.c @@ -171,7 +171,7 @@ main( int argc, char **argv ) myname = strdup( myname + 1 ); if ( debug ) { - lber_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &debug); + ber_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &debug); ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &debug); } diff --git a/clients/gopher/go500gw.c b/clients/gopher/go500gw.c index 09c6df2a49..eeb4784fdb 100644 --- a/clients/gopher/go500gw.c +++ b/clients/gopher/go500gw.c @@ -195,7 +195,7 @@ main (int argc, char **argv ) myname = strdup( myname + 1 ); if ( debug ) { - lber_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &debug); + ber_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &debug); ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &debug); } diff --git a/clients/tools/ldapdelete.c b/clients/tools/ldapdelete.c index 35b3af8fba..2d6f00351f 100644 --- a/clients/tools/ldapdelete.c +++ b/clients/tools/ldapdelete.c @@ -114,7 +114,7 @@ main( int argc, char **argv ) } if ( debug ) { - lber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug ); + ber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug ); ldap_set_option( NULL, LDAP_OPT_DEBUG_LEVEL, &debug ); } diff --git a/clients/tools/ldapdelete.dsp b/clients/tools/ldapdelete.dsp index 59aa552e5d..6a2045132a 100644 --- a/clients/tools/ldapdelete.dsp +++ b/clients/tools/ldapdelete.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=ldapdelete - Win32 Single Debug +CFG=ldapdelete - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,7 +13,7 @@ CFG=ldapdelete - Win32 Single Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "ldapdelete.mak" CFG="ldapdelete - Win32 Single Debug" +!MESSAGE NMAKE /f "ldapdelete.mak" CFG="ldapdelete - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE @@ -21,6 +21,10 @@ CFG=ldapdelete - Win32 Single Debug "Win32 (x86) Console Application") !MESSAGE "ldapdelete - Win32 Single Release" (based on\ "Win32 (x86) Console Application") +!MESSAGE "ldapdelete - Win32 Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "ldapdelete - Win32 Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -39,8 +43,8 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "ldapdele" -# PROP Intermediate_Dir "ldapdele" +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\ldapdelete" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -52,7 +56,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 oldap32.lib olber32.lib olutil32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\Debug" -# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\Debug" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\SDebug" !ELSEIF "$(CFG)" == "ldapdelete - Win32 Single Release" @@ -64,19 +68,69 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "ldapdel0" -# PROP Intermediate_Dir "ldapdel0" +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\ldapdelete" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 oldap32.lib olber32.lib olutil32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\libraries\Release" +# ADD LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 /out:"SRelease/ldapdelete.exe" /libpath:"..\..\libraries\SRelease" + +!ELSEIF "$(CFG)" == "ldapdelete - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ldapdel1" +# PROP BASE Intermediate_Dir "ldapdel1" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\Debug" +# PROP Intermediate_Dir "Debug\ldapdelete" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\Debug" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\Debug" + +!ELSEIF "$(CFG)" == "ldapdelete - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ldapdel2" +# PROP BASE Intermediate_Dir "ldapdel2" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "Release\ldapdelete" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"Release/ldapdelete.exe" /libpath:"..\..\libraries\Release" # ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"Release/ldapdelete.exe" /libpath:"..\..\libraries\Release" !ENDIF @@ -85,6 +139,8 @@ LINK32=link.exe # Name "ldapdelete - Win32 Single Debug" # Name "ldapdelete - Win32 Single Release" +# Name "ldapdelete - Win32 Debug" +# Name "ldapdelete - Win32 Release" # Begin Source File SOURCE=.\ldapdelete.c diff --git a/clients/tools/ldapmodify.c b/clients/tools/ldapmodify.c index 44c04d0058..d5926b6dd6 100644 --- a/clients/tools/ldapmodify.c +++ b/clients/tools/ldapmodify.c @@ -1,3 +1,7 @@ +/* + * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + */ /* ldapmodify.c - generic program to modify or add entries using LDAP */ #include "portable.h" @@ -200,7 +204,7 @@ main( int argc, char **argv ) } if ( debug ) { - lber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug ); + ber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug ); ldap_set_option( NULL, LDAP_OPT_DEBUG_LEVEL, &debug ); ldif_debug = debug; } diff --git a/clients/tools/ldapmodify.dsp b/clients/tools/ldapmodify.dsp index f633dea9a4..e260802ab2 100644 --- a/clients/tools/ldapmodify.dsp +++ b/clients/tools/ldapmodify.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=ldapmodify - Win32 Single Debug +CFG=ldapmodify - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,7 +13,7 @@ CFG=ldapmodify - Win32 Single Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "ldapmodify.mak" CFG="ldapmodify - Win32 Single Debug" +!MESSAGE NMAKE /f "ldapmodify.mak" CFG="ldapmodify - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE @@ -21,6 +21,10 @@ CFG=ldapmodify - Win32 Single Debug "Win32 (x86) Console Application") !MESSAGE "ldapmodify - Win32 Single Release" (based on\ "Win32 (x86) Console Application") +!MESSAGE "ldapmodify - Win32 Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "ldapmodify - Win32 Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -39,8 +43,8 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "ldapmodi" -# PROP Intermediate_Dir "ldapmodi" +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\ldapmodify" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -64,8 +68,8 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "ldapmod0" -# PROP Intermediate_Dir "ldapmod0" +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\ldapmodify" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -79,27 +83,67 @@ LINK32=link.exe # ADD BASE LINK32 oldap32.lib olber32.lib oldif32.lib olutil32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\libraries\Release" # ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"Release/ldapmodify.exe" /libpath:"..\..\libraries\Release" +!ELSEIF "$(CFG)" == "ldapmodify - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ldapmod1" +# PROP BASE Intermediate_Dir "ldapmod1" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\Debug" +# PROP Intermediate_Dir "Debug\ldapmodify" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /out:"Release/ldapmodify.exe" /pdbtype:sept /libpath:"..\..\libraries\Debug" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /out:"Release/ldapmodify.exe" /pdbtype:sept /libpath:"..\..\libraries\Debug" + +!ELSEIF "$(CFG)" == "ldapmodify - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ldapmod2" +# PROP BASE Intermediate_Dir "ldapmod2" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "Release\ldapmodify" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"Release/ldapmodify.exe" /libpath:"..\..\libraries\Release" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"Release/ldapmodify.exe" /libpath:"..\..\libraries\Release" + !ENDIF # Begin Target # Name "ldapmodify - Win32 Single Debug" # Name "ldapmodify - Win32 Single Release" -# Begin Group "Source" - -# PROP Default_Filter ".c" +# Name "ldapmodify - Win32 Debug" +# Name "ldapmodify - Win32 Release" # Begin Source File SOURCE=.\ldapmodify.c # End Source File -# End Group -# Begin Group "Headers" - -# PROP Default_Filter ".h" -# Begin Source File - -SOURCE=..\..\include\portable.h -# End Source File -# End Group # End Target # End Project diff --git a/clients/tools/ldapmodify.dsw b/clients/tools/ldapmodify.dsw index 64470316b9..c8186761c3 100644 --- a/clients/tools/ldapmodify.dsw +++ b/clients/tools/ldapmodify.dsw @@ -47,6 +47,9 @@ Package=<5> Package=<4> {{{ + Begin Project Dependency + Project_Dep_Name liblber + End Project Dependency }}} ############################################################################### diff --git a/clients/tools/ldapmodrdn.c b/clients/tools/ldapmodrdn.c index 9e0b920726..446c24bfb0 100644 --- a/clients/tools/ldapmodrdn.c +++ b/clients/tools/ldapmodrdn.c @@ -165,7 +165,7 @@ main(int argc, char **argv) } if ( debug ) { - lber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug ); + ber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug ); ldap_set_option( NULL, LDAP_OPT_DEBUG_LEVEL, &debug ); } diff --git a/clients/tools/ldapmodrdn.dsp b/clients/tools/ldapmodrdn.dsp index 39d6474a9a..bdb46da26d 100644 --- a/clients/tools/ldapmodrdn.dsp +++ b/clients/tools/ldapmodrdn.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=ldapmodrdn - Win32 Single Debug +CFG=ldapmodrdn - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,7 +13,7 @@ CFG=ldapmodrdn - Win32 Single Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "ldapmodrdn.mak" CFG="ldapmodrdn - Win32 Single Debug" +!MESSAGE NMAKE /f "ldapmodrdn.mak" CFG="ldapmodrdn - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE @@ -21,6 +21,10 @@ CFG=ldapmodrdn - Win32 Single Debug "Win32 (x86) Console Application") !MESSAGE "ldapmodrdn - Win32 Single Release" (based on\ "Win32 (x86) Console Application") +!MESSAGE "ldapmodrdn - Win32 Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "ldapmodrdn - Win32 Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -39,8 +43,8 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "ldapmodr" -# PROP Intermediate_Dir "ldapmodr" +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\ldapmodrdn" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -52,7 +56,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 oldap32.lib olber32.lib olutil32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\Debug" -# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\Debug" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\SDebug" !ELSEIF "$(CFG)" == "ldapmodrdn - Win32 Single Release" @@ -64,12 +68,12 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "ldapmod0" -# PROP Intermediate_Dir "ldapmod0" +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\ldapmodrdn" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -77,6 +81,56 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 oldap32.lib olber32.lib olutil32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\libraries\Release" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"Release/ldapmodrdn.exe" /libpath:"..\..\libraries\SRelease" + +!ELSEIF "$(CFG)" == "ldapmodrdn - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ldapmod1" +# PROP BASE Intermediate_Dir "ldapmod1" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\Debug" +# PROP Intermediate_Dir "Debug\ldapmodrdn" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\Debug" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\Debug" + +!ELSEIF "$(CFG)" == "ldapmodrdn - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ldapmod2" +# PROP BASE Intermediate_Dir "ldapmod2" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "Release\ldapmodrdn" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"Release/ldapmodrdn.exe" /libpath:"..\..\libraries\Release" # ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"Release/ldapmodrdn.exe" /libpath:"..\..\libraries\Release" !ENDIF @@ -85,6 +139,8 @@ LINK32=link.exe # Name "ldapmodrdn - Win32 Single Debug" # Name "ldapmodrdn - Win32 Single Release" +# Name "ldapmodrdn - Win32 Debug" +# Name "ldapmodrdn - Win32 Release" # Begin Source File SOURCE=.\ldapmodrdn.c diff --git a/clients/tools/ldappasswd.c b/clients/tools/ldappasswd.c index fad4c106db..4b5ac508a0 100644 --- a/clients/tools/ldappasswd.c +++ b/clients/tools/ldappasswd.c @@ -15,13 +15,14 @@ #include "portable.h" -#include #include #include -#include +#include #include +#include #include +#include #include #include @@ -121,20 +122,15 @@ pw_encode (unsigned char *passwd, Salt * salt, unsigned int len) void make_salt (Salt * salt, unsigned int len) { - struct timeval tv; if (!salt) return; - /* seed random number generator */ - gettimeofday (&tv, NULL); - srand (tv.tv_usec); - salt->len = len; salt->salt = (unsigned char *)malloc (len); for (len = 0; len < salt->len; len++) - salt->salt[len] = (tv.tv_usec ^ rand ()) & 0xff; + salt->salt[len] = rand () & 0xff; } /* @@ -561,13 +557,26 @@ main (int argc, char *argv[]) } if ( debug ) { - lber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug ); + ber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug ); ldap_set_option( NULL, LDAP_OPT_DEBUG_LEVEL, &debug ); } #ifdef SIGPIPE (void) SIGNAL( SIGPIPE, SIG_IGN ); #endif + /* seed random number generator */ + +#ifdef HAVE_GETTIMEOFDAY + /* this is of questionable value + * gettimeofday not provide much usec + */ + struct timeval tv; + gettimeofday (&tv, NULL); + srand (tv.tv_usec); +#else + /* The traditional seed */ + srand((unsigned)time( NULL )); +#endif /* connect to server */ if ((ld = ldap_init (ldaphost, ldapport)) == NULL) diff --git a/clients/tools/ldapsearch.c b/clients/tools/ldapsearch.c index b55c46121d..315a6ad60d 100644 --- a/clients/tools/ldapsearch.c +++ b/clients/tools/ldapsearch.c @@ -255,7 +255,7 @@ main( int argc, char **argv ) } if ( debug ) { - lber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug ); + ber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &debug ); ldap_set_option( NULL, LDAP_OPT_DEBUG_LEVEL, &debug ); ldif_debug = debug; } @@ -406,7 +406,7 @@ static int dosearch( ( *sortattr == '\0' ) ? NULL : sortattr, strcasecmp ); matches = 0; first = 1; - for ( e = ldap_first_entry( ld, res ); e != NULLMSG; + for ( e = ldap_first_entry( ld, res ); e != NULL; e = ldap_next_entry( ld, e ) ) { matches++; if ( !first ) { diff --git a/clients/tools/ldapsearch.dsp b/clients/tools/ldapsearch.dsp index 6eddc3297d..4e3a4448ce 100644 --- a/clients/tools/ldapsearch.dsp +++ b/clients/tools/ldapsearch.dsp @@ -21,6 +21,10 @@ CFG=ldapsearch - Win32 Single Debug "Win32 (x86) Console Application") !MESSAGE "ldapsearch - Win32 Single Release" (based on\ "Win32 (x86) Console Application") +!MESSAGE "ldapsearch - Win32 Release" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "ldapsearch - Win32 Debug" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -39,8 +43,8 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "ldapsear" -# PROP Intermediate_Dir "ldapsear" +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\ldapsearch" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -52,7 +56,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 oldap32.lib olber32.lib oldif32.lib olutil32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\Debug" -# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\Debug" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\SDebug" !ELSEIF "$(CFG)" == "ldapsearch - Win32 Single Release" @@ -64,12 +68,12 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "ldapsea0" -# PROP Intermediate_Dir "ldapsea0" +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\ldapsearch" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -77,14 +81,66 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 oldap32.lib olber32.lib oldif32.lib olutil32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\libraries\Release" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"Release/ldapsearch.exe" /libpath:"..\..\libraries\SRelease" + +!ELSEIF "$(CFG)" == "ldapsearch - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ldapsea1" +# PROP BASE Intermediate_Dir "ldapsea1" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "Release\ldapsearch" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"Release/ldapsearch.exe" /libpath:"..\..\libraries\SRelease" # ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"Release/ldapsearch.exe" /libpath:"..\..\libraries\Release" +!ELSEIF "$(CFG)" == "ldapsearch - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ldapsea2" +# PROP BASE Intermediate_Dir "ldapsea2" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\Debug" +# PROP Intermediate_Dir "Debug\ldapsearch" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /GX /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"Release/ldapsearch.exe" /libpath:"..\..\libraries\SRelease" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /out:"Release/ldapsearch.exe" /libpath:"..\..\libraries\Debug" + !ENDIF # Begin Target # Name "ldapsearch - Win32 Single Debug" # Name "ldapsearch - Win32 Single Release" +# Name "ldapsearch - Win32 Release" +# Name "ldapsearch - Win32 Debug" # Begin Source File SOURCE=.\ldapsearch.c diff --git a/clients/ud/main.c b/clients/ud/main.c index 61de28d472..42395a042e 100644 --- a/clients/ud/main.c +++ b/clients/ud/main.c @@ -1,3 +1,7 @@ +/* + * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + */ /* * Copyright (c) 1991, 1992, 1993 * Regents of the University of Michigan. All rights reserved. @@ -43,18 +47,13 @@ #include #include "ud.h" -#ifndef lint -char copyright[] = -"@(#) Copyright (c) 1991, 1992, 1993 Regents of the University of Michigan.\nAll rights reserved.\n"; -#endif - /* * Used with change_base() to indicate which base we are changing. */ #define BASE_SEARCH 0 #define BASE_GROUPS 1 -#define iscom(x) (!strncasecmp(x, cmd, strlen(cmd))) +#define iscom(x) (!strncasecmp((x), cmd, strlen(cmd))) static char *server = NULL; static char *config_file = UD_CONFIG_FILE; @@ -83,6 +82,9 @@ int debug; /* debug flag */ #endif int ldebug; /* library debug flag */ +#ifndef HAVE_MKVERSION +char Version[] = "OpenLDAP UserDirectory (ud)"; +#endif int main( int argc, char **argv ) @@ -552,7 +554,7 @@ initialize_client( void ) #endif if (ldebug) { - lber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &ldebug); + ber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &ldebug); ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &ldebug); } diff --git a/clients/ud/ud.dsp b/clients/ud/ud.dsp index f8ec50b5cd..5b8da9391f 100644 --- a/clients/ud/ud.dsp +++ b/clients/ud/ud.dsp @@ -39,12 +39,12 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "Release\ud" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -63,12 +63,12 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" +# PROP Output_Dir "..\Debug" +# PROP Intermediate_Dir "Debug\ud" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe @@ -88,8 +88,8 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "ud___Wi0" -# PROP Intermediate_Dir "ud___Wi0" +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\ud" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -101,7 +101,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 oldap32.lib olber32.lib oldif32.lib olutil32.lib ws2_32.lib hs_regex.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\libraries\Release" -# ADD LINK32 oldap32.lib olber32.lib oldif32.lib olutil32.lib ws2_32.lib hs_regex.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\libraries\Release" +# ADD LINK32 oldap32.lib olber32.lib oldif32.lib olutil32.lib ws2_32.lib hs_regex.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\libraries\SRelease" !ELSEIF "$(CFG)" == "ud - Win32 Single Debug" @@ -113,8 +113,8 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "ud___Wi1" -# PROP Intermediate_Dir "ud___Wi1" +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\ud" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -126,7 +126,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 oldap32.lib olber32.lib oldif32.lib olutil32.lib ws2_32.lib hs_regex.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\Debug" -# ADD LINK32 oldap32.lib olber32.lib oldif32.lib olutil32.lib ws2_32.lib hs_regex.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\Debug" +# ADD LINK32 oldap32.lib olber32.lib oldif32.lib olutil32.lib ws2_32.lib hs_regex.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\libraries\SDebug" !ENDIF diff --git a/clients/ud/ud.dsw b/clients/ud/ud.dsw index 5350cb77ed..873331beab 100644 --- a/clients/ud/ud.dsw +++ b/clients/ud/ud.dsw @@ -27,6 +27,18 @@ Package=<4> ############################################################################### +Project: "libldif"=..\..\libraries\libldif\libldif.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + Project: "liblutil"=..\..\libraries\liblutil\liblutil.dsp - Package Owner=<4> Package=<5> @@ -56,6 +68,9 @@ Package=<4> Begin Project Dependency Project_Dep_Name liblutil End Project Dependency + Begin Project Dependency + Project_Dep_Name libldif + End Project Dependency }}} ############################################################################### diff --git a/clients/ud/ud.h b/clients/ud/ud.h index a90765f6e8..4de87a0116 100644 --- a/clients/ud/ud.h +++ b/clients/ud/ud.h @@ -1,3 +1,12 @@ +/* + * Copyright 1998,1999 The OpenLDAP Foundation, Redwood City, California, USA + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted only + * as authorized by the OpenLDAP Public License. A copy of this + * license is available at http://www.OpenLDAP.org/license.html or + * in file LICENSE in the top-level directory of the distribution. + */ /* * Copyright (c) 1991, 1992, 1993 * Regents of the University of Michigan. All rights reserved. diff --git a/contrib/saucer/main.c b/contrib/saucer/main.c index 8d866dcd44..59ea5e4d85 100644 --- a/contrib/saucer/main.c +++ b/contrib/saucer/main.c @@ -613,7 +613,7 @@ int main(int argc, char **argv) case 'd': #ifdef LDAP_DEBUG tmp = atoi(optarg); - lber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &tmp); + ber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &tmp); ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &tmp); #endif break; diff --git a/include/ac/assert.h b/include/ac/assert.h index 7a9044dab0..a65e1c0cc2 100644 --- a/include/ac/assert.h +++ b/include/ac/assert.h @@ -25,11 +25,11 @@ * create a replacement and hope it works */ -void lber_pvt_assert(char* file, int line, char* test); +void ber_pvt_assert(char* file, int line, char* test); #define assert(test) \ ((test) \ ? (void)0 \ - : lber_pvt_assert( __FILE__, __LINE__, LDAP_STRING(test)) ) + : ber_pvt_assert( __FILE__, __LINE__, LDAP_STRING(test)) ) #endif diff --git a/include/ac/socket.h b/include/ac/socket.h index 8fd3dce772..d076763146 100644 --- a/include/ac/socket.h +++ b/include/ac/socket.h @@ -104,4 +104,9 @@ #endif /* __alpha && !VMS */ + +#if defined( WSAEWOULDBLOCK ) +#define EWOULDBLOCK WSAEWOULDBLOCK +#endif + #endif /* _AC_SOCKET_H_ */ diff --git a/include/ac/time.h b/include/ac/time.h index 3da6ddfe07..e1d6dc3836 100644 --- a/include/ac/time.h +++ b/include/ac/time.h @@ -17,13 +17,11 @@ # include #elif HAVE_SYS_TIME_H # include +# ifdef HAVE_SYS_TIMEB_H +# include +# endif #else # include #endif -#ifdef WIN32 -#include -#include -#endif - #endif /* _AC_TIME_H */ diff --git a/include/avl.h b/include/avl.h index 2f8ad2124d..757931c9b5 100644 --- a/include/avl.h +++ b/include/avl.h @@ -55,43 +55,43 @@ typedef int (*AVL_CMP) LDAP_P((void*, void*)); typedef int (*AVL_DUP) LDAP_P((void*, void*)); typedef void (*AVL_FREE) LDAP_P((void*)); -LDAP_F int +LDAP_F( int ) avl_free LDAP_P(( Avlnode *root, AVL_FREE dfree )); -LDAP_F int +LDAP_F( int ) avl_insert LDAP_P((Avlnode **, void*, AVL_CMP, AVL_DUP)); -LDAP_F void* +LDAP_F( void* ) avl_delete LDAP_P((Avlnode **, void*, AVL_CMP)); -LDAP_F void* +LDAP_F( void* ) avl_find LDAP_P((Avlnode *, void*, AVL_CMP)); -LDAP_F void* +LDAP_F( void* ) avl_find_lin LDAP_P((Avlnode *, void*, AVL_CMP)); -LDAP_F void* +LDAP_F( void* ) avl_getfirst LDAP_P((Avlnode *)); #ifdef AVL_REENTRANT /* ??? avl.c does not provide this version ??? */ -LDAP_F void* +LDAP_F( void* ) avl_getnext LDAP_P((Avlnode *, void* )); #else -LDAP_F void* +LDAP_F( void* ) avl_getnext LDAP_P((void)); #endif -LDAP_F int +LDAP_F( int ) avl_dup_error LDAP_P((void*, void*)); -LDAP_F int +LDAP_F( int ) avl_dup_ok LDAP_P((void*, void*)); -LDAP_F int +LDAP_F( int ) avl_apply LDAP_P((Avlnode *, AVL_APPLY, void*, int, int)); -LDAP_F int +LDAP_F( int ) avl_prefixapply LDAP_P((Avlnode *, void*, AVL_CMP, void*, AVL_CMP, void*, int)); /* apply traversal types */ diff --git a/include/disptmpl.h b/include/disptmpl.h index 1ab3449b1b..f5fc9e80a5 100644 --- a/include/disptmpl.h +++ b/include/disptmpl.h @@ -231,88 +231,88 @@ struct ldap_disptmpl { typedef int (*writeptype) LDAP_P(( void *writeparm, char *p, int len )); -LDAP_F int +LDAP_F( int ) ldap_init_templates LDAP_P(( char *file, struct ldap_disptmpl **tmpllistp )); -LDAP_F int +LDAP_F( int ) ldap_init_templates_buf LDAP_P(( char *buf, long buflen, struct ldap_disptmpl **tmpllistp )); -LDAP_F void +LDAP_F( void ) ldap_free_templates LDAP_P(( struct ldap_disptmpl *tmpllist )); -LDAP_F struct ldap_disptmpl * +LDAP_F( struct ldap_disptmpl * ) ldap_first_disptmpl LDAP_P(( struct ldap_disptmpl *tmpllist )); -LDAP_F struct ldap_disptmpl * +LDAP_F( struct ldap_disptmpl * ) ldap_next_disptmpl LDAP_P(( struct ldap_disptmpl *tmpllist, struct ldap_disptmpl *tmpl )); -LDAP_F struct ldap_disptmpl * +LDAP_F( struct ldap_disptmpl * ) ldap_name2template LDAP_P(( char *name, struct ldap_disptmpl *tmpllist )); -LDAP_F struct ldap_disptmpl * +LDAP_F( struct ldap_disptmpl * ) ldap_oc2template LDAP_P(( char **oclist, struct ldap_disptmpl *tmpllist )); -LDAP_F char ** +LDAP_F( char ** ) ldap_tmplattrs LDAP_P(( struct ldap_disptmpl *tmpl, char **includeattrs, int exclude, unsigned long syntaxmask )); -LDAP_F struct ldap_tmplitem * +LDAP_F( struct ldap_tmplitem * ) ldap_first_tmplrow LDAP_P(( struct ldap_disptmpl *tmpl )); -LDAP_F struct ldap_tmplitem * +LDAP_F( struct ldap_tmplitem * ) ldap_next_tmplrow LDAP_P(( struct ldap_disptmpl *tmpl, struct ldap_tmplitem *row )); -LDAP_F struct ldap_tmplitem * +LDAP_F( struct ldap_tmplitem * ) ldap_first_tmplcol LDAP_P(( struct ldap_disptmpl *tmpl, struct ldap_tmplitem *row )); -LDAP_F struct ldap_tmplitem * +LDAP_F( struct ldap_tmplitem * ) ldap_next_tmplcol LDAP_P(( struct ldap_disptmpl *tmpl, struct ldap_tmplitem *row, struct ldap_tmplitem *col )); -LDAP_F int +LDAP_F( int ) ldap_entry2text LDAP_P(( LDAP *ld, char *buf, LDAPMessage *entry, struct ldap_disptmpl *tmpl, char **defattrs, char ***defvals, writeptype writeproc, void *writeparm, char *eol, int rdncount, unsigned long opts )); -LDAP_F int +LDAP_F( int ) ldap_vals2text LDAP_P(( LDAP *ld, char *buf, char **vals, char *label, int labelwidth, unsigned long syntaxid, writeptype writeproc, void *writeparm, char *eol, int rdncount )); -LDAP_F int +LDAP_F( int ) ldap_entry2text_search LDAP_P(( LDAP *ld, char *dn, char *base, LDAPMessage *entry, struct ldap_disptmpl *tmpllist, char **defattrs, char ***defvals, writeptype writeproc, void *writeparm, char *eol, int rdncount, unsigned long opts )); -LDAP_F int +LDAP_F( int ) ldap_entry2html LDAP_P(( LDAP *ld, char *buf, LDAPMessage *entry, struct ldap_disptmpl *tmpl, char **defattrs, char ***defvals, writeptype writeproc, void *writeparm, char *eol, int rdncount, unsigned long opts, char *urlprefix, char *base )); -LDAP_F int +LDAP_F( int ) ldap_vals2html LDAP_P(( LDAP *ld, char *buf, char **vals, char *label, int labelwidth, unsigned long syntaxid, writeptype writeproc, void *writeparm, char *eol, int rdncount, char *urlprefix )); -LDAP_F int +LDAP_F( int ) ldap_entry2html_search LDAP_P(( LDAP *ld, char *dn, char *base, LDAPMessage *entry, struct ldap_disptmpl *tmpllist, char **defattrs, char ***defvals, diff --git a/include/getopt-compat.h b/include/getopt-compat.h index 438eb53388..f155719f9b 100644 --- a/include/getopt-compat.h +++ b/include/getopt-compat.h @@ -20,7 +20,11 @@ LDAP_BEGIN_DECL extern char *optarg; extern int optind, opterr, optopt; -LDAP_F int getopt LDAP_P((int, char * const [], const char *)); +LDAP_F( int ) +getopt LDAP_P(( + int, + char * const [], + const char *)); LDAP_END_DECL diff --git a/include/lber.h b/include/lber.h index bf939f90b3..64664fbcca 100644 --- a/include/lber.h +++ b/include/lber.h @@ -26,20 +26,37 @@ LDAP_BEGIN_DECL +/* Overview of LBER tag construction + * + * Bits + * ______ + * 8 7 | CLASS + * 0 0 = UNIVERSAL + * 0 1 = APPLICATION + * 1 0 = CONTEXT-SPECIFIC + * 1 1 = PRIVATE + * _____ + * | 6 | DATA-TYPE + * 0 = PRIMITIVE + * 1 = CONSTRUCTED + * ___________ + * | 5 ... 1 | TAG-NUMBER + */ + /* BER classes and mask */ -#define LBER_CLASS_UNIVERSAL 0x00 -#define LBER_CLASS_APPLICATION 0x40 -#define LBER_CLASS_CONTEXT 0x80 -#define LBER_CLASS_PRIVATE 0xc0 -#define LBER_CLASS_MASK 0xc0 +#define LBER_CLASS_UNIVERSAL 0x00UL +#define LBER_CLASS_APPLICATION 0x40UL +#define LBER_CLASS_CONTEXT 0x80UL +#define LBER_CLASS_PRIVATE 0xc0UL +#define LBER_CLASS_MASK 0xc0UL /* BER encoding type and mask */ -#define LBER_PRIMITIVE 0x00 -#define LBER_CONSTRUCTED 0x20 -#define LBER_ENCODING_MASK 0x20 +#define LBER_PRIMITIVE 0x00UL +#define LBER_CONSTRUCTED 0x20UL +#define LBER_ENCODING_MASK 0x20UL -#define LBER_BIG_TAG_MASK 0x1f -#define LBER_MORE_TAG_MASK 0x80 +#define LBER_BIG_TAG_MASK 0x1fUL +#define LBER_MORE_TAG_MASK 0x80UL /* * Note that LBER_ERROR and LBER_DEFAULT are values that can never appear @@ -47,24 +64,26 @@ LDAP_BEGIN_DECL * fact, any tag for which the following is true is invalid: * (( tag & 0x00000080 ) != 0 ) && (( tag & 0xFFFFFF00 ) != 0 ) */ -#define LBER_ERROR 0xffffffffL -#define LBER_DEFAULT 0xffffffffL -/* #define LBER_END_SEQORSET 0xfffffffeL *//* no part of LDAP C-API */ +#define LBER_INVALID(tag) ( ( (tag) & 0xFFFFFF80UL ) != 0 ) +#define LBER_ERROR 0xffffffffUL +#define LBER_DEFAULT 0xffffffffUL +/* #define LBER_END_SEQORSET 0xfffffffeUL *//* no part of LDAP C-API */ /* general BER types we know about */ -#define LBER_BOOLEAN 0x01L -#define LBER_INTEGER 0x02L -#define LBER_BITSTRING 0x03L -#define LBER_OCTETSTRING 0x04L -#define LBER_NULL 0x05L -#define LBER_ENUMERATED 0x0aL -#define LBER_SEQUENCE 0x30L /* constructed */ -#define LBER_SET 0x31L /* constructed */ - -#define OLD_LBER_SEQUENCE 0x10L /* w/o constructed bit - broken */ -#define OLD_LBER_SET 0x11L /* w/o constructed bit - broken */ - -typedef int (*BERTranslateProc) LDAP_P(( char **bufp, +#define LBER_BOOLEAN 0x01UL +#define LBER_INTEGER 0x02UL +#define LBER_BITSTRING 0x03UL +#define LBER_OCTETSTRING 0x04UL +#define LBER_NULL 0x05UL +#define LBER_ENUMERATED 0x0aUL +#define LBER_SEQUENCE 0x30UL /* constructed */ +#define LBER_SET 0x31UL /* constructed */ + +#define OLD_LBER_SEQUENCE 0x10UL /* w/o constructed bit - broken */ +#define OLD_LBER_SET 0x11UL /* w/o constructed bit - broken */ + +typedef int (*BERTranslateProc) LDAP_P(( + char **bufp, unsigned long *buflenp, int free_input )); @@ -101,114 +120,311 @@ typedef void (*BER_LOG_PRINT_FN) LDAP_P(( char *buf )); #define LBER_OPT_ERROR (-1) typedef struct berelement BerElement; -#define NULLBER ((BerElement *) 0) - typedef struct sockbuf Sockbuf; - typedef struct seqorset Seqorset; -#define NULLSEQORSET ((Seqorset *) 0) /* structure for returning a sequence of octet strings + length */ -struct berval { +typedef struct berval { unsigned long bv_len; char *bv_val; -}; +} BerValue; /* * in bprint.c: */ -LDAP_F void ber_print_error LDAP_P(( char *data )); -LDAP_F void ber_bprint LDAP_P(( char *data, int len )); -#define lber_bprint(d,l) ber_bprint((d),(l)) +LDAP_F( void ) +ber_print_error LDAP_P(( + LDAP_CONST char *data )); -LDAP_F void ber_dump LDAP_P(( BerElement *ber, int inout )); -LDAP_F void ber_sos_dump LDAP_P(( Seqorset *sos )); +LDAP_F( void ) +ber_bprint LDAP_P(( + LDAP_CONST char *data, int len )); + +LDAP_F( void ) +ber_dump LDAP_P(( + LDAP_CONST BerElement *ber, int inout )); + +LDAP_F( void ) +ber_sos_dump LDAP_P(( + LDAP_CONST Seqorset *sos )); /* * in decode.c: */ -LDAP_F unsigned long ber_get_tag LDAP_P(( BerElement *ber )); -LDAP_F unsigned long ber_skip_tag LDAP_P(( BerElement *ber, unsigned long *len )); -LDAP_F unsigned long ber_peek_tag LDAP_P(( BerElement *ber, unsigned long *len )); -LDAP_F unsigned long ber_get_int LDAP_P(( BerElement *ber, long *num )); -LDAP_F unsigned long ber_get_stringb LDAP_P(( BerElement *ber, char *buf, +typedef int (*BERDecodeCallback) LDAP_P(( + BerElement *ber, + void *data, + int mode )); + +LDAP_F( unsigned long ) +ber_get_tag LDAP_P(( + BerElement *ber )); + +LDAP_F( unsigned long ) +ber_skip_tag LDAP_P(( + BerElement *ber, + unsigned long *len )); + +LDAP_F( unsigned long ) +ber_peek_tag LDAP_P(( + LDAP_CONST BerElement *ber, /* not const in c-api-02 */ unsigned long *len )); -LDAP_F unsigned long ber_get_stringa LDAP_P(( BerElement *ber, char **buf )); -LDAP_F unsigned long ber_get_stringal LDAP_P(( BerElement *ber, struct berval **bv )); -LDAP_F unsigned long ber_get_bitstringa LDAP_P(( BerElement *ber, char **buf, + +LDAP_F( unsigned long ) +ber_get_int LDAP_P(( + BerElement *ber, + long *num )); + +LDAP_F( unsigned long ) +ber_get_stringb LDAP_P(( + BerElement *ber, + char *buf, unsigned long *len )); -LDAP_F unsigned long ber_get_null LDAP_P(( BerElement *ber )); -LDAP_F unsigned long ber_get_boolean LDAP_P(( BerElement *ber, int *boolval )); -LDAP_F unsigned long ber_first_element LDAP_P(( BerElement *ber, unsigned long *len, + +LDAP_F( unsigned long ) +ber_get_stringa LDAP_P(( + BerElement *ber, char **buf )); + +LDAP_F( unsigned long ) +ber_get_stringal LDAP_P(( + BerElement *ber, + struct berval **bv )); + +LDAP_F( unsigned long ) +ber_get_bitstringa LDAP_P(( + BerElement *ber, + char **buf, + unsigned long *len )); + +LDAP_F( unsigned long ) +ber_get_null LDAP_P(( + BerElement *ber )); + +LDAP_F( unsigned long ) +ber_get_boolean LDAP_P(( + BerElement *ber, + int *boolval )); + +LDAP_F( unsigned long ) +ber_first_element LDAP_P(( + BerElement *ber, + unsigned long *len, char **last )); -LDAP_F unsigned long ber_next_element LDAP_P(( BerElement *ber, unsigned long *len, + +LDAP_F( unsigned long ) +ber_next_element LDAP_P(( + BerElement *ber, + unsigned long *len, char *last )); -LDAP_F unsigned long ber_scanf LDAP_P(( BerElement *ber, char *fmt, ... )); -LDAP_F void ber_bvfree LDAP_P(( struct berval *bv )); -LDAP_F void ber_bvecfree LDAP_P(( struct berval **bv )); -LDAP_F struct berval *ber_bvdup LDAP_P(( struct berval *bv )); -LDAP_F void ber_set_string_translators LDAP_P(( BerElement *ber, - BERTranslateProc encode_proc, BERTranslateProc decode_proc )); + +LDAP_F( unsigned long ) +ber_scanf LDAP_P(( + BerElement *ber, + LDAP_CONST char *fmt, + ... )); + +LDAP_F( void ) +ber_bvfree LDAP_P(( + struct berval *bv )); + +LDAP_F( void ) +ber_bvecfree LDAP_P(( + struct berval **bv )); + +LDAP_F( struct berval * ) +ber_bvdup LDAP_P(( + LDAP_CONST struct berval *bv )); + +LDAP_F( void ) +ber_set_string_translators LDAP_P(( + BerElement *ber, + BERTranslateProc encode_proc, + BERTranslateProc decode_proc )); /* * in encode.c */ -LDAP_F int ber_put_enum LDAP_P(( BerElement *ber, long num, unsigned long tag )); -LDAP_F int ber_put_int LDAP_P(( BerElement *ber, long num, unsigned long tag )); -LDAP_F int ber_put_ostring LDAP_P(( BerElement *ber, char *str, unsigned long len, +typedef int (*BEREncodeCallback) LDAP_P(( + BerElement *ber, + void *data )); + +LDAP_F( int ) +ber_put_enum LDAP_P(( + BerElement *ber, + long num, + unsigned long tag )); + +LDAP_F( int ) +ber_put_int LDAP_P(( + BerElement *ber, + long num, + unsigned long tag )); + +LDAP_F( int ) +ber_put_ostring LDAP_P(( + BerElement *ber, + LDAP_CONST char *str, + unsigned long len, + unsigned long tag )); + +LDAP_F( int ) +ber_put_berval LDAP_P(( + BerElement *ber, + LDAP_CONST struct berval *bv, unsigned long tag )); -LDAP_F int ber_put_string LDAP_P(( BerElement *ber, char *str, unsigned long tag )); -LDAP_F int ber_put_bitstring LDAP_P(( BerElement *ber, char *str, - unsigned long bitlen, unsigned long tag )); -LDAP_F int ber_put_null LDAP_P(( BerElement *ber, unsigned long tag )); -LDAP_F int ber_put_boolean LDAP_P(( BerElement *ber, int boolval, + +LDAP_F( int ) +ber_put_string LDAP_P(( + BerElement *ber, + LDAP_CONST char *str, unsigned long tag )); -LDAP_F int ber_start_seq LDAP_P(( BerElement *ber, unsigned long tag )); -LDAP_F int ber_start_set LDAP_P(( BerElement *ber, unsigned long tag )); -LDAP_F int ber_put_seq LDAP_P(( BerElement *ber )); -LDAP_F int ber_put_set LDAP_P(( BerElement *ber )); -LDAP_F int ber_printf LDAP_P(( BerElement *ber, char *fmt, ... )); + +LDAP_F( int ) +ber_put_bitstring LDAP_P(( + BerElement *ber, + LDAP_CONST char *str, + unsigned long bitlen, + unsigned long tag )); + +LDAP_F( int ) +ber_put_null LDAP_P(( + BerElement *ber, + unsigned long tag )); + +LDAP_F( int ) +ber_put_boolean LDAP_P(( + BerElement *ber, + int boolval, + unsigned long tag )); + +LDAP_F( int ) +ber_start_seq LDAP_P(( + BerElement *ber, + unsigned long tag )); + +LDAP_F( int ) +ber_start_set LDAP_P(( + BerElement *ber, + unsigned long tag )); + +LDAP_F( int ) +ber_put_seq LDAP_P(( + BerElement *ber )); + +LDAP_F( int ) +ber_put_set LDAP_P(( + BerElement *ber )); + +LDAP_F( int ) +ber_printf LDAP_P(( + BerElement *ber, + LDAP_CONST char *fmt, + ... )); /* * in io.c: */ -LDAP_F long ber_read LDAP_P(( BerElement *ber, char *buf, unsigned long len )); -LDAP_F long ber_write LDAP_P(( BerElement *ber, char *buf, unsigned long len, +LDAP_F( long ) +ber_read LDAP_P(( + BerElement *ber, + char *buf, + unsigned long len )); + +LDAP_F( long ) +ber_write LDAP_P(( + BerElement *ber, + LDAP_CONST char *buf, + unsigned long len, int nosos )); -LDAP_F void ber_free LDAP_P(( BerElement *ber, int freebuf )); -LDAP_F void ber_clear LDAP_P(( BerElement *ber, int freebuf )); -LDAP_F int ber_flush LDAP_P(( Sockbuf *sb, BerElement *ber, int freeit )); -LDAP_F BerElement *ber_alloc LDAP_P(( void )); -LDAP_F BerElement *der_alloc LDAP_P(( void )); -LDAP_F BerElement *ber_alloc_t LDAP_P(( int options )); -LDAP_F BerElement *ber_dup LDAP_P(( BerElement *ber )); -LDAP_F unsigned long ber_get_next LDAP_P(( Sockbuf *sb, unsigned long *len, + +LDAP_F( void ) +ber_free LDAP_P(( + BerElement *ber, + int freebuf )); + +LDAP_F( void ) +ber_clear LDAP_P(( + BerElement *ber, + int freebuf )); + +LDAP_F( int ) +ber_flush LDAP_P(( + Sockbuf *sb, BerElement *ber, int freeit )); + +LDAP_F( BerElement * ) +ber_alloc LDAP_P(( void )); /* DEPRECATED */ + +LDAP_F( BerElement * ) +der_alloc LDAP_P(( void )); /* DEPRECATED */ + +LDAP_F( BerElement * ) +ber_alloc_t LDAP_P(( + int options )); + +LDAP_F( BerElement * ) +ber_dup LDAP_P(( + LDAP_CONST BerElement *ber )); + +LDAP_F( unsigned long ) +ber_get_next LDAP_P(( + Sockbuf *sb, + unsigned long *len, BerElement *ber )); -LDAP_F void ber_init_w_nullc LDAP_P(( BerElement *ber, int options )); -LDAP_F void ber_reset LDAP_P(( BerElement *ber, int was_writing )); + +LDAP_F( void ) +ber_init_w_nullc LDAP_P(( + BerElement *ber, + int options )); + +LDAP_F( void ) +ber_reset LDAP_P(( + BerElement *ber, + int was_writing )); /* * LBER draft-ietf-ldapext-ldap-c-api-01 routines */ -LDAP_F BerElement *ber_init LDAP_P(( struct berval *bv )); -LDAP_F int ber_flatten LDAP_P(( BerElement *ber, struct berval **bvPtr )); +LDAP_F( BerElement * ) +ber_init LDAP_P(( + struct berval *bv )); + +LDAP_F( int ) +ber_flatten LDAP_P(( + LDAP_CONST BerElement *ber, + struct berval **bvPtr )); /* * LBER ber accessor functions */ -LDAP_F int -lber_get_option LDAP_P((void *item, int option, void *outvalue)); -LDAP_F int -lber_set_option LDAP_P((void *item, int option, void *invalue)); +LDAP_F( int ) +ber_get_option LDAP_P(( + void *item, + int option, + void *outvalue)); + +LDAP_F( int ) +ber_set_option LDAP_P(( + void *item, + int option, + LDAP_CONST void *invalue)); /* - * LBER Sockbuf functions + * LBER sockbuf.c */ -LDAP_F Sockbuf *lber_pvt_sk_alloc LDAP_P((void)); -LDAP_F Sockbuf *lber_pvt_sb_alloc_fd LDAP_P((int fd)); -LDAP_F void lber_pvt_sb_free LDAP_P((Sockbuf *sb)); + +LDAP_F( Sockbuf * ) +ber_sockbuf_alloc( void ); + +LDAP_F( Sockbuf * ) +ber_sockbuf_alloc_fd( + int fd ); + +LDAP_F( void ) +ber_sockbuf_free( + Sockbuf *sb ); + LDAP_END_DECL diff --git a/include/lber_pvt.h b/include/lber_pvt.h index fc8091e0aa..c083d9fee7 100644 --- a/include/lber_pvt.h +++ b/include/lber_pvt.h @@ -8,7 +8,7 @@ * in file LICENSE in the top-level directory of the distribution. */ /* - * lber_pvt.h - Header for lber_pvt_ functions. These are meant to be used + * lber_pvt.h - Header for ber_pvt_ functions. These are meant to be used * by the OpenLDAP distribution only. */ @@ -22,12 +22,13 @@ LDAP_BEGIN_DECL /* * bprint.c */ -extern BER_LOG_PRINT_FN lber_pvt_log_print; +extern BER_LOG_PRINT_FN ber_pvt_log_print; -LDAP_F int lber_pvt_log_printf LDAP_P(( +LDAP_F( int ) +ber_pvt_log_printf LDAP_P(( int errlvl, int loglvl, - char *fmt, + const char *fmt, ... )); LDAP_END_DECL diff --git a/include/ldap.h b/include/ldap.h index 4102153162..71ef37c176 100644 --- a/include/ldap.h +++ b/include/ldap.h @@ -39,13 +39,13 @@ LDAP_BEGIN_DECL * As such, the number will be above the old RFC but below * whatever number does finally get assigned */ -#define LDAP_API_VERSION 2001 +#define LDAP_API_VERSION 2002 #define LDAP_VENDOR_NAME "OpenLDAP" /* We'll eventually release as 200 */ -#define LDAP_VENDOR_VERSION 190 +#define LDAP_VENDOR_VERSION 192 /* OpenLDAP API Features */ -#define LDAP_API_FEATURE_X_OPENLDAP 1 +#define LDAP_API_FEATURE_X_OPENLDAP LDAP_VENDOR_VERSION /* include LDAP_API_FEATURE defines */ #include @@ -63,13 +63,6 @@ LDAP_BEGIN_DECL /* #define LDAP_API_OPERATION_SESSION_SAFE 1 */ #endif -#define LDAP_API_FEATURE_INFO 1 - -typedef struct ldap_apifeature_info { - char* ldapaif_name; /* matches LDAP_API_FEATURE_... less the prefix */ - int ldapaif_version; /* matches the value LDAP_API_FEATURE_... */ -} LDAPAPIFeatureInfo; - #define LDAP_PORT 389 #define LDAP_ROOT_DSE "" @@ -82,7 +75,7 @@ typedef struct ldap_apifeature_info { #define LDAP_COMPAT #endif -/* LDAP_OPTions defined by draft-ldapext-ldap-c-api-01 */ +/* LDAP_OPTions defined by draft-ldapext-ldap-c-api-02 */ #define LDAP_OPT_API_INFO 0x0000 #define LDAP_OPT_DESC 0x0001 #define LDAP_OPT_DEREF 0x0002 @@ -95,14 +88,14 @@ typedef struct ldap_apifeature_info { #define LDAP_OPT_PROTOCOL_VERSION 0x0011 #define LDAP_OPT_SERVER_CONTROLS 0x0012 #define LDAP_OPT_CLIENT_CONTROLS 0x0013 -/* 0x14 - 0x2f not defined by current draft */ +/* 0x14 not defined by current draft */ +#define LDAP_OPT_API_FEATURE_INFO 0x0015 + +/* 0x16 - 0x2f not defined by current draft */ #define LDAP_OPT_HOST_NAME 0x0030 #define LDAP_OPT_ERROR_NUMBER 0x0031 #define LDAP_OPT_ERROR_STRING 0x0032 -/* LDAP_OPTions under IETF discussion */ -#define LDAP_OPT_API_FEATURE_INFO 0x0100 - /* not defined by current draft */ /* for LDAPv2 compatibility */ #define LDAP_OPT_DNS 0x1001 /* use DN & DNS */ @@ -127,8 +120,15 @@ typedef struct ldapapiinfo { int ldapai_vendor_version; /* supplier-specific version * 100 */ } LDAPAPIInfo; +#define LDAP_FEATURE_INFO_VERSION 1 /* version of api feature structure */ +typedef struct ldap_apifeature_info { + int ldapaif_info_version; /* version of this struct (1) */ + char* ldapaif_name; /* matches LDAP_API_FEATURE_... less the prefix */ + int ldapaif_version; /* matches the value LDAP_API_FEATURE_... */ +} LDAPAPIFeatureInfo; + typedef struct ldapcontrol { - char *ldctl_oid; + char * ldctl_oid; struct berval ldctl_value; char ldctl_iscritical; } LDAPControl, *PLDAPControl; @@ -139,170 +139,175 @@ typedef struct ldapcontrol { * specific LDAP instantiations of BER types we know about */ -/* general stuff */ -#define LDAP_TAG_MESSAGE 0x30L /* tag is 16 + constructed bit */ -#define OLD_LDAP_TAG_MESSAGE 0x10L /* forgot the constructed bit */ -#define LDAP_TAG_MSGID 0x02L -/* need to add other LDAP_TAGs here */ - -/* Overview of tag construction in ASN.1: - * _______ - * Bit # | 8 7 | CLASS: UNIVERSAL 00 - * APPLICATION 01 - * CONTEXT-SPECIFIC 10 - * PRIVATE 11 +/* Overview of LBER tag construction + * + * Bits + * ______ + * 8 7 | CLASS + * 0 0 = UNIVERSAL + * 0 1 = APPLICATION + * 1 0 = CONTEXT-SPECIFIC + * 1 1 = PRIVATE * _____ - * | 6 | DATA-TYPE: PRIMITIVE 0 - * CONSTRUCTED 1 - * ___________ - * | 5 ... 1 | TAG-NUMBER + * | 6 | DATA-TYPE + * 0 = PRIMITIVE + * 1 = CONSTRUCTED + * ___________ + * | 5 ... 1 | TAG-NUMBER */ - -#define LDAP_TAG_NEWSUPERIOR 0x80L /* context-specific + primitive + - * tag # ==> [0] - */ + +/* general stuff */ +#define LDAP_TAG_MESSAGE 0x30UL /* constructed + 16 */ +#define OLD_LDAP_TAG_MESSAGE 0x10UL /* forgot the constructed bit */ +#define LDAP_TAG_MSGID 0x02UL /* integer */ +#define LDAP_TAG_LDAPDN 0x04UL /* octect string */ +#define LDAP_TAG_CONTROLS 0xa0UL /* context specific + constructed + 0 */ +#define LDAP_TAG_REFERRAL 0xa3UL /* context specific + constructed + 3 */ +#define LDAP_TAG_NEWSUPERIOR 0x80UL /* context-specific + primitive + 0 */ + +#define LDAP_TAG_SASL_RES_CREDS 0x87UL /* context specific + primitive */ /* possible operations a client can invoke */ -#define LDAP_REQ_BIND 0x60L /* application + constructed */ -#define LDAP_REQ_UNBIND 0x42L /* application + primitive */ -#define LDAP_REQ_SEARCH 0x63L /* application + constructed */ -#define LDAP_REQ_MODIFY 0x66L /* application + constructed */ -#define LDAP_REQ_ADD 0x68L /* application + constructed */ -#define LDAP_REQ_DELETE 0x4aL /* application + primitive */ -#define LDAP_REQ_MODRDN 0x6cL /* application + constructed */ +#define LDAP_REQ_BIND 0x60UL /* application + constructed */ +#define LDAP_REQ_UNBIND 0x42UL /* application + primitive */ +#define LDAP_REQ_SEARCH 0x63UL /* application + constructed */ +#define LDAP_REQ_MODIFY 0x66UL /* application + constructed */ +#define LDAP_REQ_ADD 0x68UL /* application + constructed */ +#define LDAP_REQ_DELETE 0x4aUL /* application + primitive */ +#define LDAP_REQ_MODRDN 0x6cUL /* application + constructed */ #define LDAP_REQ_MODDN LDAP_REQ_MODRDN #define LDAP_REQ_RENAME LDAP_REQ_MODRDN -#define LDAP_REQ_COMPARE 0x6eL /* application + constructed */ -#define LDAP_REQ_ABANDON 0x50L /* application + primitive */ -#define LDAP_REQ_EXTENDED 0x77L /* application + constructed */ +#define LDAP_REQ_COMPARE 0x6eUL /* application + constructed */ +#define LDAP_REQ_ABANDON 0x50UL /* application + primitive */ +#define LDAP_REQ_EXTENDED 0x77UL /* application + constructed */ /* U-Mich version 3.0 compatibility stuff */ -#define LDAP_REQ_UNBIND_30 0x62L -#define LDAP_REQ_DELETE_30 0x6aL -#define LDAP_REQ_ABANDON_30 0x70L +#define LDAP_REQ_UNBIND_30 0x62UL +#define LDAP_REQ_DELETE_30 0x6aUL +#define LDAP_REQ_ABANDON_30 0x70UL /* * old broken stuff for backwards compatibility - forgot application tag * and constructed/primitive bit */ -#define OLD_LDAP_REQ_BIND 0x00L -#define OLD_LDAP_REQ_UNBIND 0x02L -#define OLD_LDAP_REQ_SEARCH 0x03L -#define OLD_LDAP_REQ_MODIFY 0x06L -#define OLD_LDAP_REQ_ADD 0x08L -#define OLD_LDAP_REQ_DELETE 0x0aL -#define OLD_LDAP_REQ_MODRDN 0x0cL -#define OLD_LDAP_REQ_COMPARE 0x0eL -#define OLD_LDAP_REQ_ABANDON 0x10L +#define OLD_LDAP_REQ_BIND 0x00UL +#define OLD_LDAP_REQ_UNBIND 0x02UL +#define OLD_LDAP_REQ_SEARCH 0x03UL +#define OLD_LDAP_REQ_MODIFY 0x06UL +#define OLD_LDAP_REQ_ADD 0x08UL +#define OLD_LDAP_REQ_DELETE 0x0aUL +#define OLD_LDAP_REQ_MODRDN 0x0cUL +#define OLD_LDAP_REQ_COMPARE 0x0eUL +#define OLD_LDAP_REQ_ABANDON 0x10UL /* possible result types a server can return */ -#define LDAP_RES_BIND 0x61L /* application + constructed */ -#define LDAP_RES_SEARCH_ENTRY 0x64L /* application + constructed */ -#define LDAP_RES_SEARCH_REFERENCE 0x73L /* V3: application + constructed */ -#define LDAP_RES_SEARCH_RESULT 0x65L /* application + constructed */ -#define LDAP_RES_MODIFY 0x67L /* application + constructed */ -#define LDAP_RES_ADD 0x69L /* application + constructed */ -#define LDAP_RES_DELETE 0x6bL /* application + constructed */ -#define LDAP_RES_MODRDN 0x6dL /* application + constructed */ +#define LDAP_RES_BIND 0x61UL /* application + constructed */ +#define LDAP_RES_SEARCH_ENTRY 0x64UL /* application + constructed */ +#define LDAP_RES_SEARCH_REFERENCE 0x73UL /* V3: application + constructed */ +#define LDAP_RES_SEARCH_RESULT 0x65UL /* application + constructed */ +#define LDAP_RES_MODIFY 0x67UL /* application + constructed */ +#define LDAP_RES_ADD 0x69UL /* application + constructed */ +#define LDAP_RES_DELETE 0x6bUL /* application + constructed */ +#define LDAP_RES_MODRDN 0x6dUL /* application + constructed */ #define LDAP_RES_MODDN LDAP_RES_MODRDN /* application + constructed */ #define LDAP_RES_RENAME LDAP_RES_MODRDN /* application + constructed */ -#define LDAP_RES_COMPARE 0x6fL /* application + constructed */ -#define LDAP_RES_EXTENDED 0x78L /* V3: application + constructed */ -#define LDAP_RES_ANY (-1L) +#define LDAP_RES_COMPARE 0x6fUL /* application + constructed */ +#define LDAP_RES_EXTENDED 0x78UL /* V3: application + constructed */ +#define LDAP_RES_ANY ((unsigned long)(-1)) /* old broken stuff for backwards compatibility */ -#define OLD_LDAP_RES_BIND 0x01L -#define OLD_LDAP_RES_SEARCH_ENTRY 0x04L -#define OLD_LDAP_RES_SEARCH_RESULT 0x05L -#define OLD_LDAP_RES_MODIFY 0x07L -#define OLD_LDAP_RES_ADD 0x09L -#define OLD_LDAP_RES_DELETE 0x0bL -#define OLD_LDAP_RES_MODRDN 0x0dL +#define OLD_LDAP_RES_BIND 0x01UL +#define OLD_LDAP_RES_SEARCH_ENTRY 0x04UL +#define OLD_LDAP_RES_SEARCH_RESULT 0x05UL +#define OLD_LDAP_RES_MODIFY 0x07UL +#define OLD_LDAP_RES_ADD 0x09UL +#define OLD_LDAP_RES_DELETE 0x0bUL +#define OLD_LDAP_RES_MODRDN 0x0dUL #define OLD_LDAP_RES_MODDN OLD_LDAP_RES_MODRDN -#define OLD_LDAP_RES_COMPARE 0x0fL +#define OLD_LDAP_RES_COMPARE 0x0fUL /* sasl methods */ #define LDAP_SASL_SIMPLE NULL /* authentication methods available */ -#define LDAP_AUTH_NONE 0x00L /* no authentication */ -#define LDAP_AUTH_SIMPLE 0x80L /* context specific + primitive */ -#define LDAP_AUTH_SASL 0xa3L /* context specific + primitive */ -#define LDAP_AUTH_KRBV4 0xffL /* means do both of the following */ -#define LDAP_AUTH_KRBV41 0x81L /* context specific + primitive */ -#define LDAP_AUTH_KRBV42 0x82L /* context specific + primitive */ +#define LDAP_AUTH_NONE 0x00UL /* no authentication */ +#define LDAP_AUTH_SIMPLE 0x80UL /* context specific + primitive */ +#define LDAP_AUTH_SASL 0xa3UL /* context specific + primitive */ +#define LDAP_AUTH_KRBV4 0xffUL /* means do both of the following */ +#define LDAP_AUTH_KRBV41 0x81UL /* context specific + primitive */ +#define LDAP_AUTH_KRBV42 0x82UL /* context specific + primitive */ /* U-Mich version 3.0 compatibility auth methods */ -#define LDAP_AUTH_SIMPLE_30 0xa0L /* context specific + constructed */ -#define LDAP_AUTH_KRBV41_30 0xa1L /* context specific + constructed */ -#define LDAP_AUTH_KRBV42_30 0xa2L /* context specific + constructed */ +#define LDAP_AUTH_SIMPLE_30 0xa0UL /* context specific + constructed */ +#define LDAP_AUTH_KRBV41_30 0xa1UL /* context specific + constructed */ +#define LDAP_AUTH_KRBV42_30 0xa2UL /* context specific + constructed */ /* old broken stuff */ -#define OLD_LDAP_AUTH_SIMPLE 0x00L -#define OLD_LDAP_AUTH_KRBV4 0x01L -#define OLD_LDAP_AUTH_KRBV42 0x02L +#define OLD_LDAP_AUTH_SIMPLE 0x00UL +#define OLD_LDAP_AUTH_KRBV4 0x01UL +#define OLD_LDAP_AUTH_KRBV42 0x02UL /* filter types */ -#define LDAP_FILTER_AND 0xa0L /* context specific + constructed */ -#define LDAP_FILTER_OR 0xa1L /* context specific + constructed */ -#define LDAP_FILTER_NOT 0xa2L /* context specific + constructed */ -#define LDAP_FILTER_EQUALITY 0xa3L /* context specific + constructed */ -#define LDAP_FILTER_SUBSTRINGS 0xa4L /* context specific + constructed */ -#define LDAP_FILTER_GE 0xa5L /* context specific + constructed */ -#define LDAP_FILTER_LE 0xa6L /* context specific + constructed */ -#define LDAP_FILTER_PRESENT 0x87L /* context specific + primitive */ -#define LDAP_FILTER_APPROX 0xa8L /* context specific + constructed */ -#define LDAP_FILTER_EXTENDED 0xa9L /* context specific + constructed */ +#define LDAP_FILTER_AND 0xa0UL /* context specific + constructed */ +#define LDAP_FILTER_OR 0xa1UL /* context specific + constructed */ +#define LDAP_FILTER_NOT 0xa2UL /* context specific + constructed */ +#define LDAP_FILTER_EQUALITY 0xa3UL /* context specific + constructed */ +#define LDAP_FILTER_SUBSTRINGS 0xa4UL /* context specific + constructed */ +#define LDAP_FILTER_GE 0xa5UL /* context specific + constructed */ +#define LDAP_FILTER_LE 0xa6UL /* context specific + constructed */ +#define LDAP_FILTER_PRESENT 0x87UL /* context specific + primitive */ +#define LDAP_FILTER_APPROX 0xa8UL /* context specific + constructed */ +#define LDAP_FILTER_EXTENDED 0xa9UL /* context specific + constructed */ /* U-Mich version 3.0 compatibility filter types */ -#define LDAP_FILTER_PRESENT_30 0xa7L /* context specific + constructed */ +#define LDAP_FILTER_PRESENT_30 0xa7UL /* context specific + constructed */ /* old broken stuff */ -#define OLD_LDAP_FILTER_AND 0x00L -#define OLD_LDAP_FILTER_OR 0x01L -#define OLD_LDAP_FILTER_NOT 0x02L -#define OLD_LDAP_FILTER_EQUALITY 0x03L -#define OLD_LDAP_FILTER_SUBSTRINGS 0x04L -#define OLD_LDAP_FILTER_GE 0x05L -#define OLD_LDAP_FILTER_LE 0x06L -#define OLD_LDAP_FILTER_PRESENT 0x07L -#define OLD_LDAP_FILTER_APPROX 0x08L +#define OLD_LDAP_FILTER_AND 0x00UL +#define OLD_LDAP_FILTER_OR 0x01UL +#define OLD_LDAP_FILTER_NOT 0x02UL +#define OLD_LDAP_FILTER_EQUALITY 0x03UL +#define OLD_LDAP_FILTER_SUBSTRINGS 0x04UL +#define OLD_LDAP_FILTER_GE 0x05UL +#define OLD_LDAP_FILTER_LE 0x06UL +#define OLD_LDAP_FILTER_PRESENT 0x07UL +#define OLD_LDAP_FILTER_APPROX 0x08UL /* extended filter component types */ -#define LDAP_FILTER_EXTENDED_OID 0x81L /* context specific */ -#define LDAP_FILTER_EXTENDED_TYPE 0x82L /* context specific */ -#define LDAP_FILTER_EXTENDED_VALUE 0x83L /* context specific */ -#define LDAP_FILTER_EXTENDED_DNATTRS 0x84L /* context specific */ +#define LDAP_FILTER_EXTENDED_OID 0x81UL /* context specific */ +#define LDAP_FILTER_EXTENDED_TYPE 0x82UL /* context specific */ +#define LDAP_FILTER_EXTENDED_VALUE 0x83UL /* context specific */ +#define LDAP_FILTER_EXTENDED_DNATTRS 0x84UL /* context specific */ /* substring filter component types */ -#define LDAP_SUBSTRING_INITIAL 0x80L /* context specific */ -#define LDAP_SUBSTRING_ANY 0x81L /* context specific */ -#define LDAP_SUBSTRING_FINAL 0x82L /* context specific */ +#define LDAP_SUBSTRING_INITIAL 0x80UL /* context specific */ +#define LDAP_SUBSTRING_ANY 0x81UL /* context specific */ +#define LDAP_SUBSTRING_FINAL 0x82UL /* context specific */ /* U-Mich version 3.0 compatibility substring filter component types */ -#define LDAP_SUBSTRING_INITIAL_30 0xa0L /* context specific */ -#define LDAP_SUBSTRING_ANY_30 0xa1L /* context specific */ -#define LDAP_SUBSTRING_FINAL_30 0xa2L /* context specific */ +#define LDAP_SUBSTRING_INITIAL_30 0xa0UL /* context specific */ +#define LDAP_SUBSTRING_ANY_30 0xa1UL /* context specific */ +#define LDAP_SUBSTRING_FINAL_30 0xa2UL /* context specific */ /* old broken stuff */ -#define OLD_LDAP_SUBSTRING_INITIAL 0x00L -#define OLD_LDAP_SUBSTRING_ANY 0x01L -#define OLD_LDAP_SUBSTRING_FINAL 0x02L +#define OLD_LDAP_SUBSTRING_INITIAL 0x00UL +#define OLD_LDAP_SUBSTRING_ANY 0x01UL +#define OLD_LDAP_SUBSTRING_FINAL 0x02UL /* search scopes */ -#define LDAP_SCOPE_BASE 0x00 -#define LDAP_SCOPE_ONELEVEL 0x01 -#define LDAP_SCOPE_SUBTREE 0x02 +#define LDAP_SCOPE_BASE 0x0000 +#define LDAP_SCOPE_ONELEVEL 0x0001 +#define LDAP_SCOPE_SUBTREE 0x0002 /* for modifications */ typedef struct ldapmod { int mod_op; -#define LDAP_MOD_ADD 0x00 -#define LDAP_MOD_DELETE 0x01 -#define LDAP_MOD_REPLACE 0x02 -#define LDAP_MOD_BVALUES 0x80 +#define LDAP_MOD_ADD 0x0000 +#define LDAP_MOD_DELETE 0x0001 +#define LDAP_MOD_REPLACE 0x0002 +#define LDAP_MOD_BVALUES 0x0080 char *mod_type; - union { + union mod_vals_u { char **modv_strvals; struct berval **modv_bvals; } mod_vals; @@ -345,8 +350,7 @@ typedef struct ldapmod { #define LDAP_IS_LEAF 0x23 /* not LDAPv3 */ #define LDAP_ALIAS_DEREF_PROBLEM 0x24 -#define LDAP_NAME_ERROR(n) (((n) & 0xf0) == 0x20) -#define NAME_ERROR(n) LDAP_NAME_ERROR(n) /* depreciated */ +#define LDAP_NAME_ERROR(n) (((n) & 0x00f0) == 0x0020) #define LDAP_INAPPROPRIATE_AUTH 0x30 #define LDAP_INVALID_CREDENTIALS 0x31 @@ -395,7 +399,6 @@ typedef struct ldapmod { */ typedef struct ldapmsg LDAPMessage; -#define NULLMSG ((LDAPMessage *) NULL) /* * structures for ldap getfilter routines @@ -472,12 +475,11 @@ typedef struct ldap_url_desc { char *lud_filter; char *lud_string; /* for internal use only */ } LDAPURLDesc; -#define NULLLDAPURLDESC ((LDAPURLDesc *)NULL) -#define LDAP_URL_ERR_NOTLDAP 1 /* URL doesn't begin with "ldap://" */ -#define LDAP_URL_ERR_NODN 2 /* URL has no DN (required) */ -#define LDAP_URL_ERR_BADSCOPE 3 /* URL scope string is invalid */ -#define LDAP_URL_ERR_MEM 4 /* can't allocate memory space */ +#define LDAP_URL_ERR_NOTLDAP 0x01 /* URL doesn't begin with "ldap://" */ +#define LDAP_URL_ERR_NODN 0x02 /* URL has no DN (required) */ +#define LDAP_URL_ERR_BADSCOPE 0x03 /* URL scope string is invalid */ +#define LDAP_URL_ERR_MEM 0x04 /* can't allocate memory space */ /* avoid pulling in headers */ struct timeval; @@ -485,31 +487,47 @@ struct timeval; /* * in options.c: */ -LDAP_F int ldap_get_option LDAP_P((LDAP *ld, int option, void *outvalue)); -LDAP_F int ldap_set_option LDAP_P((LDAP *ld, int option, void *invalue)); +LDAP_F( int ) +ldap_get_option LDAP_P(( + LDAP *ld, + int option, + void *outvalue)); + +LDAP_F( int ) +ldap_set_option LDAP_P(( + LDAP *ld, + int option, + LDAP_CONST void *invalue)); /* * in controls.c: */ -LDAP_F void ldap_control_free LDAP_P(( LDAPControl *ctrl )); -LDAP_F void ldap_controls_free LDAP_P(( LDAPControl **ctrls )); +LDAP_F( void ) +ldap_control_free LDAP_P(( + LDAPControl *ctrl )); + +LDAP_F( void ) +ldap_controls_free LDAP_P(( + LDAPControl **ctrls )); /* * in extended.c: */ -LDAP_F int ldap_extended_operation LDAP_P(( +LDAP_F( int ) +ldap_extended_operation LDAP_P(( LDAP *ld, - char *exoid, + LDAP_CONST char *exoid, struct berval *exdata, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp )); -LDAP_F int ldap_extended_operation_s LDAP_P(( +LDAP_F( int ) +ldap_extended_operation_s LDAP_P(( LDAP *ld, - char *exoid, + LDAP_CONST char *exoid, struct berval *exdata, LDAPControl **serverctrls, LDAPControl **clientctrls, @@ -519,8 +537,13 @@ LDAP_F int ldap_extended_operation_s LDAP_P(( /* * in abandon.c: */ -LDAP_F int ldap_abandon LDAP_P(( LDAP *ld, int msgid )); -LDAP_F int ldap_abandon_ext LDAP_P(( +LDAP_F( int ) +ldap_abandon LDAP_P(( + LDAP *ld, + int msgid )); + +LDAP_F( int ) +ldap_abandon_ext LDAP_P(( LDAP *ld, int msgid, LDAPControl **serverctrls, @@ -530,42 +553,54 @@ LDAP_F int ldap_abandon_ext LDAP_P(( /* * in add.c: */ -LDAP_F int ldap_add_ext LDAP_P(( +LDAP_F( int ) +ldap_add_ext LDAP_P(( LDAP *ld, - char *dn, + LDAP_CONST char *dn, LDAPMod **attrs, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp )); -LDAP_F int ldap_add_ext_s LDAP_P(( +LDAP_F( int ) +ldap_add_ext_s LDAP_P(( LDAP *ld, - char *dn, + LDAP_CONST char *dn, LDAPMod **attrs, LDAPControl **serverctrls, - LDAPControl **clientctrls, - LDAPMessage **res )); + LDAPControl **clientctrls )); -LDAP_F int ldap_add LDAP_P(( LDAP *ld, char *dn, LDAPMod **attrs )); -LDAP_F int ldap_add_s LDAP_P(( LDAP *ld, char *dn, LDAPMod **attrs )); +LDAP_F( int ) +ldap_add LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn, + LDAPMod **attrs )); + +LDAP_F( int ) +ldap_add_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn, + LDAPMod **attrs )); /* * in saslbind.c: */ -LDAP_F int ldap_sasl_bind LDAP_P(( +LDAP_F( int ) +ldap_sasl_bind LDAP_P(( LDAP *ld, - char *dn, - char *mechanism, - struct berval *cred, + LDAP_CONST char *dn, + LDAP_CONST char *mechanism, + struct berval *cred, LDAPControl **serverctrls, LDAPControl **clientctrls, int msgidp )); -LDAP_F int ldap_sasl_bind_s LDAP_P(( +LDAP_F( int ) +ldap_sasl_bind_s LDAP_P(( LDAP *ld, - char *dn, - char *mechanism, + LDAP_CONST char *dn, + LDAP_CONST char *mechanism, struct berval *cred, LDAPControl **serverctrls, LDAPControl **clientctrls, @@ -574,182 +609,339 @@ LDAP_F int ldap_sasl_bind_s LDAP_P(( /* * in bind.c: - * (depreciated) + * (deprecated) */ -LDAP_F int ldap_bind LDAP_P(( LDAP *ld, char *who, char *passwd, int authmethod )); -LDAP_F int ldap_bind_s LDAP_P(( LDAP *ld, char *who, char *cred, int method )); -LDAP_F void ldap_set_rebind_proc LDAP_P(( LDAP *ld, - int (*rebindproc) LDAP_P(( LDAP *ld, char **dnp, char **passwdp, int *authmethodp, int freeit )) -)); +LDAP_F( int ) +ldap_bind LDAP_P(( + LDAP *ld, + LDAP_CONST char *who, + LDAP_CONST char *passwd, + int authmethod )); + +LDAP_F( int ) +ldap_bind_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *who, + LDAP_CONST char *cred, + int authmethod )); + +LDAP_F( void ) +ldap_set_rebind_proc LDAP_P(( + LDAP *ld, + int (*rebindproc) LDAP_P(( + LDAP *ld, + char **dnp, + char **passwdp, + int *authmethodp, + int freeit )))); /* * in sbind.c: */ -LDAP_F int ldap_simple_bind LDAP_P(( LDAP *ld, char *who, char *passwd )); -LDAP_F int ldap_simple_bind_s LDAP_P(( LDAP *ld, char *who, char *passwd )); +LDAP_F( int ) +ldap_simple_bind LDAP_P(( + LDAP *ld, + LDAP_CONST char *who, + LDAP_CONST char *passwd )); + +LDAP_F( int ) +ldap_simple_bind_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *who, + LDAP_CONST char *passwd )); /* * in kbind.c: - * (depreciated) + * (deprecated) */ -LDAP_F int ldap_kerberos_bind_s LDAP_P(( LDAP *ld, char *who )); -LDAP_F int ldap_kerberos_bind1 LDAP_P(( LDAP *ld, char *who )); -LDAP_F int ldap_kerberos_bind1_s LDAP_P(( LDAP *ld, char *who )); -LDAP_F int ldap_kerberos_bind2 LDAP_P(( LDAP *ld, char *who )); -LDAP_F int ldap_kerberos_bind2_s LDAP_P(( LDAP *ld, char *who )); - +LDAP_F( int ) +ldap_kerberos_bind_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *who )); + +LDAP_F( int ) +ldap_kerberos_bind1 LDAP_P(( + LDAP *ld, + LDAP_CONST char *who )); + +LDAP_F( int ) +ldap_kerberos_bind1_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *who )); + +LDAP_F( int ) +ldap_kerberos_bind2 LDAP_P(( + LDAP *ld, + LDAP_CONST char *who )); + +LDAP_F( int ) +ldap_kerberos_bind2_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *who )); /* * in cache.c + * DEPRECATED */ -LDAP_F int ldap_enable_cache LDAP_P(( LDAP *ld, long timeout, long maxmem )); -LDAP_F void ldap_disable_cache LDAP_P(( LDAP *ld )); -LDAP_F void ldap_set_cache_options LDAP_P(( LDAP *ld, unsigned long opts )); -LDAP_F void ldap_destroy_cache LDAP_P(( LDAP *ld )); -LDAP_F void ldap_flush_cache LDAP_P(( LDAP *ld )); -LDAP_F void ldap_uncache_entry LDAP_P(( LDAP *ld, char *dn )); -LDAP_F void ldap_uncache_request LDAP_P(( LDAP *ld, int msgid )); +LDAP_F( int ) +ldap_enable_cache LDAP_P(( LDAP *ld, long timeout, long maxmem )); + +LDAP_F( void ) +ldap_disable_cache LDAP_P(( LDAP *ld )); + +LDAP_F( void ) +ldap_set_cache_options LDAP_P(( LDAP *ld, unsigned long opts )); + +LDAP_F( void ) +ldap_destroy_cache LDAP_P(( LDAP *ld )); + +LDAP_F( void ) +ldap_flush_cache LDAP_P(( LDAP *ld )); + +LDAP_F( void ) +ldap_uncache_entry LDAP_P(( LDAP *ld, LDAP_CONST char *dn )); + +LDAP_F( void ) +ldap_uncache_request LDAP_P(( LDAP *ld, int msgid )); /* * in compare.c: */ -LDAP_F int ldap_compare_ext LDAP_P(( +LDAP_F( int ) +ldap_compare_ext LDAP_P(( LDAP *ld, - char *dn, - char *attr, + LDAP_CONST char *dn, + LDAP_CONST char *attr, struct berval *bvalue, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp )); -LDAP_F int ldap_compare_ext_s LDAP_P(( +LDAP_F( int ) +ldap_compare_ext_s LDAP_P(( LDAP *ld, - char *dn, - char *attr, + LDAP_CONST char *dn, + LDAP_CONST char *attr, struct berval *bvalue, LDAPControl **serverctrls, - LDAPControl **clientctrls, - LDAPMessage **res )); + LDAPControl **clientctrls )); + +LDAP_F( int ) +ldap_compare LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *attr, + LDAP_CONST char *value )); -LDAP_F int ldap_compare LDAP_P(( LDAP *ld, char *dn, char *attr, char *value )); -LDAP_F int ldap_compare_s LDAP_P(( LDAP *ld, char *dn, char *attr, char *value )); +LDAP_F( int ) +ldap_compare_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *attr, + LDAP_CONST char *value )); /* * in delete.c: */ -LDAP_F int ldap_delete_ext LDAP_P(( +LDAP_F( int ) +ldap_delete_ext LDAP_P(( LDAP *ld, - char *dn, + LDAP_CONST char *dn, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp )); -LDAP_F int ldap_delete_ext_s LDAP_P(( +LDAP_F( int ) +ldap_delete_ext_s LDAP_P(( LDAP *ld, - char *dn, + LDAP_CONST char *dn, LDAPControl **serverctrls, - LDAPControl **clientctrls, - LDAPMessage **res )); + LDAPControl **clientctrls )); + +LDAP_F( int ) +ldap_delete LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn )); -LDAP_F int ldap_delete LDAP_P(( LDAP *ld, char *dn )); -LDAP_F int ldap_delete_s LDAP_P(( LDAP *ld, char *dn )); +LDAP_F( int ) +ldap_delete_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn )); /* * in error.c: */ -LDAP_F int ldap_result2error LDAP_P(( LDAP *ld, LDAPMessage *r, int freeit )); -LDAP_F char *ldap_err2string LDAP_P(( int err )); -LDAP_F void ldap_perror LDAP_P(( LDAP *ld, char *s )); +LDAP_F( int ) +ldap_result2error LDAP_P(( LDAP *ld, LDAPMessage *r, int freeit )); +LDAP_F( char *) +ldap_err2string LDAP_P(( int err )); +LDAP_F( void ) +ldap_perror LDAP_P(( + LDAP *ld, + LDAP_CONST char *s )); /* * in modify.c: */ -LDAP_F int ldap_modify_ext LDAP_P(( +LDAP_F( int ) +ldap_modify_ext LDAP_P(( LDAP *ld, - char *dn, + LDAP_CONST char *dn, LDAPMod **mods, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp )); -LDAP_F int ldap_modify_ext_s LDAP_P(( +LDAP_F( int ) +ldap_modify_ext_s LDAP_P(( LDAP *ld, - char *dn, + LDAP_CONST char *dn, LDAPMod **mods, LDAPControl **serverctrls, - LDAPControl **clientctrls, - LDAPMessage **res )); + LDAPControl **clientctrls )); + +LDAP_F( int ) +ldap_modify LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn, + LDAPMod **mods )); -LDAP_F int ldap_modify LDAP_P(( LDAP *ld, char *dn, LDAPMod **mods )); -LDAP_F int ldap_modify_s LDAP_P(( LDAP *ld, char *dn, LDAPMod **mods )); +LDAP_F( int ) +ldap_modify_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn, + LDAPMod **mods )); /* * in rename.c: */ -LDAP_F int ldap_rename_ext LDAP_P(( +LDAP_F( int ) +ldap_rename_ext LDAP_P(( LDAP *ld, - char *dn, - char *newrdn, - char *newparent, + LDAP_CONST char *dn, + LDAP_CONST char *newrdn, + LDAP_CONST char *newparent, int deleteoldrdn, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp )); -LDAP_F int ldap_rename_ext_s LDAP_P(( +LDAP_F( int ) +ldap_rename_ext_s LDAP_P(( LDAP *ld, - char *dn, - char *newrdn, - char *newparent, + LDAP_CONST char *dn, + LDAP_CONST char *newrdn, + LDAP_CONST char *newparent, int deleteoldrdn, LDAPControl **serverctrls, - LDAPControl **clientctrls, - LDAPMessage **res )); + LDAPControl **clientctrls )); /* * in modrdn.c: */ -LDAP_F int ldap_modrdn LDAP_P(( LDAP *ld, char *dn, char *newrdn )); -LDAP_F int ldap_modrdn_s LDAP_P(( LDAP *ld, char *dn, char *newrdn )); -LDAP_F int ldap_modrdn2 LDAP_P(( LDAP *ld, char *dn, char *newrdn, +LDAP_F( int ) +ldap_modrdn LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *newrdn )); + +LDAP_F( int ) +ldap_modrdn_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *newrdn )); + +LDAP_F( int ) +ldap_modrdn2 LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *newrdn, int deleteoldrdn )); -LDAP_F int ldap_modrdn2_s LDAP_P(( LDAP *ld, char *dn, char *newrdn, + +LDAP_F( int ) +ldap_modrdn2_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *newrdn, int deleteoldrdn)); -LDAP_F int ldap_rename2 LDAP_P(( LDAP *ld, char *dn, char *newrdn, - int deleteoldrdn, char *newSuperior )); -LDAP_F int ldap_rename2_s LDAP_P(( LDAP *ld, char *dn, char *newrdn, - int deleteoldrdn, char *newSuperior)); + +LDAP_F( int ) +ldap_rename2 LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *newrdn, + int deleteoldrdn, + LDAP_CONST char *newSuperior )); + +LDAP_F( int ) +ldap_rename2_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *newrdn, + int deleteoldrdn, + LDAP_CONST char *newSuperior)); /* * in open.c: */ -LDAP_F LDAP *ldap_open LDAP_P(( char *host, int port )); -LDAP_F LDAP *ldap_init LDAP_P(( char *host, int port )); +LDAP_F( LDAP *) +ldap_open LDAP_P(( + LDAP_CONST char *host, + int port )); + +LDAP_F( LDAP *) +ldap_init LDAP_P(( + LDAP_CONST char *host, + int port )); /* * in messages.c: */ -LDAP_F LDAPMessage *ldap_first_message LDAP_P(( LDAP *ld, LDAPMessage *chain )); -LDAP_F LDAPMessage *ldap_next_message LDAP_P(( LDAP *ld, LDAPMessage *msg )); -LDAP_F int ldap_count_messages LDAP_P(( LDAP *ld, LDAPMessage *chain )); +LDAP_F( LDAPMessage *) +ldap_first_message LDAP_P(( + LDAP *ld, + LDAPMessage *chain )); + +LDAP_F( LDAPMessage *) +ldap_next_message LDAP_P(( + LDAP *ld, + LDAPMessage *msg )); + +LDAP_F( int ) +ldap_count_messages LDAP_P(( + LDAP *ld, + LDAPMessage *chain )); /* * in references.c: */ -LDAP_F LDAPMessage *ldap_first_reference LDAP_P(( LDAP *ld, LDAPMessage *chain )); -LDAP_F LDAPMessage *ldap_next_reference LDAP_P(( LDAP *ld, LDAPMessage *ref )); -LDAP_F int ldap_count_references LDAP_P(( LDAP *ld, LDAPMessage *chain )); -LDAP_F int ldap_parse_reference LDAP_P(( +LDAP_F( LDAPMessage *) +ldap_first_reference LDAP_P(( + LDAP *ld, + LDAPMessage *chain )); + +LDAP_F( LDAPMessage *) +ldap_next_reference LDAP_P(( + LDAP *ld, + LDAPMessage *ref )); + +LDAP_F( int ) +ldap_count_references LDAP_P(( + LDAP *ld, + LDAPMessage *chain )); + +LDAP_F( int ) +ldap_parse_reference LDAP_P(( LDAP *ld, LDAPMessage *ref, char ***referralsp, @@ -760,10 +952,23 @@ LDAP_F int ldap_parse_reference LDAP_P(( /* * in getentry.c: */ -LDAP_F LDAPMessage *ldap_first_entry LDAP_P(( LDAP *ld, LDAPMessage *chain )); -LDAP_F LDAPMessage *ldap_next_entry LDAP_P(( LDAP *ld, LDAPMessage *entry )); -LDAP_F int ldap_count_entries LDAP_P(( LDAP *ld, LDAPMessage *chain )); -LDAP_F int ldap_get_entry_controls LDAP_P(( +LDAP_F( LDAPMessage *) +ldap_first_entry LDAP_P(( + LDAP *ld, + LDAPMessage *chain )); + +LDAP_F( LDAPMessage *) +ldap_next_entry LDAP_P(( + LDAP *ld, + LDAPMessage *entry )); + +LDAP_F( int ) +ldap_count_entries LDAP_P(( + LDAP *ld, + LDAPMessage *chain )); + +LDAP_F( int ) +ldap_get_entry_controls LDAP_P(( LDAP *ld, LDAPMessage *entry, LDAPControl ***serverctrls)); @@ -772,62 +977,145 @@ LDAP_F int ldap_get_entry_controls LDAP_P(( /* * in addentry.c */ -LDAP_F LDAPMessage *ldap_delete_result_entry LDAP_P(( LDAPMessage **list, +LDAP_F( LDAPMessage *) +ldap_delete_result_entry LDAP_P(( + LDAPMessage **list, + LDAPMessage *e )); + +LDAP_F( void ) +ldap_add_result_entry LDAP_P(( + LDAPMessage **list, LDAPMessage *e )); -LDAP_F void ldap_add_result_entry LDAP_P(( LDAPMessage **list, LDAPMessage *e )); /* * in getdn.c */ -LDAP_F char *ldap_get_dn LDAP_P(( LDAP *ld, LDAPMessage *entry )); -LDAP_F char *ldap_dn2ufn LDAP_P(( char *dn )); -LDAP_F char **ldap_explode_dn LDAP_P(( char *dn, int notypes )); -LDAP_F char **ldap_explode_rdn LDAP_P(( char *rdn, int notypes )); -LDAP_F char **ldap_explode_dns LDAP_P(( char *dn )); -LDAP_F int ldap_is_dns_dn LDAP_P(( char *dn )); +LDAP_F( char *) +ldap_get_dn LDAP_P(( + LDAP *ld, + LDAPMessage *entry )); + +LDAP_F( char *) +ldap_dn2ufn LDAP_P(( + LDAP_CONST char *dn )); + +LDAP_F( char **) +ldap_explode_dn LDAP_P(( + LDAP_CONST char *dn, + int notypes )); + +LDAP_F( char **) +ldap_explode_rdn LDAP_P(( + LDAP_CONST char *rdn, + int notypes )); + +LDAP_F( char *) +ldap_parent_dn LDAP_P(( /* new (from slapd) */ + LDAP_CONST char *dn )); + +LDAP_F( char *) +ldap_relative_dn LDAP_P(( /* new (from slapd) */ + LDAP_CONST char *dn )); + +LDAP_F( char *) +ldap_normalize_dn LDAP_P(( /* new (from slapd) */ + LDAP_CONST char *dn )); + +LDAP_F( char **) +ldap_explode_dns LDAP_P(( /* deprecated */ + LDAP_CONST char *dn )); + +LDAP_F( int ) +ldap_is_dns_dn LDAP_P(( /* deprecated */ + LDAP_CONST char *dn )); /* * in getattr.c */ -LDAP_F char *ldap_first_attribute LDAP_P(( LDAP *ld, LDAPMessage *entry, +LDAP_F( char *) +ldap_first_attribute LDAP_P(( + LDAP *ld, + LDAPMessage *entry, BerElement **ber )); -LDAP_F char *ldap_next_attribute LDAP_P(( LDAP *ld, LDAPMessage *entry, + +LDAP_F( char *) +ldap_next_attribute LDAP_P(( + LDAP *ld, + LDAPMessage *entry, BerElement *ber )); /* * in getvalues.c */ -LDAP_F char **ldap_get_values LDAP_P(( LDAP *ld, LDAPMessage *entry, char *target )); -LDAP_F struct berval **ldap_get_values_len LDAP_P(( LDAP *ld, LDAPMessage *entry, - char *target )); -LDAP_F int ldap_count_values LDAP_P(( char **vals )); -LDAP_F int ldap_count_values_len LDAP_P(( struct berval **vals )); -LDAP_F void ldap_value_free LDAP_P(( char **vals )); -LDAP_F void ldap_value_free_len LDAP_P(( struct berval **vals )); - +LDAP_F( char **) +ldap_get_values LDAP_P(( + LDAP *ld, + LDAPMessage *entry, + LDAP_CONST char *target )); + +LDAP_F( struct berval **) +ldap_get_values_len LDAP_P(( + LDAP *ld, + LDAPMessage *entry, + LDAP_CONST char *target )); + +LDAP_F( int ) +ldap_count_values LDAP_P(( + char **vals )); + +LDAP_F( int ) +ldap_count_values_len LDAP_P(( + struct berval **vals )); + +LDAP_F( void ) +ldap_value_free LDAP_P(( + char **vals )); + +LDAP_F( void ) +ldap_value_free_len LDAP_P(( + struct berval **vals )); /* * in result.c: */ -LDAP_F int ldap_result LDAP_P(( LDAP *ld, int msgid, int all, - struct timeval *timeout, LDAPMessage **result )); -LDAP_F int ldap_msgtype LDAP_P(( LDAPMessage *lm )); -LDAP_F int ldap_msgid LDAP_P(( LDAPMessage *lm )); -LDAP_F int ldap_msgfree LDAP_P(( LDAPMessage *lm )); -LDAP_F int ldap_msgdelete LDAP_P(( LDAP *ld, int msgid )); +LDAP_F( int ) +ldap_result LDAP_P(( + LDAP *ld, + int msgid, + int all, + struct timeval *timeout, + LDAPMessage **result )); + +LDAP_F( int ) +ldap_msgtype LDAP_P(( + LDAPMessage *lm )); + +LDAP_F( int ) +ldap_msgid LDAP_P(( + LDAPMessage *lm )); + +LDAP_F( int ) +ldap_msgfree LDAP_P(( + LDAPMessage *lm )); + +LDAP_F( int ) +ldap_msgdelete LDAP_P(( + LDAP *ld, + int msgid )); /* * in search.c: */ -LDAP_F int ldap_search_ext LDAP_P(( +LDAP_F( int ) +ldap_search_ext LDAP_P(( LDAP *ld, - char *base, + LDAP_CONST char *base, int scope, - char *filter, + LDAP_CONST char *filter, char **attrs, LDAPControl **serverctrls, LDAPControl **clientctrls, @@ -835,11 +1123,12 @@ LDAP_F int ldap_search_ext LDAP_P(( int sizelimit, int *msgidp )); -LDAP_F int ldap_search_ext_s LDAP_P(( +LDAP_F( int ) +ldap_search_ext_s LDAP_P(( LDAP *ld, - char *base, + LDAP_CONST char *base, int scope, - char *filter, + LDAP_CONST char *filter, char **attrs, LDAPControl **serverctrls, LDAPControl **clientctrls, @@ -847,116 +1136,309 @@ LDAP_F int ldap_search_ext_s LDAP_P(( int sizelimit, LDAPMessage **res )); -LDAP_F int ldap_search LDAP_P(( LDAP *ld, char *base, int scope, char *filter, - char **attrs, int attrsonly )); -LDAP_F int ldap_search_s LDAP_P(( LDAP *ld, char *base, int scope, char *filter, - char **attrs, int attrsonly, LDAPMessage **res )); -LDAP_F int ldap_search_st LDAP_P(( LDAP *ld, char *base, int scope, char *filter, - char **attrs, int attrsonly, struct timeval *timeout, LDAPMessage **res )); +LDAP_F( int ) +ldap_search LDAP_P(( + LDAP *ld, + LDAP_CONST char *base, + int scope, + LDAP_CONST char *filter, + char **attrs, + int attrsonly )); + +LDAP_F( int ) +ldap_search_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *base, + int scope, + LDAP_CONST char *filter, + char **attrs, + int attrsonly, + LDAPMessage **res )); + +LDAP_F( int ) +ldap_search_st LDAP_P(( + LDAP *ld, + LDAP_CONST char *base, + int scope, + LDAP_CONST char *filter, + char **attrs, + int attrsonly, + struct timeval *timeout, + LDAPMessage **res )); /* * in ufn.c */ -LDAP_F int ldap_ufn_search_c LDAP_P(( LDAP *ld, char *ufn, char **attrs, - int attrsonly, LDAPMessage **res, int (*cancelproc)( void *cl ), +LDAP_F( int ) +ldap_ufn_search_c LDAP_P(( + LDAP *ld, + LDAP_CONST char *ufn, + char **attrs, + int attrsonly, + LDAPMessage **res, + int (*cancelproc)( void *cl ), void *cancelparm )); -LDAP_F int ldap_ufn_search_ct LDAP_P(( LDAP *ld, char *ufn, char **attrs, - int attrsonly, LDAPMessage **res, int (*cancelproc)( void *cl ), - void *cancelparm, char *tag1, char *tag2, char *tag3 )); -LDAP_F int ldap_ufn_search_s LDAP_P(( LDAP *ld, char *ufn, char **attrs, - int attrsonly, LDAPMessage **res )); -LDAP_F LDAPFiltDesc *ldap_ufn_setfilter LDAP_P(( LDAP *ld, char *fname )); -LDAP_F void ldap_ufn_setprefix LDAP_P(( LDAP *ld, char *prefix )); -LDAP_F int ldap_ufn_timeout LDAP_P(( void *tvparam )); + +LDAP_F( int ) +ldap_ufn_search_ct LDAP_P(( + LDAP *ld, + LDAP_CONST char *ufn, + char **attrs, + int attrsonly, + LDAPMessage **res, + int (*cancelproc)( void *cl ), + void *cancelparm, + char *tag1, + char *tag2, + char *tag3 )); + +LDAP_F( int ) +ldap_ufn_search_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *ufn, + char **attrs, + int attrsonly, + LDAPMessage **res )); + +LDAP_F( LDAPFiltDesc *) +ldap_ufn_setfilter LDAP_P(( + LDAP *ld, + LDAP_CONST char *fname )); + +LDAP_F( void ) +ldap_ufn_setprefix LDAP_P(( + LDAP *ld, + LDAP_CONST char *prefix )); + +LDAP_F( int ) +ldap_ufn_timeout LDAP_P(( + void *tvparam )); /* * in unbind.c */ -LDAP_F int ldap_unbind LDAP_P(( LDAP *ld )); -LDAP_F int ldap_unbind_s LDAP_P(( LDAP *ld )); +LDAP_F( int ) +ldap_unbind LDAP_P(( + LDAP *ld )); + +LDAP_F( int ) +ldap_unbind_s LDAP_P(( + LDAP *ld )); + +LDAP_F( int ) +ldap_unbind_ext LDAP_P(( + LDAP *ld, + LDAPControl **serverctrls, + LDAPControl **clientctrls)); +LDAP_F( int ) +ldap_unbind_ext_s LDAP_P(( + LDAP *ld, + LDAPControl **serverctrls, + LDAPControl **clientctrls)); /* * in getfilter.c */ -LDAP_F LDAPFiltDesc *ldap_init_getfilter LDAP_P(( char *fname )); -LDAP_F LDAPFiltDesc *ldap_init_getfilter_buf LDAP_P(( char *buf, long buflen )); -LDAP_F LDAPFiltInfo *ldap_getfirstfilter LDAP_P(( LDAPFiltDesc *lfdp, char *tagpat, - char *value )); -LDAP_F LDAPFiltInfo *ldap_getnextfilter LDAP_P(( LDAPFiltDesc *lfdp )); -LDAP_F void ldap_setfilteraffixes LDAP_P(( LDAPFiltDesc *lfdp, char *prefix, char *suffix )); -LDAP_F void ldap_build_filter LDAP_P(( char *buf, unsigned long buflen, - char *pattern, char *prefix, char *suffix, char *attr, - char *value, char **valwords )); +LDAP_F( LDAPFiltDesc *) +ldap_init_getfilter LDAP_P(( + LDAP_CONST char *fname )); + +LDAP_F( LDAPFiltDesc *) +ldap_init_getfilter_buf LDAP_P(( + /* LDAP_CONST */ char *buf, + long buflen )); + +LDAP_F( LDAPFiltInfo *) +ldap_getfirstfilter LDAP_P(( + LDAPFiltDesc *lfdp, + /* LDAP_CONST */ char *tagpat, + /* LDAP_CONST */ char *value )); + +LDAP_F( LDAPFiltInfo *) +ldap_getnextfilter LDAP_P(( + LDAPFiltDesc *lfdp )); + +LDAP_F( void ) +ldap_setfilteraffixes LDAP_P(( + LDAPFiltDesc *lfdp, + LDAP_CONST char *prefix, + LDAP_CONST char *suffix )); + +LDAP_F( void ) +ldap_build_filter LDAP_P(( + char *buf, + unsigned long buflen, + LDAP_CONST char *pattern, + LDAP_CONST char *prefix, + LDAP_CONST char *suffix, + LDAP_CONST char *attr, + LDAP_CONST char *value, + char **valwords )); /* * in free.c */ -LDAP_F void ldap_memfree LDAP_P(( void *p )); -LDAP_F void ldap_getfilter_free LDAP_P(( LDAPFiltDesc *lfdp )); -LDAP_F void ldap_mods_free LDAP_P(( LDAPMod **mods, int freemods )); +LDAP_F( void ) +ldap_memfree LDAP_P(( + void *p )); + +LDAP_F( void ) +ldap_getfilter_free LDAP_P(( + LDAPFiltDesc *lfdp )); + +LDAP_F( void ) +ldap_mods_free LDAP_P(( + LDAPMod **mods, + int freemods )); /* * in friendly.c */ -LDAP_F char *ldap_friendly_name LDAP_P(( char *filename, char *uname, +LDAP_F( char * ) +ldap_friendly_name LDAP_P(( + LDAP_CONST char *filename, + /* LDAP_CONST */ char *uname, + LDAPFriendlyMap **map )); + +LDAP_F( void ) +ldap_free_friendlymap LDAP_P(( LDAPFriendlyMap **map )); -LDAP_F void ldap_free_friendlymap LDAP_P(( LDAPFriendlyMap **map )); /* * in cldap.c */ -LDAP_F LDAP *cldap_open LDAP_P(( char *host, int port )); -LDAP_F void cldap_close LDAP_P(( LDAP *ld )); -LDAP_F int cldap_search_s LDAP_P(( LDAP *ld, char *base, int scope, char *filter, - char **attrs, int attrsonly, LDAPMessage **res, char *logdn )); -LDAP_F void cldap_setretryinfo LDAP_P(( LDAP *ld, int tries, int timeout )); +LDAP_F( LDAP * ) +cldap_open LDAP_P(( + LDAP_CONST char *host, + int port )); + +LDAP_F( void ) +cldap_close LDAP_P(( + LDAP *ld )); + +LDAP_F( int ) +cldap_search_s LDAP_P(( LDAP *ld, + LDAP_CONST char *base, + int scope, + LDAP_CONST char *filter, + char **attrs, + int attrsonly, + LDAPMessage **res, + char *logdn )); + +LDAP_F( void ) +cldap_setretryinfo LDAP_P(( + LDAP *ld, + int tries, + int timeout )); /* * in sort.c */ -LDAP_F int ldap_sort_entries LDAP_P(( LDAP *ld, - LDAPMessage **chain, char *attr, - int (*cmp) (const char *, const char *) )); -LDAP_F int ldap_sort_values LDAP_P(( LDAP *ld, - char **vals, int (*cmp) (const void *, const void *) )); -LDAP_F int ldap_sort_strcasecmp LDAP_P(( const void *a, const void *b )); +LDAP_F( int ) +ldap_sort_entries LDAP_P(( LDAP *ld, + LDAPMessage **chain, + LDAP_CONST char *attr, + int (*cmp) (LDAP_CONST char *, LDAP_CONST char *) )); + +LDAP_F( int ) +ldap_sort_values LDAP_P(( + LDAP *ld, + char **vals, + int (*cmp) (LDAP_CONST void *, LDAP_CONST void *) )); + +LDAP_F( int ) +ldap_sort_strcasecmp LDAP_P(( + LDAP_CONST void *a, + LDAP_CONST void *b )); /* * in url.c + * + * need _ext varients */ -LDAP_F int ldap_is_ldap_url LDAP_P(( char *url )); -LDAP_F int ldap_url_parse LDAP_P(( char *url, LDAPURLDesc **ludpp )); -LDAP_F void ldap_free_urldesc LDAP_P(( LDAPURLDesc *ludp )); -LDAP_F int ldap_url_search LDAP_P(( LDAP *ld, char *url, int attrsonly )); -LDAP_F int ldap_url_search_s LDAP_P(( LDAP *ld, char *url, int attrsonly, +LDAP_F( int ) +ldap_is_ldap_url LDAP_P(( + LDAP_CONST char *url )); + +LDAP_F( int ) +ldap_url_parse LDAP_P(( + LDAP_CONST char *url, + LDAPURLDesc **ludpp )); + +LDAP_F( void ) +ldap_free_urldesc LDAP_P(( + LDAPURLDesc *ludp )); + +LDAP_F( int ) +ldap_url_search LDAP_P(( + LDAP *ld, + LDAP_CONST char *url, + int attrsonly )); + +LDAP_F( int ) +ldap_url_search_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *url, + int attrsonly, + LDAPMessage **res )); + +LDAP_F( int ) +ldap_url_search_st LDAP_P(( + LDAP *ld, + LDAP_CONST char *url, + int attrsonly, + struct timeval *timeout, LDAPMessage **res )); -LDAP_F int ldap_url_search_st LDAP_P(( LDAP *ld, char *url, int attrsonly, - struct timeval *timeout, LDAPMessage **res )); /* * in charset.c + * DEPRECATED */ -LDAP_F void ldap_set_string_translators LDAP_P(( LDAP *ld, - BERTranslateProc encode_proc, BERTranslateProc decode_proc )); -LDAP_F int ldap_translate_from_t61 LDAP_P(( LDAP *ld, char **bufp, - unsigned long *lenp, int free_input )); -LDAP_F int ldap_translate_to_t61 LDAP_P(( LDAP *ld, char **bufp, +LDAP_F( void ) +ldap_set_string_translators LDAP_P(( + LDAP *ld, + BERTranslateProc encode_proc, + BERTranslateProc decode_proc )); + +LDAP_F( int ) +ldap_translate_from_t61 LDAP_P(( + LDAP *ld, + char **bufp, + unsigned long *lenp, + int free_input )); + +LDAP_F( int ) +ldap_translate_to_t61 LDAP_P(( + LDAP *ld, + char **bufp, unsigned long *lenp, int free_input )); -LDAP_F void ldap_enable_translation LDAP_P(( LDAP *ld, LDAPMessage *entry, + +LDAP_F( void ) +ldap_enable_translation LDAP_P(( + LDAP *ld, + LDAPMessage *entry, int enable )); -LDAP_F int ldap_t61_to_8859 LDAP_P(( char **bufp, unsigned long *buflenp, +LDAP_F( int ) +ldap_t61_to_8859 LDAP_P(( + char **bufp, + unsigned long *buflenp, int free_input )); -LDAP_F int ldap_8859_to_t61 LDAP_P(( char **bufp, unsigned long *buflenp, + +LDAP_F( int ) +ldap_8859_to_t61 LDAP_P(( + char **bufp, + unsigned long *buflenp, int free_input )); LDAP_END_DECL diff --git a/include/ldap_cdefs.h b/include/ldap_cdefs.h index cd86d77f97..b799e9d6c5 100644 --- a/include/ldap_cdefs.h +++ b/include/ldap_cdefs.h @@ -49,12 +49,22 @@ #endif /* no prototypes */ -#ifndef LDAP_F +#ifndef LDAP_F_PRE # ifdef _WIN32 -# define LDAP_F __declspec( dllexport ) +# define LDAP_F_PRE extern __declspec( dllexport ) # else /* ! _WIN32 */ -# define LDAP_F extern +# define LDAP_F_PRE extern # endif /* _WIN32 */ #endif /* LDAP_FDECL */ +#ifndef LDAP_F_POST +# ifdef _WIN32 +# define LDAP_F_POST +# else /* ! _WIN32 */ +# define LDAP_F_POST +# endif /* _WIN32 */ +#endif /* LDAP_FDECL */ +#ifndef LDAP_F +#define LDAP_F(type) LDAP_F_PRE type LDAP_F_POST +#endif #endif /* _LDAP_CDEFS_H */ diff --git a/include/ldap_features.h.nt b/include/ldap_features.h.nt index d6ebe3ed4b..f1c2e3625b 100644 --- a/include/ldap_features.h.nt +++ b/include/ldap_features.h.nt @@ -30,7 +30,7 @@ ** LDAP_API_FEATURE_OPERATION_THREAD_SAFE ** ** The preprocessor flag LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE -** can be used to determine if -lldap_r is available at compile +** can be used to determine if -lldap_r is availalbe at compile ** time. You must define LDAP_THREAD_SAFE if and only if you ** link with -lldap_r. ** @@ -44,7 +44,7 @@ /* #undef LDAP_API_FEATURE_X_OPENLDAP_REENTRANT */ /* is threadsafe version of -lldap (ie: -lldap_r) *available* or not */ -/* #undef LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE */ +#define LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE LDAP_VENDOR_VERSION /* LDAP v2 DNS */ /* #undef LDAP_API_FEATURE_X_OPENLDAP_V2_DNS */ diff --git a/include/ldap_log.h b/include/ldap_log.h index c5af7c0d52..0714e952e5 100644 --- a/include/ldap_log.h +++ b/include/ldap_log.h @@ -39,7 +39,7 @@ LDAP_BEGIN_DECL #define LDAP_DEBUG_SHELL 0x0400 #define LDAP_DEBUG_PARSE 0x0800 -#define LDAP_DEBUG_DEPRECIATED 0x1000 +#define LDAP_DEBUG_DEPRECATED 0x1000 #define LDAP_DEBUG_NONE 0x8000 #define LDAP_DEBUG_ANY -1 @@ -72,7 +72,7 @@ extern int ldap_syslog_level; fprintf( stderr, (fmt), (arg1), (arg2), (arg3) ); \ } while ( 0 ) #else /* !WINSOCK */ -extern void Debug( int level, char* fmt, ... ); +extern void Debug( int level, const char* fmt, ... ); #endif /* !WINSOCK */ #endif /* LDAP_SYSLOG */ #else /* LDAP_DEBUG */ diff --git a/include/ldap_pvt.h b/include/ldap_pvt.h index a14a2a80a2..d7157b1fe2 100644 --- a/include/ldap_pvt.h +++ b/include/ldap_pvt.h @@ -21,14 +21,21 @@ LDAP_BEGIN_DECL struct hostent; /* avoid pulling in */ -LDAP_F char *ldap_pvt_ctime LDAP_P(( const time_t *tp, char *buf )); -LDAP_F int ldap_pvt_gethostbyname_a LDAP_P(( +LDAP_F( char * ) +ldap_pvt_ctime LDAP_P(( + const time_t *tp, + char *buf )); + +LDAP_F( int ) +ldap_pvt_gethostbyname_a LDAP_P(( const char *name, struct hostent *resbuf, char **buf, struct hostent **result, int *herrno_ptr )); -LDAP_F int ldap_pvt_gethostbyaddr_a LDAP_P(( + +LDAP_F( int ) +ldap_pvt_gethostbyaddr_a LDAP_P(( const char *addr, int len, int type, @@ -36,7 +43,9 @@ LDAP_F int ldap_pvt_gethostbyaddr_a LDAP_P(( char **buf, struct hostent **result, int *herrno_ptr )); -LDAP_F void ldap_pvt_init_utils LDAP_P(( void )); + +LDAP_F( void ) +ldap_pvt_init_utils LDAP_P(( void )); LDAP_END_DECL diff --git a/include/ldap_pvt_thread.h b/include/ldap_pvt_thread.h index 77b19031ba..cf070b220f 100644 --- a/include/ldap_pvt_thread.h +++ b/include/ldap_pvt_thread.h @@ -120,14 +120,15 @@ LDAP_END_DECL #elif HAVE_NT_THREADS -#include -#include - LDAP_BEGIN_DECL -typedef HANDLE ldap_pvt_thread_t; -typedef HANDLE ldap_pvt_thread_mutex_t; -typedef HANDLE ldap_pvt_thread_cond_t; +#define WIN32_LEAN_AND_MEAN +#include +#include + +typedef unsigned long ldap_pvt_thread_t; +typedef HANDLE ldap_pvt_thread_mutex_t; +typedef HANDLE ldap_pvt_thread_cond_t; LDAP_END_DECL @@ -156,84 +157,85 @@ LDAP_END_DECL #ifndef NO_THREADS # define HAVE_THREADS 1 - #endif LDAP_BEGIN_DECL -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_initialize LDAP_P(( void )); -LDAP_F int + +LDAP_F( int ) ldap_pvt_thread_destroy LDAP_P(( void )); -LDAP_F unsigned int +LDAP_F( unsigned int ) ldap_pvt_thread_sleep LDAP_P(( unsigned int s )); #ifdef HAVE_GETCONCURRENCY -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_get_concurrency LDAP_P(( void )); #endif + #ifdef HAVE_SETCONCURRENCY # ifndef LDAP_THREAD_CONCURRENCY /* three concurrent threads should be enough */ # define LDAP_THREAD_CONCURRENCY 3 # endif -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_set_concurrency LDAP_P(( int )); #endif #define LDAP_PVT_THREAD_CREATE_JOINABLE 0 #define LDAP_PVT_THREAD_CREATE_DETACHED 1 -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_create LDAP_P(( ldap_pvt_thread_t * thread, int detach, void *(*start_routine)( void * ), void *arg)); -LDAP_F void +LDAP_F( void ) ldap_pvt_thread_exit LDAP_P(( void *retval )); -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_join LDAP_P(( ldap_pvt_thread_t thread, void **status )); -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_kill LDAP_P(( ldap_pvt_thread_t thread, int signo )); -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_yield LDAP_P(( void )); -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_cond_init LDAP_P(( ldap_pvt_thread_cond_t *cond )); -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_cond_destroy LDAP_P(( ldap_pvt_thread_cond_t *cond )); -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_cond_signal LDAP_P(( ldap_pvt_thread_cond_t *cond )); -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_cond_broadcast LDAP_P(( ldap_pvt_thread_cond_t *cond )); -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_cond_wait LDAP_P(( ldap_pvt_thread_cond_t *cond, ldap_pvt_thread_mutex_t *mutex )); -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_mutex_init LDAP_P(( ldap_pvt_thread_mutex_t *mutex )); -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_mutex_destroy LDAP_P(( ldap_pvt_thread_mutex_t *mutex )); -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_mutex_lock LDAP_P(( ldap_pvt_thread_mutex_t *mutex )); -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_mutex_trylock LDAP_P(( ldap_pvt_thread_mutex_t *mutex )); -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_mutex_unlock LDAP_P(( ldap_pvt_thread_mutex_t *mutex )); typedef struct ldap_pvt_thread_rdwr_var { @@ -248,29 +250,38 @@ typedef struct ldap_pvt_thread_rdwr_var { int ltrw_w_wait; } ldap_pvt_thread_rdwr_t; -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_rdwr_init LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp)); -LDAP_F int + +LDAP_F( int ) ldap_pvt_thread_rdwr_destroy LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp)); -LDAP_F int + +LDAP_F( int ) ldap_pvt_thread_rdwr_rlock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp)); -LDAP_F int + +LDAP_F( int ) ldap_pvt_thread_rdwr_rtrylock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp)); -LDAP_F int + +LDAP_F( int ) ldap_pvt_thread_rdwr_runlock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp)); -LDAP_F int + +LDAP_F( int ) ldap_pvt_thread_rdwr_wlock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp)); -LDAP_F int + +LDAP_F( int ) ldap_pvt_thread_rdwr_wtrylock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp)); -LDAP_F int + +LDAP_F( int ) ldap_pvt_thread_rdwr_wunlock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp)); #ifdef LDAP_DEBUG -LDAP_F int +LDAP_F( int ) ldap_pvt_thread_rdwr_readers LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp)); -LDAP_F int + +LDAP_F( int ) ldap_pvt_thread_rdwr_writers LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp)); -LDAP_F int + +LDAP_F( int ) ldap_pvt_thread_rdwr_active LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp)); #endif /* LDAP_DEBUG */ diff --git a/include/ldif.h b/include/ldif.h index 691c8bb52f..ee0fac4903 100644 --- a/include/ldif.h +++ b/include/ldif.h @@ -47,17 +47,26 @@ extern int ldif_debug; ((tlen) + 4 + LDIF_BASE64_LEN(vlen) \ + ((LDIF_BASE64_LEN(vlen) + (tlen) + 3) / LDIF_LINE_WIDTH * 2 )) -LDAP_F int -ldif_parse_line LDAP_P(( char *line, char **type, char **value, int *vlen)); +LDAP_F( int ) +ldif_parse_line LDAP_P(( + LDAP_CONST char *line, + char **type, char **value, int *vlen)); -LDAP_F char * +LDAP_F( char * ) ldif_getline LDAP_P(( char **next )); -LDAP_F void -ldif_put_type_and_value LDAP_P(( char **out, char *t, char *val, int vlen )); +LDAP_F( void ) +ldif_put_type_and_value LDAP_P(( + char **out, + LDAP_CONST char *t, + LDAP_CONST char *val, + int vlen )); -LDAP_F char -*ldif_type_and_value LDAP_P(( char *type, char *val, int vlen )); +LDAP_F( char * ) +ldif_type_and_value LDAP_P(( + LDAP_CONST char *type, + LDAP_CONST char *val, + int vlen )); LDAP_END_DECL diff --git a/include/lutil.h b/include/lutil.h index be87d7168f..56aea51f37 100644 --- a/include/lutil.h +++ b/include/lutil.h @@ -1,11 +1,6 @@ /* - * Copyright 1998,1999 The OpenLDAP Foundation, Redwood City, California, USA - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted only - * as authorized by the OpenLDAP Public License. A copy of this - * license is available at http://www.OpenLDAP.org/license.html or - * in file LICENSE in the top-level directory of the distribution. + * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ #ifndef _LUTIL_H @@ -20,12 +15,31 @@ LDAP_BEGIN_DECL /* ISC Base64 Routines */ /* base64.c */ -LDAP_F int lutil_b64_ntop LDAP_P((unsigned char const *, size_t, char *, size_t)); -LDAP_F int lutil_b64_pton LDAP_P((char const *, unsigned char *, size_t)); + +LDAP_F( int ) +lutil_b64_ntop LDAP_P(( + unsigned char const *, + size_t, + char *, + size_t)); + +LDAP_F( int ) +lutil_b64_pton LDAP_P(( + char const *, + unsigned char *, + size_t)); + /* detach.c */ -LDAP_F void lutil_detach LDAP_P((int debug, int do_close)); +LDAP_F( void ) +lutil_detach LDAP_P(( + int debug, + int do_close)); + /* passwd.c */ -LDAP_F int lutil_passwd LDAP_P((const char *cred, const char *passwd)); +LDAP_F( int ) +lutil_passwd LDAP_P(( + const char *cred, + const char *passwd)); LDAP_END_DECL diff --git a/include/lutil_lockf.h b/include/lutil_lockf.h index 2ff75b9bb0..86fc9cebd6 100644 --- a/include/lutil_lockf.h +++ b/include/lutil_lockf.h @@ -18,8 +18,11 @@ LDAP_BEGIN_DECL -LDAP_F int lutil_lockf LDAP_P(( int fd )); -LDAP_F int lutil_unlockf LDAP_P(( int fd )); +LDAP_F( int ) +lutil_lockf LDAP_P(( int fd )); + +LDAP_F( int ) +lutil_unlockf LDAP_P(( int fd )); LDAP_END_DECL diff --git a/include/lutil_md5.h b/include/lutil_md5.h index 892f30ba32..f3cbbc69cf 100644 --- a/include/lutil_md5.h +++ b/include/lutil_md5.h @@ -35,19 +35,23 @@ struct lutil_MD5Context { unsigned char in[64]; }; -LDAP_F void lutil_MD5Init LDAP_P(( +LDAP_F( void ) +lutil_MD5Init LDAP_P(( struct lutil_MD5Context *context)); -LDAP_F void lutil_MD5Update LDAP_P(( +LDAP_F( void ) +lutil_MD5Update LDAP_P(( struct lutil_MD5Context *context, unsigned char const *buf, unsigned len)); -LDAP_F void lutil_MD5Final LDAP_P(( +LDAP_F( void ) +lutil_MD5Final LDAP_P(( unsigned char digest[16], struct lutil_MD5Context *context)); -LDAP_F void lutil_MD5Transform LDAP_P(( +LDAP_F( void ) +lutil_MD5Transform LDAP_P(( uint32 buf[4], const unsigned char in[64])); diff --git a/include/lutil_sha1.h b/include/lutil_sha1.h index da40db8fb6..b51da64e66 100644 --- a/include/lutil_sha1.h +++ b/include/lutil_sha1.h @@ -36,25 +36,32 @@ typedef struct { unsigned char buffer[64]; } lutil_SHA1_CTX; -LDAP_F void lutil_SHA1Transform +LDAP_F( void ) +lutil_SHA1Transform LDAP_P((uint32 state[5], const unsigned char buffer[64])); -LDAP_F void lutil_SHA1Init +LDAP_F( void ) +lutil_SHA1Init LDAP_P((lutil_SHA1_CTX *context)); -LDAP_F void lutil_SHA1Update +LDAP_F( void ) +lutil_SHA1Update LDAP_P((lutil_SHA1_CTX *context, const unsigned char *data, uint32 len)); -LDAP_F void lutil_SHA1Final +LDAP_F( void ) +lutil_SHA1Final LDAP_P((unsigned char digest[20], lutil_SHA1_CTX *context)); -LDAP_F char *lutil_SHA1End +LDAP_F( char * ) +lutil_SHA1End LDAP_P((lutil_SHA1_CTX *, char *)); -LDAP_F char *lutil_SHA1File +LDAP_F( char * ) +lutil_SHA1File LDAP_P((char *, char *)); -LDAP_F char *lutil_SHA1Data +LDAP_F( char * ) +lutil_SHA1Data LDAP_P((const unsigned char *, size_t, char *)); LDAP_END_DECL diff --git a/include/portable.h.nt b/include/portable.h.nt index 4236fa4a67..408ff50915 100644 --- a/include/portable.h.nt +++ b/include/portable.h.nt @@ -18,6 +18,12 @@ /* --------------------------------------------------- */ /* begin of MSVC5 specific entries */ +#define EXEEXT ".exe" + +#if defined( _DEBUG ) && !defined( LDAP_DEBUG ) +#define LDAP_DEBUG 1 +#endif + /* MSVC5 doesn't define _STDC_ but supports _STDC_ features */ #define __NEED_PROTOTYPES 1 #define HAVE_STDARG 1 @@ -34,17 +40,21 @@ #define snprintf _snprintf #define vsnprintf _vsnprintf -#define vsprintf _vsprintf - +/* #define vsprintf _vsprintf */ /* define type for caddr_t */ typedef char * caddr_t; #define LOG_DEBUG 0 #define openlog( a, b ) +#define closelog() /* we have NT threads */ +#ifdef _MT #define HAVE_NT_THREADS 1 +#else +#define NO_THREADS 1 +#endif /* we have spawnlp instead of fork/execlp */ #define HAVE_SPAWNLP 1 diff --git a/include/srchpref.h b/include/srchpref.h index cff3f95705..13995d14bb 100644 --- a/include/srchpref.h +++ b/include/srchpref.h @@ -79,22 +79,22 @@ struct ldap_searchobj { #define LDAP_SEARCHPREF_ERR_FILE 4 -LDAP_F int +LDAP_F( int ) ldap_init_searchprefs LDAP_P(( char *file, struct ldap_searchobj **solistp )); -LDAP_F int +LDAP_F( int ) ldap_init_searchprefs_buf LDAP_P(( char *buf, long buflen, struct ldap_searchobj **solistp )); -LDAP_F void +LDAP_F( void ) ldap_free_searchprefs LDAP_P(( struct ldap_searchobj *solist )); -LDAP_F struct ldap_searchobj * +LDAP_F( struct ldap_searchobj * ) ldap_first_searchobj LDAP_P(( struct ldap_searchobj *solist )); -LDAP_F struct ldap_searchobj * +LDAP_F( struct ldap_searchobj * ) ldap_next_searchobj LDAP_P(( struct ldap_searchobj *sollist, struct ldap_searchobj *so )); diff --git a/libraries/libavl/libavl.dsp b/libraries/libavl/libavl.dsp index 66b966f1fe..756a1f3190 100644 --- a/libraries/libavl/libavl.dsp +++ b/libraries/libavl/libavl.dsp @@ -20,6 +20,8 @@ CFG=libavl - Win32 Single Debug !MESSAGE "libavl - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "libavl - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE "libavl - Win32 Single Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "libavl - Win32 Single Release" (based on\ + "Win32 (x86) Static Library") !MESSAGE # Begin Project @@ -36,8 +38,8 @@ CPP=cl.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "Release\libavl" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c @@ -78,11 +80,32 @@ LIB32=link.exe -lib # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "libavl__" -# PROP Intermediate_Dir "libavl__" +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\libavl" # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /ML /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "libavl - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "libavl_0" +# PROP BASE Intermediate_Dir "libavl_0" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\libavl" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo @@ -97,6 +120,7 @@ LIB32=link.exe -lib # Name "libavl - Win32 Release" # Name "libavl - Win32 Debug" # Name "libavl - Win32 Single Debug" +# Name "libavl - Win32 Single Release" # Begin Source File SOURCE=.\avl.c diff --git a/libraries/libavl/testavl.dsp b/libraries/libavl/testavl.dsp index b6501e9acd..9899b40e84 100644 --- a/libraries/libavl/testavl.dsp +++ b/libraries/libavl/testavl.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=testavl - Win32 Debug +CFG=testavl - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,16 @@ CFG=testavl - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "testavl.mak" CFG="testavl - Win32 Debug" +!MESSAGE NMAKE /f "testavl.mak" CFG="testavl - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "testavl - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "testavl - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "testavl - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "testavl - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -36,11 +40,12 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release\testavl" +# PROP Output_Dir "..\Release" # PROP Intermediate_Dir "Release\testavl" +# PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -48,7 +53,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "testavl - Win32 Debug" @@ -59,10 +64,35 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug\testavl" +# PROP Output_Dir "..\Debug" # PROP Intermediate_Dir "Debug\testavl" +# PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "testavl - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "testavl_" +# PROP BASE Intermediate_Dir "testavl_" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\testavl" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" @@ -71,7 +101,31 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "testavl - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "testavl0" +# PROP BASE Intermediate_Dir "testavl0" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\testavl" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 /nologo /subsystem:console /machine:I386 !ENDIF @@ -79,6 +133,8 @@ LINK32=link.exe # Name "testavl - Win32 Release" # Name "testavl - Win32 Debug" +# Name "testavl - Win32 Single Debug" +# Name "testavl - Win32 Single Release" # Begin Source File SOURCE=.\testavl.c diff --git a/libraries/liblber/assert.c b/libraries/liblber/assert.c index 1ee56cc3e8..d61306d29f 100644 --- a/libraries/liblber/assert.c +++ b/libraries/liblber/assert.c @@ -22,7 +22,7 @@ * issue for now. */ -void lber_pvt_assert(char* file, int line, char* test) +void ber_pvt_assert(char* file, int line, char* test) { fprintf(stderr, "Assertion failed: %s, file %s, line %d\n", diff --git a/libraries/liblber/bprint.c b/libraries/liblber/bprint.c index 12862427d4..34832a6b2c 100644 --- a/libraries/liblber/bprint.c +++ b/libraries/liblber/bprint.c @@ -17,26 +17,28 @@ * Print stuff */ static void -lber_error_print( char *data ) +ber_error_print( char *data ) { + assert( data != NULL ); + fputs( data, stderr ); fflush( stderr ); } -BER_LOG_PRINT_FN lber_pvt_log_print = lber_error_print; +BER_LOG_PRINT_FN ber_pvt_log_print = ber_error_print; /* * lber log */ -static int lber_log_check( int errlvl, int loglvl ) +static int ber_log_check( int errlvl, int loglvl ) { return errlvl & loglvl ? 1 : 0; } -int lber_pvt_log_printf +int ber_pvt_log_printf #ifdef HAVE_STDARG - (int errlvl, int loglvl, char *fmt, ...) + (int errlvl, int loglvl, const char *fmt, ...) #else ( va_alist ) va_dcl @@ -58,7 +60,9 @@ va_dcl fmt = va_arg( ap, char * ); #endif - if ( !lber_log_check( errlvl, loglvl )) { + assert( fmt != NULL ); + + if ( !ber_log_check( errlvl, loglvl )) { return 0; } @@ -69,22 +73,24 @@ va_dcl vsprintf( buf, fmt, ap ); /* hope it's not too long */ #else /* use doprnt() */ - chokeme = "choke me! I don't have a doprnt manual handy!"; +#error "vsprintf() required." #endif va_end(ap); - (*lber_pvt_log_print)( buf ); + (*ber_pvt_log_print)( buf ); return 1; } -static int lber_log_puts(int errlvl, int loglvl, char *buf) +static int ber_log_puts(int errlvl, int loglvl, char *buf) { - if ( !lber_log_check( errlvl, loglvl )) { + assert( buf != NULL ); + + if ( !ber_log_check( errlvl, loglvl )) { return 0; } - (*lber_pvt_log_print)( buf ); + (*ber_pvt_log_print)( buf ); return 1; } @@ -93,9 +99,14 @@ static int lber_log_puts(int errlvl, int loglvl, char *buf) */ int -lber_log_bprint(int errlvl, int loglvl, char *data, int len ) +ber_log_bprint(int errlvl, + int loglvl, + const char *data, + int len ) { - if ( !lber_log_check( errlvl, loglvl )) { + assert( data != NULL ); + + if ( !ber_log_check( errlvl, loglvl )) { return 0; } @@ -104,7 +115,9 @@ lber_log_bprint(int errlvl, int loglvl, char *data, int len ) } void -ber_bprint(char *data, int len ) +ber_bprint( + LDAP_CONST char *data, + int len ) { static const char hexdig[] = "0123456789abcdef"; #define BPLEN 48 @@ -112,11 +125,13 @@ ber_bprint(char *data, int len ) char buf[ BPLEN + sizeof("\t%s\n") ]; int i = 0; + assert( data != NULL ); + memset( out, 0, BPLEN ); for ( ;; ) { if ( len < 1 ) { sprintf( buf, "\t%s\n", ( i == 0 ) ? "(end)" : out ); - (*lber_pvt_log_print)( buf ); + (*ber_pvt_log_print)( buf ); break; } @@ -138,7 +153,7 @@ ber_bprint(char *data, int len ) if ( i > BPLEN - 2 ) { char data[128 + BPLEN]; sprintf( data, "\t%s\n", out ); - (*lber_pvt_log_print)(data); + (*ber_pvt_log_print)(data); memset( out, 0, BPLEN ); i = 0; continue; @@ -148,9 +163,15 @@ ber_bprint(char *data, int len ) } int -lber_log_dump( int errlvl, int loglvl, BerElement *ber, int inout ) +ber_log_dump( + int errlvl, + int loglvl, + const BerElement *ber, + int inout ) { - if ( !lber_log_check( errlvl, loglvl )) { + assert( ber != NULL ); + + if ( !ber_log_check( errlvl, loglvl )) { return 0; } @@ -159,16 +180,20 @@ lber_log_dump( int errlvl, int loglvl, BerElement *ber, int inout ) } void -ber_dump( BerElement *ber, int inout ) +ber_dump( + LDAP_CONST BerElement *ber, + int inout ) { char buf[132]; + assert( ber != NULL ); + sprintf( buf, "ber_dump: buf 0x%lx, ptr 0x%lx, end 0x%lx\n", (long) ber->ber_buf, (long) ber->ber_ptr, (long) ber->ber_end ); - (*lber_pvt_log_print)( buf ); + (*ber_pvt_log_print)( buf ); if ( inout == 1 ) { sprintf( buf, " current len %ld, contents:\n", @@ -184,9 +209,14 @@ ber_dump( BerElement *ber, int inout ) } int -lber_log_sos_dump( int errlvl, int loglvl, Seqorset *sos ) +lber_log_sos_dump( + int errlvl, + int loglvl, + const Seqorset *sos ) { - if ( !lber_log_check( errlvl, loglvl )) { + assert( sos != NULL ); + + if ( !ber_log_check( errlvl, loglvl )) { return 0; } @@ -195,26 +225,28 @@ lber_log_sos_dump( int errlvl, int loglvl, Seqorset *sos ) } void -ber_sos_dump( Seqorset *sos ) +ber_sos_dump( + LDAP_CONST Seqorset *sos ) { char buf[132]; - (*lber_pvt_log_print)( "*** sos dump ***\n" ); + assert( sos != NULL ); + + (*ber_pvt_log_print)( "*** sos dump ***\n" ); while ( sos != NULLSEQORSET ) { sprintf( buf, "ber_sos_dump: clen %ld first 0x%lx ptr 0x%lx\n", (long) sos->sos_clen, (long) sos->sos_first, (long) sos->sos_ptr ); - (*lber_pvt_log_print)( buf ); + (*ber_pvt_log_print)( buf ); sprintf( buf, " current len %ld contents:\n", (long) (sos->sos_ptr - sos->sos_first) ); - (*lber_pvt_log_print)( buf ); + (*ber_pvt_log_print)( buf ); ber_bprint( sos->sos_first, sos->sos_ptr - sos->sos_first ); sos = sos->sos_next; } - (*lber_pvt_log_print)( "*** end dump ***\n" ); -} - + (*ber_pvt_log_print)( "*** end dump ***\n" ); +} \ No newline at end of file diff --git a/libraries/liblber/decode.c b/libraries/liblber/decode.c index 75ec399433..1d87539e8a 100644 --- a/libraries/liblber/decode.c +++ b/libraries/liblber/decode.c @@ -38,6 +38,8 @@ ber_get_tag( BerElement *ber ) char *tagp; unsigned int i; + assert( ber != NULL ); + if ( ber_read( ber, (char *) &xbyte, 1 ) != 1 ) return( LBER_DEFAULT ); @@ -72,6 +74,9 @@ ber_skip_tag( BerElement *ber, unsigned long *len ) int noctets, diff; unsigned long netlen; + assert( ber != NULL ); + assert( len != NULL ); + /* * Any ber element looks like this: tag length contents. * Assuming everything's ok, we return the tag byte (we @@ -116,15 +121,20 @@ ber_skip_tag( BerElement *ber, unsigned long *len ) } unsigned long -ber_peek_tag( BerElement *ber, unsigned long *len ) +ber_peek_tag( + LDAP_CONST BerElement *ber_in, /* not const per c-api-02 */ + unsigned long *len ) { - char *save; unsigned long tag; + BerElement *ber = ber_dup( ber_in ); + + if( ber == NULL ) { + return LBER_ERROR; + } - save = ber->ber_ptr; tag = ber_skip_tag( ber, len ); - ber->ber_ptr = save; + ber_free( ber, 1 ); return( tag ); } @@ -135,6 +145,9 @@ ber_getnint( BerElement *ber, long *num, int len ) long netnum; char *p; + assert( ber != NULL ); + assert( num != NULL ); + /* * The tag and length have already been stripped off. We should * be sitting right before len bytes of 2's complement integer, @@ -396,7 +409,9 @@ ber_next_element( BerElement *ber, unsigned long *len, char *last ) unsigned long ber_scanf #if HAVE_STDARG - ( BerElement *ber, char *fmt, ... ) + ( BerElement *ber, + LDAP_CONST char *fmt, + ... ) #else ( va_alist ) va_dcl @@ -407,7 +422,7 @@ va_dcl BerElement *ber; char *fmt; #endif - char *fmt_reset; + LDAP_CONST char *fmt_reset; char *last; char *s, **ss, ***sss; struct berval ***bv, **bvp, *bval; @@ -415,6 +430,8 @@ va_dcl long *l; unsigned long rc, tag, len; + assert( ber != NULL ); + #ifdef HAVE_STDARG va_start( ap, fmt ); #else @@ -422,18 +439,32 @@ va_dcl ber = va_arg( ap, BerElement * ); fmt = va_arg( ap, char * ); #endif + + assert( ber != NULL ); + assert( fmt != NULL ); + fmt_reset = fmt; if ( ber->ber_debug ) { - lber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug, + ber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug, "ber_scanf fmt (%s) ber:\n", fmt ); - lber_log_dump( LDAP_DEBUG_BER, ber->ber_debug, ber, 1 ); + ber_log_dump( LDAP_DEBUG_BER, ber->ber_debug, ber, 1 ); } for ( rc = 0; *fmt && rc != LBER_DEFAULT; fmt++ ) { /* When this is modified, remember to update * the error-cleanup code below accordingly. */ switch ( *fmt ) { + case '!': { /* Hook */ + BERDecodeCallback *f; + void *p; + + f = va_arg( ap, BERDecodeCallback * ); + p = va_arg( ap, void * ); + + rc = (*f)( ber, p, 0 ); + } break; + case 'a': /* octet string - allocate storage as needed */ ss = va_arg( ap, char ** ); rc = ber_get_stringa( ber, ss ); @@ -576,7 +607,7 @@ va_dcl default: if( ber->ber_debug ) { - lber_log_printf( LDAP_DEBUG_ANY, ber->ber_debug, + ber_log_printf( LDAP_DEBUG_ANY, ber->ber_debug, "ber_scanf: unknown fmt %c\n", *fmt ); } rc = LBER_DEFAULT; @@ -601,6 +632,16 @@ va_dcl for ( ; fmt_reset < fmt; fmt_reset++ ) { switch ( *fmt_reset ) { + case '!': { /* Hook */ + BERDecodeCallback *f; + void *p; + + f = va_arg( ap, BERDecodeCallback * ); + p = va_arg( ap, void * ); + + (void) (*f)( ber, p, 1 ); + } break; + case 'a': /* octet string - allocate storage as needed */ ss = va_arg( ap, char ** ); if ( *ss ) { @@ -689,9 +730,8 @@ va_dcl void ber_bvfree( struct berval *bv ) { -#ifdef LBER_ASSERT assert(bv != NULL); /* bv damn better point to something */ -#endif + if ( bv->bv_val != NULL ) free( bv->bv_val ); free( (char *) bv ); @@ -702,19 +742,25 @@ ber_bvecfree( struct berval **bv ) { int i; -#ifdef LBER_ASSERT assert(bv != NULL); /* bv damn better point to something */ -#endif + for ( i = 0; bv[i] != NULL; i++ ) ber_bvfree( bv[i] ); free( (char *) bv ); } struct berval * -ber_bvdup( struct berval *bv ) +ber_bvdup( + LDAP_CONST struct berval *bv ) { struct berval *new; + assert( bv != NULL ); + + if( bv == NULL ) { + return NULL; + } + if ( (new = (struct berval *) malloc( sizeof(struct berval) )) == NULL ) { return( NULL ); @@ -744,6 +790,8 @@ void ber_set_string_translators( BerElement *ber, BERTranslateProc encode_proc, BERTranslateProc decode_proc ) { + assert( ber != NULL ); + ber->ber_encode_translate_proc = encode_proc; ber->ber_decode_translate_proc = decode_proc; } diff --git a/libraries/liblber/dtest.c b/libraries/liblber/dtest.c index beeac06718..4d84ea5999 100644 --- a/libraries/liblber/dtest.c +++ b/libraries/liblber/dtest.c @@ -49,25 +49,25 @@ main( int argc, char **argv ) cshow( stdout ); #endif /* MACOS */ - sb = lber_pvt_sb_alloc_fd( fileno(stdin) ); + sb = ber_sockbuf_alloc_fd( fileno(stdin) ); if( (ber = ber_alloc_t(LBER_USE_DER)) == NULL ) { perror( "ber_alloc_t" ); - exit( 1 ); + return( EXIT_FAILURE ); } if ( (tag = ber_get_next( sb, &len, ber )) == -1 ) { perror( "ber_get_next" ); - exit( 1 ); + return( EXIT_FAILURE ); } printf( "message has tag 0x%x and length %ld\n", tag, len ); if ( ber_scanf( ber, "i", &i ) == LBER_ERROR ) { fprintf( stderr, "ber_scanf returns -1\n" ); - exit( 1 ); + exit( EXIT_FAILURE ); } printf( "got int %ld\n", i ); - lber_pvt_sb_free( sb ); - return( 0 ); + ber_sockbuf_free( sb ); + return( EXIT_SUCCESS ); } diff --git a/libraries/liblber/dtest.dsp b/libraries/liblber/dtest.dsp index 61c1d691ff..abf4c679b3 100644 --- a/libraries/liblber/dtest.dsp +++ b/libraries/liblber/dtest.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=dtest - Win32 Debug +CFG=dtest - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,16 @@ CFG=dtest - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "dtest.mak" CFG="dtest - Win32 Debug" +!MESSAGE NMAKE /f "dtest.mak" CFG="dtest - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "dtest - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "dtest - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "dtest - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "dtest - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -36,12 +40,12 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release\dtest" +# PROP Output_Dir "..\Release" # PROP Intermediate_Dir "Release\dtest" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -49,7 +53,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 olber32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\Release" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\Release" !ELSEIF "$(CFG)" == "dtest - Win32 Debug" @@ -60,12 +64,12 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug\dtest" +# PROP Output_Dir "..\Debug" # PROP Intermediate_Dir "Debug\dtest" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe @@ -73,7 +77,57 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 olber32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" + +!ELSEIF "$(CFG)" == "dtest - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "dtest___" +# PROP BASE Intermediate_Dir "dtest___" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\dtest" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 olber32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\SDebug" + +!ELSEIF "$(CFG)" == "dtest - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "dtest__0" +# PROP BASE Intermediate_Dir "dtest__0" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\dtest" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 olber32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\Release" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\SRelease" !ENDIF @@ -81,6 +135,8 @@ LINK32=link.exe # Name "dtest - Win32 Release" # Name "dtest - Win32 Debug" +# Name "dtest - Win32 Single Debug" +# Name "dtest - Win32 Single Release" # Begin Source File SOURCE=.\dtest.c diff --git a/libraries/liblber/encode.c b/libraries/liblber/encode.c index c72fb99020..d3914c6151 100644 --- a/libraries/liblber/encode.c +++ b/libraries/liblber/encode.c @@ -103,6 +103,8 @@ ber_put_len( BerElement *ber, unsigned long len, int nosos ) long mask; unsigned long netlen; + assert( ber != NULL ); + /* * short len if it's less than 128 - one byte giving the len, * with bit 8 0. @@ -151,6 +153,8 @@ ber_put_int_or_enum( BerElement *ber, long num, unsigned long tag ) int len, lenlen; long netnum, mask; + assert( ber != NULL ); + sign = (num < 0); /* @@ -199,6 +203,8 @@ ber_put_int_or_enum( BerElement *ber, long num, unsigned long tag ) int ber_put_enum( BerElement *ber, long num, unsigned long tag ) { + assert( ber != NULL ); + if ( tag == LBER_DEFAULT ) tag = LBER_ENUMERATED; @@ -208,6 +214,8 @@ ber_put_enum( BerElement *ber, long num, unsigned long tag ) int ber_put_int( BerElement *ber, long num, unsigned long tag ) { + assert( ber != NULL ); + if ( tag == LBER_DEFAULT ) tag = LBER_INTEGER; @@ -215,7 +223,10 @@ ber_put_int( BerElement *ber, long num, unsigned long tag ) } int -ber_put_ostring( BerElement *ber, char *str, unsigned long len, +ber_put_ostring( + BerElement *ber, + LDAP_CONST char *str, + unsigned long len, unsigned long tag ) { int taglen, lenlen, rc; @@ -223,6 +234,9 @@ ber_put_ostring( BerElement *ber, char *str, unsigned long len, int free_str; #endif /* STR_TRANSLATION */ + assert( ber != NULL ); + assert( str != NULL ); + if ( tag == LBER_DEFAULT ) tag = LBER_OCTETSTRING; @@ -258,20 +272,47 @@ ber_put_ostring( BerElement *ber, char *str, unsigned long len, return( rc ); } +int +ber_put_berval( + BerElement *ber, + LDAP_CONST struct berval *bv, + unsigned long tag ) +{ + assert( ber != NULL ); + assert( bv != NULL ); + + if( bv == NULL ) { + return -1; + } + + return ber_put_ostring( ber, bv->bv_val, bv->bv_len, tag ); +} int -ber_put_string( BerElement *ber, char *str, unsigned long tag ) +ber_put_string( + BerElement *ber, + LDAP_CONST char *str, + unsigned long tag ) { + assert( ber != NULL ); + assert( str != NULL ); + return( ber_put_ostring( ber, str, strlen( str ), tag )); } int -ber_put_bitstring( BerElement *ber, char *str, - unsigned long blen /* in bits */, unsigned long tag ) +ber_put_bitstring( + BerElement *ber, + LDAP_CONST char *str, + unsigned long blen /* in bits */, + unsigned long tag ) { int taglen, lenlen, len; unsigned char unusedbits; + assert( ber != NULL ); + assert( str != NULL ); + if ( tag == LBER_DEFAULT ) tag = LBER_BITSTRING; @@ -317,6 +358,8 @@ ber_put_boolean( BerElement *ber, int boolval, unsigned long tag ) unsigned char trueval = 0xff; unsigned char falseval = 0x00; + assert( ber != NULL ); + if ( tag == LBER_DEFAULT ) tag = LBER_BOOLEAN; @@ -340,6 +383,8 @@ ber_start_seqorset( BerElement *ber, unsigned long tag ) { Seqorset *new; + assert( ber != NULL ); + if ( (new = (Seqorset *) calloc( sizeof(Seqorset), 1 )) == NULLSEQORSET ) return( -1 ); @@ -362,6 +407,8 @@ ber_start_seqorset( BerElement *ber, unsigned long tag ) int ber_start_seq( BerElement *ber, unsigned long tag ) { + assert( ber != NULL ); + if ( tag == LBER_DEFAULT ) tag = LBER_SEQUENCE; @@ -371,6 +418,8 @@ ber_start_seq( BerElement *ber, unsigned long tag ) int ber_start_set( BerElement *ber, unsigned long tag ) { + assert( ber != NULL ); + if ( tag == LBER_DEFAULT ) tag = LBER_SET; @@ -386,6 +435,8 @@ ber_put_seqorset( BerElement *ber ) Seqorset *next; Seqorset **sos = &ber->ber_sos; + assert( ber != NULL ); + /* * If this is the toplevel sequence or set, we need to actually * write the stuff out. Otherwise, it's already been put in @@ -496,12 +547,14 @@ ber_put_seqorset( BerElement *ber ) int ber_put_seq( BerElement *ber ) { + assert( ber != NULL ); return( ber_put_seqorset( ber ) ); } int ber_put_set( BerElement *ber ) { + assert( ber != NULL ); return( ber_put_seqorset( ber ) ); } @@ -509,7 +562,9 @@ ber_put_set( BerElement *ber ) int ber_printf #ifdef HAVE_STDARG - ( BerElement *ber, char *fmt, ... ) + ( BerElement *ber, + LDAP_CONST char *fmt, + ... ) #else ( va_alist ) va_dcl @@ -521,7 +576,7 @@ va_dcl char *fmt; #endif char *s, **ss; - struct berval **bv; + struct berval *bv, **bvp; int rc, i; unsigned long len; @@ -533,8 +588,21 @@ va_dcl fmt = va_arg( ap, char * ); #endif + assert( ber != NULL ); + assert( fmt != NULL ); + for ( rc = 0; *fmt && rc != -1; fmt++ ) { switch ( *fmt ) { + case '!': { /* hook */ + BEREncodeCallback *f; + void *p; + + f = va_arg( ap, BEREncodeCallback * ); + p = va_arg( ap, void * ); + + rc = (*f)( ber, p ); + } break; + case 'b': /* boolean */ i = va_arg( ap, int ); rc = ber_put_boolean( ber, i, ber->ber_tag ); @@ -560,6 +628,12 @@ va_dcl rc = ber_put_ostring( ber, s, len, ber->ber_tag ); break; + case 'O': /* berval octet string */ + bv = va_arg( ap, struct berval * ); + if( bv == NULL ) break; + rc = ber_put_berval( ber, bv, ber->ber_tag ); + break; + case 's': /* string */ s = va_arg( ap, char * ); rc = ber_put_string( ber, s, ber->ber_tag ); @@ -587,11 +661,11 @@ va_dcl break; case 'V': /* sequences of strings + lengths */ - if ( (bv = va_arg( ap, struct berval ** )) == NULL ) + if ( (bvp = va_arg( ap, struct berval ** )) == NULL ) break; - for ( i = 0; bv[i] != NULL; i++ ) { - if ( (rc = ber_put_ostring( ber, bv[i]->bv_val, - bv[i]->bv_len, ber->ber_tag )) == -1 ) + for ( i = 0; bvp[i] != NULL; i++ ) { + if ( (rc = ber_put_ostring( ber, bvp[i]->bv_val, + bvp[i]->bv_len, ber->ber_tag )) == -1 ) break; } break; @@ -614,7 +688,7 @@ va_dcl default: if( ber->ber_debug ) { - lber_log_printf( LDAP_DEBUG_ANY, ber->ber_debug, + ber_log_printf( LDAP_DEBUG_ANY, ber->ber_debug, "ber_printf: unknown fmt %c\n", *fmt ); } rc = -1; diff --git a/libraries/liblber/etest.c b/libraries/liblber/etest.c index 3e8ff55ced..66ae72d585 100644 --- a/libraries/liblber/etest.c +++ b/libraries/liblber/etest.c @@ -35,7 +35,7 @@ main( int argc, char **argv ) char *s, *p; #endif int fd, num; - Seqorset *sos = NULLSEQORSET; + Seqorset *sos = NULL; BerElement *ber; Sockbuf *sb; @@ -58,24 +58,26 @@ main( int argc, char **argv ) fd = fileno(stdout); #endif /* MACOS */ - sb = lber_pvt_sb_alloc_fd( fd ); + sb = ber_sockbuf_alloc_fd( fd); - if ( (ber = ber_alloc()) == NULLBER ) { + if( sb == NULL ) { + perror( "lber_sockbuf_alloc_fd" ); + exit( 1 ); + } + + if ( (ber = ber_alloc_t( LBER_USE_DER )) == NULL ) { perror( "ber_alloc" ); exit( 1 ); } +#ifndef notdef num = 7; if ( ber_printf( ber, "{ti}", 0x1f44, num ) == -1 ) { fprintf( stderr, "ber_printf returns -1" ); exit( 1 ); } - if ( ber_flush( sb, ber, 1 ) == -1 ) { - perror( "ber_flush" ); - exit( 1 ); - } -#ifdef notdef +#else for ( s = argv[1]; *s; s++ ) { if ( fgets( buf, sizeof(buf), stdin ) == NULL ) break; @@ -168,9 +170,13 @@ main( int argc, char **argv ) } } } - #endif - lber_pvt_sb_free( sb ); + if ( ber_flush( sb, ber, 1 ) == -1 ) { + perror( "ber_flush" ); + exit( 1 ); + } + + ber_sockbuf_free( sb ); return( 0 ); } diff --git a/libraries/liblber/etest.dsp b/libraries/liblber/etest.dsp index 521024a300..1dab68a7b8 100644 --- a/libraries/liblber/etest.dsp +++ b/libraries/liblber/etest.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=etest - Win32 Debug +CFG=etest - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,16 @@ CFG=etest - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "etest.mak" CFG="etest - Win32 Debug" +!MESSAGE NMAKE /f "etest.mak" CFG="etest - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "etest - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "etest - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "etest - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "etest - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -36,12 +40,12 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release\etest" +# PROP Output_Dir "..\Release" # PROP Intermediate_Dir "Release\etest" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -49,7 +53,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 olber32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\Release" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\Release" !ELSEIF "$(CFG)" == "etest - Win32 Debug" @@ -60,12 +64,12 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug\etest" +# PROP Output_Dir "..\Debug" # PROP Intermediate_Dir "Debug\etest" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe @@ -73,7 +77,57 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 olber32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" + +!ELSEIF "$(CFG)" == "etest - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "etest___" +# PROP BASE Intermediate_Dir "etest___" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\etest" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 olber32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\SDebug" + +!ELSEIF "$(CFG)" == "etest - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "etest__0" +# PROP BASE Intermediate_Dir "etest__0" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\etest" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 olber32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\Release" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\SRelease" !ENDIF @@ -81,6 +135,8 @@ LINK32=link.exe # Name "etest - Win32 Release" # Name "etest - Win32 Debug" +# Name "etest - Win32 Single Debug" +# Name "etest - Win32 Single Release" # Begin Source File SOURCE=.\etest.c diff --git a/libraries/liblber/idtest.c b/libraries/liblber/idtest.c index 6a5f9b2ed3..cc747152c3 100644 --- a/libraries/liblber/idtest.c +++ b/libraries/liblber/idtest.c @@ -18,6 +18,7 @@ #include "portable.h" #include +#include #ifdef HAVE_PSAP_H #include @@ -67,6 +68,6 @@ main( int argc, char **argv ) exit( 0 ); #else fprintf(stderr, "requires ISODE X.500 distribution.\n"); - exit( 1 ); + return( EXIT_FAILURE ); #endif } diff --git a/libraries/liblber/idtest.dsp b/libraries/liblber/idtest.dsp index 2d49b3a765..043fe4269b 100644 --- a/libraries/liblber/idtest.dsp +++ b/libraries/liblber/idtest.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=idtest - Win32 Debug +CFG=idtest - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,16 @@ CFG=idtest - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "idtest.mak" CFG="idtest - Win32 Debug" +!MESSAGE NMAKE /f "idtest.mak" CFG="idtest - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "idtest - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "idtest - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "idtest - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "idtest - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -36,12 +40,12 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release\idtest" +# PROP Output_Dir "..\Release" # PROP Intermediate_Dir "Release\idtest" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -49,7 +53,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 olber32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\Release" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\Release" !ELSEIF "$(CFG)" == "idtest - Win32 Debug" @@ -60,12 +64,12 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug\idtest" +# PROP Output_Dir "..\Debug" # PROP Intermediate_Dir "Debug\idtest" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe @@ -73,7 +77,57 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 olber32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" + +!ELSEIF "$(CFG)" == "idtest - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "idtest__" +# PROP BASE Intermediate_Dir "idtest__" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\idtest" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 olber32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\SDebug" + +!ELSEIF "$(CFG)" == "idtest - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "idtest_0" +# PROP BASE Intermediate_Dir "idtest_0" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\idtest" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 olber32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\Release" +# ADD LINK32 ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\SRelease" !ENDIF @@ -81,6 +135,8 @@ LINK32=link.exe # Name "idtest - Win32 Release" # Name "idtest - Win32 Debug" +# Name "idtest - Win32 Single Debug" +# Name "idtest - Win32 Single Release" # Begin Source File SOURCE=.\idtest.c diff --git a/libraries/liblber/io.c b/libraries/liblber/io.c index 085f1a9bc5..31e872c647 100644 --- a/libraries/liblber/io.c +++ b/libraries/liblber/io.c @@ -51,8 +51,11 @@ BerRead( Sockbuf *sb, char *buf, long len ) int c; long nread = 0; + assert( sb != NULL ); + assert( buf != NULL ); + while ( len > 0 ) { - if ( (c = lber_pvt_sb_read( sb, buf, len )) <= 0 ) { + if ( (c = ber_pvt_sb_read( sb, buf, len )) <= 0 ) { if ( nread > 0 ) break; return( c ); @@ -70,6 +73,9 @@ ber_read( BerElement *ber, char *buf, unsigned long len ) { unsigned long actuallen, nleft; + assert( ber != NULL ); + assert( buf != NULL ); + nleft = ber->ber_end - ber->ber_ptr; actuallen = nleft < len ? nleft : len; @@ -81,8 +87,15 @@ ber_read( BerElement *ber, char *buf, unsigned long len ) } long -ber_write( BerElement *ber, char *buf, unsigned long len, int nosos ) +ber_write( + BerElement *ber, + LDAP_CONST char *buf, + unsigned long len, + int nosos ) { + assert( ber != NULL ); + assert( buf != NULL ); + if ( nosos || ber->ber_sos == NULL ) { if ( ber->ber_ptr + len > ber->ber_end ) { if ( ber_realloc( ber, len ) != 0 ) @@ -111,6 +124,9 @@ ber_realloc( BerElement *ber, unsigned long len ) long off; char *oldbuf; + assert( ber != NULL ); + assert( len > 0 ); + have = (ber->ber_end - ber->ber_buf) / EXBUFSIZ; need = (len < EXBUFSIZ ? 1 : (len + (EXBUFSIZ - 1)) / EXBUFSIZ); total = have * EXBUFSIZ + need * EXBUFSIZ; @@ -150,6 +166,8 @@ ber_realloc( BerElement *ber, unsigned long len ) void ber_free( BerElement *ber, int freebuf ) { + assert( ber != NULL ); + if ( freebuf && ber->ber_buf != NULL ) free( ber->ber_buf ); ber->ber_buf = NULL; @@ -161,17 +179,20 @@ ber_flush( Sockbuf *sb, BerElement *ber, int freeit ) { long nwritten, towrite, rc; + assert( sb != NULL ); + assert( ber != NULL ); + if ( ber->ber_rwptr == NULL ) { ber->ber_rwptr = ber->ber_buf; } towrite = ber->ber_ptr - ber->ber_rwptr; if ( sb->sb_debug ) { - lber_log_printf( LDAP_DEBUG_ANY, sb->sb_debug, + ber_log_printf( LDAP_DEBUG_ANY, sb->sb_debug, "ber_flush: %ld bytes to sd %ld%s\n", towrite, (long) sb->sb_sd, ber->ber_rwptr != ber->ber_buf ? " (re-flush)" : "" ); - lber_log_bprint( LDAP_DEBUG_PACKETS, sb->sb_debug, + ber_log_bprint( LDAP_DEBUG_PACKETS, sb->sb_debug, ber->ber_rwptr, towrite ); } @@ -186,7 +207,7 @@ ber_flush( Sockbuf *sb, BerElement *ber, int freeit ) nwritten = 0; do { - rc = lber_pvt_sb_write( sb, ber->ber_rwptr, towrite ); + rc = ber_pvt_sb_write( sb, ber->ber_rwptr, towrite ); if (rc<=0) { return -1; } @@ -206,11 +227,14 @@ ber_alloc_t( int options ) { BerElement *ber; - if ( (ber = (BerElement *) calloc( 1, sizeof(BerElement) )) == NULLBER ) + ber = (BerElement *) calloc( 1, sizeof(BerElement) ); + + if ( ber == NULLBER ) return( NULLBER ); + ber->ber_tag = LBER_DEFAULT; ber->ber_options = options; - ber->ber_debug = lber_int_debug; + ber->ber_debug = ber_int_debug; return( ber ); } @@ -228,12 +252,14 @@ der_alloc( void ) } BerElement * -ber_dup( BerElement *ber ) +ber_dup( LDAP_CONST BerElement *ber ) { BerElement *new; - if ( (new = ber_alloc()) == NULLBER ) - return( NULLBER ); + assert( ber != NULL ); + + if ( (new = ber_alloc()) == NULL ) + return( NULL ); *new = *ber; @@ -245,6 +271,8 @@ ber_dup( BerElement *ber ) void ber_init_w_nullc( BerElement *ber, int options ) { + assert( ber != NULL ); + (void) memset( (char *)ber, '\0', sizeof( BerElement )); ber->ber_tag = LBER_DEFAULT; ber->ber_options = (char) options; @@ -259,6 +287,8 @@ ber_init( struct berval *bv ) { BerElement *ber; + assert( bv != NULL ); + if ( bv == NULL ) { return NULL; } @@ -288,11 +318,13 @@ ber_init( struct berval *bv ) ** the returned berval. */ int ber_flatten( - BerElement *ber, + LDAP_CONST BerElement *ber, struct berval **bvPtr) { struct berval *bv; + assert( bvPtr != NULL ); + if(bvPtr == NULL) { return( -1 ); } @@ -327,6 +359,8 @@ int ber_flatten( void ber_reset( BerElement *ber, int was_writing ) { + assert( ber != NULL ); + if ( was_writing ) { ber->ber_end = ber->ber_ptr; ber->ber_ptr = ber->ber_buf; @@ -347,7 +381,9 @@ get_tag( Sockbuf *sb ) char *tagp; unsigned int i; - if ( lber_pvt_sb_read( sb, (char *) &xbyte, 1 ) != 1 ) + assert( sb != NULL ); + + if ( ber_pvt_sb_read( sb, (char *) &xbyte, 1 ) != 1 ) return( LBER_DEFAULT ); if ( (xbyte & LBER_BIG_TAG_MASK) != LBER_BIG_TAG_MASK ) @@ -356,7 +392,7 @@ get_tag( Sockbuf *sb ) tagp = (char *) &tag; tagp[0] = xbyte; for ( i = 1; i < sizeof(long); i++ ) { - if ( lber_pvt_sb_read( sb, (char *) &xbyte, 1 ) != 1 ) + if ( ber_pvt_sb_read( sb, (char *) &xbyte, 1 ) != 1 ) return( LBER_DEFAULT ); tagp[i] = xbyte; @@ -375,7 +411,7 @@ get_tag( Sockbuf *sb ) #endif /* - * A rewrite of get_get_next that can safely be called multiple times + * A rewrite of ber_get_next that can safely be called multiple times * for the same packet. It will simply continue were it stopped until * a full packet is read. */ @@ -383,8 +419,12 @@ get_tag( Sockbuf *sb ) unsigned long ber_get_next( Sockbuf *sb, unsigned long *len, BerElement *ber ) { + assert( sb != NULL ); + assert( len != NULL ); + assert( ber != NULL ); + if ( ber->ber_debug ) { - lber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug, + ber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug, "ber_get_next\n" ); } @@ -411,7 +451,7 @@ ber_get_next( Sockbuf *sb, unsigned long *len, BerElement *ber ) if (PTR_IN_VAR(ber->ber_rwptr, ber->ber_tag)) { if (ber->ber_rwptr == (char *) &ber->ber_tag) { - if (lber_pvt_sb_read( sb, ber->ber_rwptr, 1)<=0) + if (ber_pvt_sb_read( sb, ber->ber_rwptr, 1)<=0) return LBER_DEFAULT; if ((ber->ber_rwptr[0] & LBER_BIG_TAG_MASK) != LBER_BIG_TAG_MASK) { @@ -423,7 +463,7 @@ ber_get_next( Sockbuf *sb, unsigned long *len, BerElement *ber ) } do { /* reading the tag... */ - if (lber_pvt_sb_read( sb, ber->ber_rwptr, 1)<=0) + if (ber_pvt_sb_read( sb, ber->ber_rwptr, 1)<=0) return LBER_DEFAULT; if (! (ber->ber_rwptr[0] & LBER_MORE_TAG_MASK) ) { ber->ber_tag>>=sizeof(ber->ber_tag) - @@ -438,7 +478,7 @@ ber_get_next( Sockbuf *sb, unsigned long *len, BerElement *ber ) get_lenbyte: if (ber->ber_rwptr==(char *) &ber->ber_usertag) { unsigned char c; - if (lber_pvt_sb_read( sb, (char *) &c, 1)<=0) + if (ber_pvt_sb_read( sb, (char *) &c, 1)<=0) return LBER_DEFAULT; if (c & 0x80) { int len = c & 0x7f; @@ -460,7 +500,7 @@ get_lenbyte: to_go = (char *) &ber->ber_len + sizeof( ber->ber_len ) - ber->ber_rwptr; assert( to_go > 0 ); - res = lber_pvt_sb_read( sb, ber->ber_rwptr, to_go ); + res = ber_pvt_sb_read( sb, ber->ber_rwptr, to_go ); if (res <=0) return LBER_DEFAULT; ber->ber_rwptr += res; @@ -498,7 +538,7 @@ fill_buffer: to_go = ber->ber_end - ber->ber_rwptr; assert( to_go > 0 ); - res = lber_pvt_sb_read( sb, ber->ber_rwptr, to_go ); + res = ber_pvt_sb_read( sb, ber->ber_rwptr, to_go ); if (res<=0) return LBER_DEFAULT; ber->ber_rwptr+=res; @@ -515,10 +555,10 @@ fill_buffer: ber->ber_rwptr = NULL; *len = ber->ber_len; if ( ber->ber_debug ) { - lber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug, + ber_log_printf( LDAP_DEBUG_TRACE, ber->ber_debug, "ber_get_next: tag 0x%lx len %ld contents:\n", ber->ber_tag, ber->ber_len ); - lber_log_dump( LDAP_DEBUG_BER, ber->ber_debug, ber, 1 ); + ber_log_dump( LDAP_DEBUG_BER, ber->ber_debug, ber, 1 ); } return (ber->ber_tag); } @@ -528,6 +568,8 @@ fill_buffer: void ber_clear( BerElement *ber, int freebuf ) { + assert( ber != NULL ); + if ((freebuf) && (ber->ber_buf)) free( ber->ber_buf ); ber->ber_buf = NULL; @@ -535,34 +577,3 @@ void ber_clear( BerElement *ber, int freebuf ) ber->ber_end = NULL; } -Sockbuf *lber_pvt_sb_alloc( void ) -{ - Sockbuf *sb = calloc(1, sizeof(Sockbuf)); - lber_pvt_sb_init( sb ); - return sb; -} - -Sockbuf *lber_pvt_sb_alloc_fd( int fd ) -{ - Sockbuf *sb = lber_pvt_sb_alloc(); - lber_pvt_sb_set_desc( sb, fd ); - lber_pvt_sb_set_io( sb, &lber_pvt_sb_io_tcp, NULL ); - return sb; -} - -void lber_pvt_sb_free( Sockbuf *sb ) -{ - if(sb == NULL) return; - lber_pvt_sb_destroy( sb ); - free(sb); -} - -int lber_pvt_sb_get_option( Sockbuf *sb, int opt, void *outvalue ) -{ - return LBER_OPT_ERROR; -} - -int lber_pvt_sb_set_option( Sockbuf *sb, int opt, void *invalue ) -{ - return LBER_OPT_ERROR; -} diff --git a/libraries/liblber/lber-int.h b/libraries/liblber/lber-int.h index c9b9b29d53..2d5847e204 100644 --- a/libraries/liblber/lber-int.h +++ b/libraries/liblber/lber-int.h @@ -23,8 +23,8 @@ LDAP_BEGIN_DECL -extern int lber_int_debug; -#define lber_log_printf lber_pvt_log_printf +extern int ber_int_debug; +#define ber_log_printf ber_pvt_log_printf struct lber_options { short lbo_item_type; @@ -88,15 +88,15 @@ typedef struct sockbuf_io Sockbuf_IO; typedef struct sockbuf_sec Sockbuf_Sec; typedef struct sockbuf_buf Sockbuf_Buf; -#define lber_pvt_sb_get_desc( sb ) ((sb)->sb_sd) -#define lber_pvt_sb_set_desc( sb, val ) ((sb)->sb_sd =(val)) -#define lber_pvt_sb_in_use( sb ) ((sb)->sb_sd!=-1) +#define ber_pvt_sb_get_desc( sb ) ((sb)->sb_sd) +#define ber_pvt_sb_set_desc( sb, val ) ((sb)->sb_sd =(val)) +#define ber_pvt_sb_in_use( sb ) ((sb)->sb_sd!=-1) #ifdef USE_SASL -#define lber_pvt_sb_data_ready( sb ) \ +#define ber_pvt_sb_data_ready( sb ) \ (((sb)->sb_buf_ready) || ((sb)->sb_trans_ready) || ((sb)->sb_sec_ready)) #else -#define lber_pvt_sb_data_ready( sb ) \ +#define ber_pvt_sb_data_ready( sb ) \ (((sb)->sb_buf_ready) || ((sb)->sb_trans_ready)) #endif @@ -154,50 +154,70 @@ struct seqorset { /* * bprint.c */ -LDAP_F int lber_log_bprint LDAP_P(( +LDAP_F( int ) +ber_log_bprint LDAP_P(( int errlvl, int loglvl, - char *data, + const char *data, int len )); -LDAP_F int lber_log_dump LDAP_P(( +LDAP_F( int ) +ber_log_dump LDAP_P(( int errlvl, int loglvl, - BerElement *ber, + const BerElement *ber, int inout )); -LDAP_F int lber_log_sos_dump LDAP_P(( +LDAP_F( int ) +ber_log_sos_dump LDAP_P(( int errlvl, int loglvl, - Seqorset *sos )); - -/* io.c */ -LDAP_F Sockbuf *lber_pvt_sb_alloc LDAP_P(( void )); -LDAP_F Sockbuf *lber_pvt_sb_alloc_fd LDAP_P(( int )); -LDAP_F Sockbuf *lber_pvt_sb_alloc_fd LDAP_P(( int )); -LDAP_F void lber_pvt_sb_free LDAP_P(( Sockbuf * )); -LDAP_F int lber_pvt_sb_get_option LDAP_P(( Sockbuf *, int, void * )); -LDAP_F int lber_pvt_sb_set_option LDAP_P(( Sockbuf *, int, void * )); + const Seqorset *sos )); /* sockbuf.c */ -LDAP_F int lber_pvt_sb_init LDAP_P(( Sockbuf *sb )); -LDAP_F int lber_pvt_sb_destroy LDAP_P(( Sockbuf *sb )); +LDAP_F( int ) +ber_pvt_sb_init LDAP_P(( Sockbuf *sb )); + +LDAP_F( int ) +ber_pvt_sb_destroy LDAP_P(( Sockbuf *sb )); #ifdef USE_SASL -LDAP_F int lber_pvt_sb_set_sec LDAP_P(( Sockbuf *sb, Sockbuf_Sec *sec, void *arg )); -LDAP_F int lber_pvt_sb_clear_sec LDAP_P(( Sockbuf *sb )); + +LDAP_F( int ) +ber_pvt_sb_set_sec LDAP_P(( Sockbuf *sb, Sockbuf_Sec *sec, void *arg )); + +LDAP_F( int ) +ber_pvt_sb_clear_sec LDAP_P(( Sockbuf *sb )); #endif -LDAP_F int lber_pvt_sb_set_io LDAP_P(( Sockbuf *sb, Sockbuf_IO *layer, void *arg )); -LDAP_F int lber_pvt_sb_clear_io LDAP_P(( Sockbuf *sb )); -LDAP_F int lber_pvt_sb_close LDAP_P((Sockbuf *sb )); -LDAP_F int lber_pvt_sb_set_nonblock LDAP_P(( Sockbuf *sb, int nb )); -LDAP_F int lber_pvt_sb_set_readahead LDAP_P(( Sockbuf *sb, int rh )); -LDAP_F long lber_pvt_sb_read LDAP_P(( Sockbuf *sb, void *buf, long len )); -LDAP_F long lber_pvt_sb_write LDAP_P(( Sockbuf *sb, void *buf, long len )); -LDAP_F int lber_pvt_sb_udp_set_dst LDAP_P((Sockbuf *sb, void *addr )); -LDAP_F void *lber_pvt_sb_udp_get_src LDAP_P((Sockbuf *sb )); - -extern Sockbuf_IO lber_pvt_sb_io_tcp; -extern Sockbuf_IO lber_pvt_sb_io_udp; + +LDAP_F( int ) +ber_pvt_sb_set_io LDAP_P(( Sockbuf *sb, Sockbuf_IO *layer, void *arg )); + +LDAP_F( int ) +ber_pvt_sb_clear_io LDAP_P(( Sockbuf *sb )); + +LDAP_F( int ) +ber_pvt_sb_close LDAP_P((Sockbuf *sb )); + +LDAP_F( int ) +ber_pvt_sb_set_nonblock LDAP_P(( Sockbuf *sb, int nb )); + +LDAP_F( int ) +ber_pvt_sb_set_readahead LDAP_P(( Sockbuf *sb, int rh )); + +LDAP_F( long ) +ber_pvt_sb_read LDAP_P(( Sockbuf *sb, void *buf, long len )); + +LDAP_F( long ) +ber_pvt_sb_write LDAP_P(( Sockbuf *sb, void *buf, long len )); + +LDAP_F( int ) +ber_pvt_sb_udp_set_dst LDAP_P((Sockbuf *sb, void *addr )); + +LDAP_F( void * ) +ber_pvt_sb_udp_get_src LDAP_P((Sockbuf *sb )); + +extern Sockbuf_IO ber_pvt_sb_io_tcp; +extern Sockbuf_IO ber_pvt_sb_io_udp; #endif /* _LBER_INT_H */ diff --git a/libraries/liblber/liblber.dsp b/libraries/liblber/liblber.dsp index 07df76cb76..ceaf8ca80e 100644 --- a/libraries/liblber/liblber.dsp +++ b/libraries/liblber/liblber.dsp @@ -42,7 +42,7 @@ CPP=cl.exe # PROP Intermediate_Dir "Release\liblber" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_WINDOWS" /YX /FD /c BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo @@ -80,8 +80,8 @@ LIB32=link.exe -lib # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "liblber_" -# PROP Intermediate_Dir "liblber_" +# PROP Output_Dir "..\Sdebug" +# PROP Intermediate_Dir "SDebug\liblber" # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c # ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c @@ -101,11 +101,11 @@ LIB32=link.exe -lib # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "liblber0" -# PROP Intermediate_Dir "liblber0" +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\liblber" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_WINDOWS" /YX /FD /c BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo @@ -151,26 +151,10 @@ SOURCE=..\..\include\lber_pvt.h # End Source File # Begin Source File -SOURCE=..\..\include\ldap_cdefs.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\ldap_features.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\ldap_log.h -# End Source File -# Begin Source File - SOURCE=.\options.c # End Source File # Begin Source File -SOURCE=..\..\include\portable.h -# End Source File -# Begin Source File - SOURCE=.\sockbuf.c # End Source File # End Target diff --git a/libraries/liblber/options.c b/libraries/liblber/options.c index 6bdacc6bfc..4546861619 100644 --- a/libraries/liblber/options.c +++ b/libraries/liblber/options.c @@ -8,10 +8,10 @@ #include "lber-int.h" -int lber_int_debug = 0; +int ber_int_debug = 0; int -lber_get_option( +ber_get_option( void *item, int option, void *outvalue) @@ -26,7 +26,7 @@ lber_get_option( if(item == NULL) { if(option == LBER_OPT_BER_DEBUG) { - * (int *) outvalue = lber_int_debug; + * (int *) outvalue = ber_int_debug; return LBER_OPT_SUCCESS; } @@ -54,7 +54,7 @@ lber_get_option( } int -lber_set_option( +ber_set_option( void *item, int option, void *invalue) @@ -69,11 +69,11 @@ lber_set_option( if(item == NULL) { if(option == LBER_OPT_BER_DEBUG) { - lber_int_debug = * (int *) invalue; + ber_int_debug = * (int *) invalue; return LBER_OPT_SUCCESS; } else if(option == LBER_OPT_LOG_PRINT_FN) { - lber_pvt_log_print = (BER_LOG_PRINT_FN) invalue; + ber_pvt_log_print = (BER_LOG_PRINT_FN) invalue; return LBER_OPT_SUCCESS; } diff --git a/libraries/liblber/sockbuf.c b/libraries/liblber/sockbuf.c index 8f2696d949..af6bbaef40 100644 --- a/libraries/liblber/sockbuf.c +++ b/libraries/liblber/sockbuf.c @@ -45,7 +45,7 @@ static long have_no_read( Sockbuf *sb, void *buf, long len ); static long have_no_write( Sockbuf *sb, void *buf, long len ); static int have_no_close( Sockbuf *sb ); -static Sockbuf_IO lber_pvt_sb_IO_None= +static Sockbuf_IO sb_IO_None= { NULL, /* sbi_setup */ NULL, /* sbi_release */ @@ -57,6 +57,8 @@ static Sockbuf_IO lber_pvt_sb_IO_None= static void update_status( Sockbuf *sb ) { + assert( sb != NULL ); + sb->sb_buf_ready = (sb->sb_buf.buf_ptr < sb->sb_buf.buf_end); #ifdef USE_SASL sb->sb_sec_ready = ((sb->sb_sec_buf_in.buf_end!=0) && @@ -69,9 +71,16 @@ update_status( Sockbuf *sb ) static int status_is_ok( Sockbuf *sb ) { - int obr = sb->sb_buf_ready; + int obr; +#ifdef USE_SASL + int osr; +#endif + + assert( sb != NULL ); + + obr = sb->sb_buf_ready; #ifdef USE_SASL - int osr = sb->sb_sec_ready; + osr = sb->sb_sec_ready; #endif update_status(sb); @@ -92,6 +101,9 @@ static long packet_length( char *buf ) { long size; + + assert( buf != NULL ); + size = (((unsigned long)buf[0])<<24)| (((unsigned long)buf[1])<<16)| (((unsigned long)buf[2])<<8)| @@ -112,9 +124,11 @@ packet_length( char *buf ) static int grow_buffer( Sockbuf_Buf * buf, long minsize ) { - long pw=MIN_BUF_SIZE; + long pw;; - for(;(pw MAX_BUF_SIZE) { /* this could mean that somebody is trying to crash us. */ return -1; @@ -161,6 +175,9 @@ sockbuf_sec_release( Sockbuf *sb, char *buf, long len ) char *end; long size; + assert( buf != NULL ); + assert( sb != NULL ); + assert( sb->sb_sec ); assert( sb->sb_sec->sbs_release ); assert( sb->sb_sec_buf_in.sb_ptr >= sb->sb_sec_buf_in.sb_end ); @@ -237,6 +254,9 @@ sockbuf_sec_protect( Sockbuf *sb, char *buf, long len ) long blen; long total; + assert( buf != NULL ); + + assert( sb != NULL ); assert( sb->sb_sec_out.buf_end == 0 ); assert( sb->sb_sec_out.buf_ptr == 0 ); @@ -279,7 +299,12 @@ static long sockbuf_copy_out( Sockbuf *sb, char **buf, long len ) { long blen = (sb->sb_buf.buf_end - sb->sb_buf.buf_ptr ); + + assert( buf != NULL ); + + assert( sb != NULL ); assert( status_is_ok(sb) ); + if (blen) { long rlen = (blensb_buf.buf_base + sb->sb_buf.buf_ptr, rlen ); @@ -297,17 +322,46 @@ sockbuf_copy_out( Sockbuf *sb, char **buf, long len ) return len; } +Sockbuf *ber_sockbuf_alloc( void ) +{ + Sockbuf *sb = calloc(1, sizeof(Sockbuf)); + + if( sb == NULL ) return NULL; + + ber_pvt_sb_init( sb ); + return sb; +} + +Sockbuf *ber_sockbuf_alloc_fd( int fd ) +{ + Sockbuf *sb = ber_sockbuf_alloc(); + + if( sb == NULL ) return NULL; + + ber_pvt_sb_set_desc( sb, fd ); + ber_pvt_sb_set_io( sb, &ber_pvt_sb_io_tcp, NULL ); + return sb; +} + +void ber_sockbuf_free( Sockbuf *sb ) +{ + assert(sb != NULL); + ber_pvt_sb_destroy( sb ); + free(sb); +} long -lber_pvt_sb_read( Sockbuf *sb, void *buf_arg, long len ) +ber_pvt_sb_read( Sockbuf *sb, void *buf_arg, long len ) { char *buf; long ret; + assert( buf_arg != NULL ); + assert( sb != NULL ); assert( status_is_ok(sb) ); #if 0 - /* breaks slapd :-) */ - assert( lber_pvt_sb_in_use( sb ) ); + /* breaks slapd :-< */ + assert( ber_pvt_sb_in_use( sb ) ); #endif #ifdef TEST_PARTIAL_READ @@ -316,7 +370,8 @@ lber_pvt_sb_read( Sockbuf *sb, void *buf_arg, long len ) return -1; } - len = (rand() % len)+1; + if( len > 0 ) + len = (rand() % len)+1; #endif buf = (char *) buf_arg; @@ -461,6 +516,9 @@ do_return: long sockbuf_do_write( Sockbuf *sb ) { long to_go; + + assert( sb != NULL ); + to_go = sb->sb_sec_out.buf_end - sb->sb_sec_out.buf_ptr; assert( to_go > 0 ); /* there is something left of the last time... */ @@ -482,14 +540,14 @@ long sockbuf_do_write( Sockbuf *sb ) } #endif -long lber_pvt_sb_write( Sockbuf *sb, void *buf, long len_arg ) +long ber_pvt_sb_write( Sockbuf *sb, void *buf, long len_arg ) { long ret; long len = len_arg; assert( status_is_ok(sb) ); #if 0 /* unfortunately breaks slapd */ - assert( lber_pvt_sb_in_use( sb ) ); + assert( ber_pvt_sb_in_use( sb ) ); #endif #ifdef TEST_PARTIAL_WRITE if ((rand() & 3)==1) { /* 1 out of 4 */ @@ -540,22 +598,25 @@ long lber_pvt_sb_write( Sockbuf *sb, void *buf, long len_arg ) return ret; } -int lber_pvt_sb_close( Sockbuf *sb ) +int ber_pvt_sb_close( Sockbuf *sb ) { int ret; + + assert( sb != NULL ); assert( sb->sb_io ); assert( sb->sb_io->sbi_close ); assert( status_is_ok(sb) ); - assert( lber_pvt_sb_in_use( sb ) ); + assert( ber_pvt_sb_in_use( sb ) ); ret = sb->sb_io->sbi_close( sb ); - lber_pvt_sb_set_desc( sb, -1 ); + ber_pvt_sb_set_desc( sb, -1 ); return ret; } -int lber_pvt_sb_set_readahead( Sockbuf *sb, int rh ) +int ber_pvt_sb_set_readahead( Sockbuf *sb, int rh ) { + assert( sb != NULL ); assert( status_is_ok(sb) ); sb->sb_read_ahead = (rh!=0); return 0; @@ -563,8 +624,9 @@ int lber_pvt_sb_set_readahead( Sockbuf *sb, int rh ) #define USE_NONBLOCK #ifdef USE_NONBLOCK -int lber_pvt_sb_set_nonblock( Sockbuf *sb, int nb ) +int ber_pvt_sb_set_nonblock( Sockbuf *sb, int nb ) { + assert( sb != NULL ); assert( status_is_ok(sb) ); if (nb) { sb->sb_non_block = 1; @@ -577,16 +639,16 @@ int lber_pvt_sb_set_nonblock( Sockbuf *sb, int nb ) sb->sb_read_ahead = 0; #endif } - if (lber_pvt_sb_in_use(sb)) { + if (ber_pvt_sb_in_use(sb)) { #if HAVE_FCNTL - int flags = fcntl(lber_pvt_sb_get_desc(sb), F_GETFL); + int flags = fcntl(ber_pvt_sb_get_desc(sb), F_GETFL); flags |= O_NONBLOCK; - return fcntl(lber_pvt_sb_get_desc(sb), F_SETFL, flags); + return fcntl(ber_pvt_sb_get_desc(sb), F_SETFL, flags); #elif defined( FIONBIO ) /* WINSOCK requires the status to be a long */ ioctl_t status = (nb!=0); - return ioctl( lber_pvt_sb_get_desc(sb), FIONBIO, &status ); + return ioctl( ber_pvt_sb_get_desc(sb), FIONBIO, &status ); #endif /* FIONBIO */ } return 0; @@ -604,14 +666,18 @@ int lber_pvt_sb_set_nonblock( Sockbuf *sb, int nb ) static int sockbuf_buf_destroy( Sockbuf_Buf *buf ) { + assert( buf != NULL); + if (buf->buf_base) free( buf->buf_base ); sockbuf_buf_init( buf ); return 0; } -int lber_pvt_sb_init( Sockbuf *sb ) +int ber_pvt_sb_init( Sockbuf *sb ) { + assert( sb != NULL); + sb->sb_item_type=LBER_ITEM_SOCKBUF; sb->sb_options = 0; sb->sb_debug = 0; @@ -624,7 +690,7 @@ int lber_pvt_sb_init( Sockbuf *sb ) sb->sb_non_block = 0; sb->sb_fd = -1; sb->sb_iodata = NULL; - sb->sb_io = &lber_pvt_sb_IO_None; + sb->sb_io = &sb_IO_None; sb->sb_sd = -1; #ifdef DEADWOOD sb->sb_max_incoming = 0; @@ -640,22 +706,24 @@ int lber_pvt_sb_init( Sockbuf *sb ) return 0; } -int lber_pvt_sb_destroy( Sockbuf *sb ) +int ber_pvt_sb_destroy( Sockbuf *sb ) { + assert( sb != NULL); #ifdef USE_SASL - lber_pvt_sb_clear_sec(sb); + ber_pvt_sb_clear_sec(sb); sockbuf_buf_destroy( &(sb->sb_sec_buf_in) ); sockbuf_buf_destroy( &(sb->sb_sec_buf_out) ); #endif - lber_pvt_sb_clear_io(sb); + ber_pvt_sb_clear_io(sb); sockbuf_buf_destroy( &(sb->sb_buf) ); - return lber_pvt_sb_init( sb ); + return ber_pvt_sb_init( sb ); } #ifdef USE_SASL -int lber_pvt_sb_set_sec( Sockbuf *sb, Sockbuf_Sec * sec, void *arg ) +int ber_pvt_sb_set_sec( Sockbuf *sb, Sockbuf_Sec * sec, void *arg ) { int len; + assert( sb != NULL); if ((sb->sb_sec) || (sec==NULL)) return -1; @@ -681,8 +749,10 @@ int lber_pvt_sb_set_sec( Sockbuf *sb, Sockbuf_Sec * sec, void *arg ) return 0; } -int lber_pvt_sb_clear_sec( Sockbuf *sb ) +int ber_pvt_sb_clear_sec( Sockbuf *sb ) { + assert( sb != NULL); + if (sb->sb_buf.buf_ptr!=0) return -1; if (sb->sb_sec==NULL) @@ -710,9 +780,10 @@ int lber_pvt_sb_clear_sec( Sockbuf *sb ) } #endif -int lber_pvt_sb_set_io( Sockbuf *sb, Sockbuf_IO *trans, void *arg ) +int ber_pvt_sb_set_io( Sockbuf *sb, Sockbuf_IO *trans, void *arg ) { - assert( sb->sb_io == &lber_pvt_sb_IO_None ); + assert( sb != NULL); + assert( sb->sb_io == &sb_IO_None ); if (trans==NULL) return -1; @@ -725,15 +796,16 @@ int lber_pvt_sb_set_io( Sockbuf *sb, Sockbuf_IO *trans, void *arg ) return 0; } -int lber_pvt_sb_clear_io( Sockbuf *sb ) +int ber_pvt_sb_clear_io( Sockbuf *sb ) { - if (sb->sb_io==&lber_pvt_sb_IO_None) + assert( sb != NULL); + if (sb->sb_io==&sb_IO_None) return -1; if ((sb->sb_io->sbi_remove) && (sb->sb_io->sbi_remove( sb )<0)) return -1; - sb->sb_io = &lber_pvt_sb_IO_None; + sb->sb_io = &sb_IO_None; sb->sb_trans_ready = 0; @@ -747,11 +819,13 @@ int lber_pvt_sb_clear_io( Sockbuf *sb ) static long stream_read( Sockbuf *sb, void *buf, long len ) { + assert( sb != NULL); + #if defined(MACOS) /* * MacTCP/OpenTransport */ - return tcpread( lber_pvt_sb_get_desc(sb), 0, (unsigned char *)buf, + return tcpread( ber_pvt_sb_get_desc(sb), 0, (unsigned char *)buf, len, NULL ); #elif defined( HAVE_PCNFS ) || \ @@ -765,33 +839,36 @@ stream_read( Sockbuf *sb, void *buf, long len ) /* * 32-bit Windows Socket API (under Windows NT or Windows 95) */ + { int rc; - rc = recv( lber_pvt_sb_get_desc(sb), buf, len, 0 ); + rc = recv( ber_pvt_sb_get_desc(sb), buf, len, 0 ); #ifdef HAVE_WINSOCK if ( rc < 0 ) errno = WSAGetLastError(); #endif return rc; - + } #elif defined( HAVE_NCSA ) /* * NCSA Telnet TCP/IP stack (under DOS) */ - return nread( lber_pvt_sb_get_desc(sb), buf, len ); + return nread( ber_pvt_sb_get_desc(sb), buf, len ); #else - return read( lber_pvt_sb_get_desc(sb), buf, len ); + return read( ber_pvt_sb_get_desc(sb), buf, len ); #endif } static long stream_write( Sockbuf *sb, void *buf, long len ) { + assert( sb != NULL); + #if defined(MACOS) /* * MacTCP/OpenTransport */ #define MAX_WRITE 65535 - return tcpwrite( lber_pvt_sb_get_desc(sb), + return tcpwrite( ber_pvt_sb_get_desc(sb), (unsigned char *)(buf), (lensb_iodata = malloc( sizeof( struct dgram_data ) ); if (sb->sb_iodata==NULL) return -1; @@ -867,6 +949,7 @@ dgram_setup( Sockbuf *sb, void *arg ) static int dgram_release( Sockbuf *sb ) { + assert( sb != NULL); free( sb->sb_iodata ); return 0; } @@ -879,17 +962,20 @@ dgram_read( Sockbuf *sb, void *buf, long len ) int addrlen; struct dgram_data *dd; + assert( sb != NULL ); + assert( buf != NULL ); + dd = (struct dgram_data *)(sb->sb_iodata); addrlen = sizeof( struct sockaddr ); - rc=recvfrom( lber_pvt_sb_get_desc(sb), buf, len, 0, &(dd->src), &addrlen ); + rc=recvfrom( ber_pvt_sb_get_desc(sb), buf, len, 0, &(dd->src), &addrlen ); if ( sb->sb_debug ) { - lber_log_printf( LDAP_DEBUG_ANY, sb->sb_debug, + ber_log_printf( LDAP_DEBUG_ANY, sb->sb_debug, "dgram_read udp_read %d bytes\n", rc ); if ( rc > 0 ) - lber_log_bprint( LDAP_DEBUG_PACKETS, sb->sb_debug, + ber_log_bprint( LDAP_DEBUG_PACKETS, sb->sb_debug, buf, rc ); } return rc; @@ -905,9 +991,12 @@ dgram_write( Sockbuf *sb, void *buf, long len ) int rc; struct dgram_data *dd; + assert( sb != NULL ); + assert( buf != NULL ); + dd = (struct dgram_data *)(sb->sb_iodata); - rc=sendto( lber_pvt_sb_get_desc(sb), buf, len, 0, &(dd->dst), + rc=sendto( ber_pvt_sb_get_desc(sb), buf, len, 0, &(dd->dst), sizeof( struct sockaddr ) ); if ( rc <= 0 ) @@ -929,11 +1018,13 @@ dgram_write( Sockbuf *sb, void *buf, long len ) static int dgram_close( Sockbuf *sb ) { - tcp_close( lber_pvt_sb_get_desc(sb) ); + assert( sb != NULL ); + + tcp_close( ber_pvt_sb_get_desc(sb) ); return 0; } -Sockbuf_IO lber_pvt_sb_io_udp= +Sockbuf_IO ber_pvt_sb_io_udp= { dgram_setup, /* sbi_setup */ dgram_release, /* sbi_release */ @@ -942,19 +1033,21 @@ Sockbuf_IO lber_pvt_sb_io_udp= dgram_close, /* sbi_close */ }; -int lber_pvt_sb_udp_set_dst(Sockbuf *sb, void *addr ) +int ber_pvt_sb_udp_set_dst(Sockbuf *sb, void *addr ) { struct dgram_data *dd; - assert( sb->sb_io == &lber_pvt_sb_io_udp ); + assert( sb != NULL ); + assert( sb->sb_io == &ber_pvt_sb_io_udp ); dd = (struct dgram_data *) (sb->sb_iodata); memcpy( &(dd->dst), addr, sizeof( struct sockaddr ) ); return 0; } -void *lber_pvt_sb_udp_get_src( Sockbuf *sb ) +void *ber_pvt_sb_udp_get_src( Sockbuf *sb ) { struct dgram_data *dd; - assert( sb->sb_io == &lber_pvt_sb_io_udp ); + assert( sb != NULL ); + assert( sb->sb_io == &ber_pvt_sb_io_udp ); dd = (struct dgram_data *) (sb->sb_iodata); return &(dd->src); } @@ -970,7 +1063,8 @@ void *lber_pvt_sb_udp_get_src( Sockbuf *sb ) static long have_no_read( Sockbuf *sb, void *buf, long len ) { - lber_log_printf( LDAP_DEBUG_ANY, lber_int_debug, + assert( sb != NULL ); + ber_log_printf( LDAP_DEBUG_ANY, ber_int_debug, "warning: reading from uninitialized sockbuf\n"); errno = EBADF; return -1; @@ -979,7 +1073,8 @@ have_no_read( Sockbuf *sb, void *buf, long len ) static long have_no_write( Sockbuf *sb, void *buf, long len ) { - lber_log_printf( LDAP_DEBUG_ANY, lber_int_debug, + assert( sb != NULL ); + ber_log_printf( LDAP_DEBUG_ANY, ber_int_debug, "warning: writing to uninitialized sockbuf\n"); errno = EBADF; return -1; @@ -988,6 +1083,7 @@ have_no_write( Sockbuf *sb, void *buf, long len ) static int have_no_close( Sockbuf *sb ) { + assert( sb != NULL ); assert( 0 ); return -1; } diff --git a/libraries/libldap/abandon.c b/libraries/libldap/abandon.c index 2fac95f770..b2b2b83009 100644 --- a/libraries/libldap/abandon.c +++ b/libraries/libldap/abandon.c @@ -20,10 +20,43 @@ #include "ldap-int.h" -static int do_abandon LDAP_P(( LDAP *ld, int origid, int msgid )); +static int do_abandon LDAP_P(( + LDAP *ld, + int origid, + int msgid, + LDAPControl **sctrls, + LDAPControl **cctrls)); /* - * ldap_abandon - perform an ldap (and X.500) abandon operation. Parameters: + * ldap_abandon_ext - perform an ldap extended abandon operation. + * + * Parameters: + * ld LDAP descriptor + * msgid The message id of the operation to abandon + * scntrls Server Controls + * ccntrls Client Controls + * + * ldap_abandon_ext returns a LDAP error code. + * (LDAP_SUCCESS if everything went ok) + * + * Example: + * ldap_abandon_ext( ld, msgid, scntrls, ccntrls ); + */ +int +ldap_abandon_ext( + LDAP *ld, + int msgid, + LDAPControl **sctrls, + LDAPControl **cctrls ) +{ + Debug( LDAP_DEBUG_TRACE, "ldap_abandon_ext %d\n", msgid, 0, 0 ); + + return do_abandon( ld, msgid, msgid, sctrls, cctrls ); +} + + +/* + * ldap_abandon - perform an ldap abandon operation. Parameters: * * ld LDAP descriptor * msgid The message id of the operation to abandon @@ -37,12 +70,18 @@ int ldap_abandon( LDAP *ld, int msgid ) { Debug( LDAP_DEBUG_TRACE, "ldap_abandon %d\n", msgid, 0, 0 ); - return( do_abandon( ld, msgid, msgid )); + return do_abandon( ld, msgid, msgid, NULL, NULL ) == LDAP_SUCCESS + ? 0 : -1; } static int -do_abandon( LDAP *ld, int origid, int msgid ) +do_abandon( + LDAP *ld, + int origid, + int msgid, + LDAPControl **sctrls, + LDAPControl **cctrls) { BerElement *ber; int i, err, sendabandon; @@ -67,8 +106,9 @@ do_abandon( LDAP *ld, int origid, int msgid ) if ( lr->lr_msgid == msgid ) { /* this message */ break; } - if ( lr->lr_origid == msgid ) { /* child: abandon it */ - do_abandon( ld, msgid, lr->lr_msgid ); + if ( lr->lr_origid == msgid ) {/* child: abandon it */ + (void) do_abandon( ld, + msgid, lr->lr_msgid, sctrls, cctrls ); } } @@ -76,7 +116,7 @@ do_abandon( LDAP *ld, int origid, int msgid ) if ( origid == msgid && lr->lr_parent != NULL ) { /* don't let caller abandon child requests! */ ld->ld_errno = LDAP_PARAM_ERROR; - return( -1 ); + return( LDAP_PARAM_ERROR ); } if ( lr->lr_status != LDAP_REQST_INPROGRESS ) { /* no need to send abandon message */ @@ -87,7 +127,7 @@ do_abandon( LDAP *ld, int origid, int msgid ) if ( ldap_msgdelete( ld, msgid ) == 0 ) { ld->ld_errno = LDAP_SUCCESS; - return( 0 ); + return LDAP_SUCCESS; } err = 0; @@ -96,34 +136,57 @@ do_abandon( LDAP *ld, int origid, int msgid ) if ( (ber = ldap_alloc_ber_with_options( ld )) == NULLBER ) { err = -1; ld->ld_errno = LDAP_NO_MEMORY; + } else { #ifdef LDAP_CONNECTIONLESS if ( ld->ld_cldapnaddr > 0 ) { - err = ber_printf( ber, "{isti}", + err = ber_printf( ber, "{isti", /* leave open '}' */ ++ld->ld_msgid, ld->ld_cldapdn, LDAP_REQ_ABANDON, msgid ); - } else { + } else #endif /* LDAP_CONNECTIONLESS */ - err = ber_printf( ber, "{iti}", ++ld->ld_msgid, + { + err = ber_printf( ber, "{iti", /* leave open '}' */ + ++ld->ld_msgid, LDAP_REQ_ABANDON, msgid ); -#ifdef LDAP_CONNECTIONLESS } -#endif /* LDAP_CONNECTIONLESS */ - if ( err == -1 ) { + if( err == -1 ) { + /* encoding error */ ld->ld_errno = LDAP_ENCODING_ERROR; + + } else { + /* Put Server Controls */ + if ( ldap_int_put_controls( ld, sctrls, ber ) + != LDAP_SUCCESS ) + { + err = -1; + + } else { + /* close '{' */ + err = ber_printf( ber, "}" ); + + if( err == -1 ) { + /* encoding error */ + ld->ld_errno = LDAP_ENCODING_ERROR; + } + } + } + + if ( err == -1 ) { ber_free( ber, 1 ); + } else { /* send the message */ #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS if ( lr != NULL ) { sb = lr->lr_conn->lconn_sb; - } else { + } else +#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */ + { sb = &ld->ld_sb; } -#else /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */ - sb = &ld->ld_sb; -#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */ + if ( ber_flush( sb, ber, 1 ) != 0 ) { ld->ld_errno = LDAP_SERVER_DOWN; err = -1; @@ -150,7 +213,7 @@ do_abandon( LDAP *ld, int origid, int msgid ) if ( (ld->ld_abandoned = (int *) malloc( 2 * sizeof(int) )) == NULL ) { ld->ld_errno = LDAP_NO_MEMORY; - return( -1 ); + return( ld->ld_errno ); } i = 0; } else { @@ -159,7 +222,7 @@ do_abandon( LDAP *ld, int origid, int msgid ) if ( (ld->ld_abandoned = (int *) realloc( (char *) ld->ld_abandoned, (i + 2) * sizeof(int) )) == NULL ) { ld->ld_errno = LDAP_NO_MEMORY; - return( -1 ); + return( ld->ld_errno ); } } ld->ld_abandoned[i] = msgid; @@ -168,5 +231,6 @@ do_abandon( LDAP *ld, int origid, int msgid ) if ( err != -1 ) { ld->ld_errno = LDAP_SUCCESS; } - return( err ); + + return( ld->ld_errno ); } diff --git a/libraries/libldap/add.c b/libraries/libldap/add.c index 5bdcf6e919..4732249382 100644 --- a/libraries/libldap/add.c +++ b/libraries/libldap/add.c @@ -20,7 +20,7 @@ #include "ldap-int.h" /* - * ldap_add - initiate an ldap (and X.500) add operation. Parameters: + * ldap_add - initiate an ldap add operation. Parameters: * * ld LDAP descriptor * dn DN of the entry to add @@ -39,7 +39,47 @@ * msgid = ldap_add( ld, dn, attrs ); */ int -ldap_add( LDAP *ld, char *dn, LDAPMod **attrs ) +ldap_add( LDAP *ld, LDAP_CONST char *dn, LDAPMod **attrs ) +{ + int rc; + int msgid; + + rc = ldap_add_ext( ld, dn, attrs, NULL, NULL, &msgid ); + + if ( rc != LDAP_SUCCESS ) + return -1; + + return msgid; +} + + +/* + * ldap_add_ext - initiate an ldap extended add operation. Parameters: + * + * ld LDAP descriptor + * dn DN of the entry to add + * mods List of attributes for the entry. This is a null- + * terminated array of pointers to LDAPMod structures. + * only the type and values in the structures need be + * filled in. + * sctrl Server Controls + * cctrl Client Controls + * msgidp Message ID pointer + * + * Example: + * LDAPMod *attrs[] = { + * { 0, "cn", { "babs jensen", "babs", 0 } }, + * { 0, "sn", { "jensen", 0 } }, + * { 0, "objectClass", { "person", 0 } }, + * 0 + * } + * rc = ldap_add_ext( ld, dn, attrs, NULL, NULL, &msgid ); + */ +int +ldap_add_ext( LDAP *ld, LDAP_CONST char *dn, LDAPMod **attrs, + LDAPControl **sctrls, + LDAPControl **cctrls, + int *msgidp ) { BerElement *ber; int i, rc; @@ -59,14 +99,17 @@ ldap_add( LDAP *ld, char *dn, LDAPMod **attrs ) /* create a message to send */ if ( (ber = ldap_alloc_ber_with_options( ld )) == NULLBER ) { - return( -1 ); + ld->ld_errno = LDAP_NO_MEMORY; + return ld->ld_errno; } - if ( ber_printf( ber, "{it{s{", ++ld->ld_msgid, LDAP_REQ_ADD, dn ) - == -1 ) { + rc = ber_printf( ber, "{it{s{", /* leave open '}}}' */ + ++ld->ld_msgid, LDAP_REQ_ADD, dn ); + + if ( rc == -1 ) { ld->ld_errno = LDAP_ENCODING_ERROR; ber_free( ber, 1 ); - return( -1 ); + return ld->ld_errno; } /* for each attribute in the entry... */ @@ -81,28 +124,54 @@ ldap_add( LDAP *ld, char *dn, LDAPMod **attrs ) if ( rc == -1 ) { ld->ld_errno = LDAP_ENCODING_ERROR; ber_free( ber, 1 ); - return( -1 ); + return ld->ld_errno; } } - if ( ber_printf( ber, "}}}" ) == -1 ) { + /* close '{{' */ + if ( ber_printf( ber, "}}" ) == -1 ) { + ld->ld_errno = LDAP_ENCODING_ERROR; + ber_free( ber, 1 ); + return ld->ld_errno; + } + + /* Put Server Controls */ + if( ldap_int_put_controls( ld, sctrls, ber ) != LDAP_SUCCESS ) { + ber_free( ber, 1 ); + return ld->ld_errno; + } + + /* close '{' */ + if ( ber_printf( ber, "}" ) == -1 ) { ld->ld_errno = LDAP_ENCODING_ERROR; ber_free( ber, 1 ); - return( -1 ); + return ld->ld_errno; } /* send the message */ - return( ldap_send_initial_request( ld, LDAP_REQ_ADD, dn, ber )); + *msgidp = ldap_send_initial_request( ld, LDAP_REQ_ADD, dn, ber ); + + if(*msgidp < 0) + return ld->ld_errno; + + return LDAP_SUCCESS; } int -ldap_add_s( LDAP *ld, char *dn, LDAPMod **attrs ) +ldap_add_ext_s( + LDAP *ld, + LDAP_CONST char *dn, + LDAPMod **attrs, + LDAPControl **sctrls, + LDAPControl **cctrls ) { - int msgid; + int msgid, rc; LDAPMessage *res; - if ( (msgid = ldap_add( ld, dn, attrs )) == -1 ) - return( ld->ld_errno ); + rc = ldap_add_ext( ld, dn, attrs, sctrls, cctrls, &msgid ); + + if ( rc != LDAP_SUCCESS ) + return( rc ); if ( ldap_result( ld, msgid, 1, (struct timeval *) NULL, &res ) == -1 ) return( ld->ld_errno ); @@ -110,3 +179,9 @@ ldap_add_s( LDAP *ld, char *dn, LDAPMod **attrs ) return( ldap_result2error( ld, res, 1 ) ); } +int +ldap_add_s( LDAP *ld, LDAP_CONST char *dn, LDAPMod **attrs ) +{ + return ldap_add_ext_s( ld, dn, attrs, NULL, NULL ); +} + diff --git a/libraries/libldap/apitest.c b/libraries/libldap/apitest.c index 40fbf484a5..0cb60e47a2 100644 --- a/libraries/libldap/apitest.c +++ b/libraries/libldap/apitest.c @@ -6,13 +6,8 @@ * OpenLDAP API Test * Written by: Kurt Zeilenga * - * This program is designed to test API features of libldap. - * - * The API specification can be found in: - * - * draft-api-ldapext-ldap-c-api-01.txt - * - * and discussions on ietf-ldapext mailing list. + * This program is designed to test API features of implementations + * of the IETF draft specifications. * */ #include "portable.h" @@ -30,52 +25,67 @@ main(int argc, char **argv) int ival; char *sval; + printf("Compile time API Information\n"); + #ifdef LDAP_API_INFO_VERSION api.ldapai_info_version = LDAP_API_INFO_VERSION; + printf(" API Info version: %d\n", (int) api.ldapai_info_version); #else api.ldapai_info_version = 1; + printf(" API Info version: unknown\n"); +#endif + +#ifdef LDAP_FEATURE_INFO_VERSION + printf(" Feature Info version: %d\n", (int) LDAP_FEATURE_INFO_VERSION); +#else + printf(" Feature Info version: unknown\n"); + api.ldapai_info_version = 1; +#endif + +#ifdef LDAP_API_VERSION + printf(" API version: %d\n", (int) LDAP_API_VERSION); +#else + printf(" API version: unknown\n"); #endif - printf("Compile time API Information\n"); - printf(" API Info version: %d\n", api.ldapai_info_version); - printf(" API version: %d\n", LDAP_API_VERSION); #ifdef LDAP_VERSION - printf(" Protocol Version: %d\n", LDAP_VERSION); + printf(" Protocol Version: %d\n", (int) LDAP_VERSION); #else printf(" Protocol Version: unknown\n"); #endif #ifdef LDAP_VERSION_MIN - printf(" Protocol Min: %d\n", LDAP_VERSION_MIN); + printf(" Protocol Min: %d\n", (int) LDAP_VERSION_MIN); #else printf(" Protocol Min: unknown\n"); #endif #ifdef LDAP_VERSION_MAX - printf(" Protocol Max: %d\n", LDAP_VERSION_MAX); + printf(" Protocol Max: %d\n", (int) LDAP_VERSION_MAX); #else printf(" Protocol Max: unknown\n"); #endif #ifdef LDAP_VENDOR_NAME - printf(" Vendor Name: %s\n", LDAP_VENDOR_NAME); + printf(" Vendor Name: %s\n", (int) LDAP_VENDOR_NAME); #else printf(" Vendor Name: unknown\n"); #endif #ifdef LDAP_VENDOR_VERSION - printf(" Vendor Version: %d\n", LDAP_VENDOR_VERSION); + printf(" Vendor Version: %d\n", (int) LDAP_VENDOR_VERSION); #else printf(" Vendor Version: unknown\n"); #endif if(ldap_get_option(NULL, LDAP_OPT_API_INFO, &api) != LDAP_SUCCESS) { fprintf(stderr, "%s: ldap_get_option(api) failed\n", argv[0]); - exit(-1); + return EXIT_FAILURE; } printf("\nExecution time API Information\n"); printf(" API Info version: %d\n", api.ldapai_info_version); if (api.ldapai_info_version != LDAP_API_INFO_VERSION) { - printf(" API INFO version mismatch!\n"); - exit(-1); + printf(" API INFO version mismatch: got %d, expected %d\n", + api.ldapai_info_version, LDAP_API_INFO_VERSION); + return EXIT_FAILURE; } printf(" API Version: %d\n", api.ldapai_api_version); @@ -89,18 +99,33 @@ main(int argc, char **argv) for(i=0; api.ldapai_extensions[i] != NULL; i++) /* empty */; printf(" Extensions: %d\n", i); for(i=0; api.ldapai_extensions[i] != NULL; i++) { -#ifndef LDAP_API_FEATURE_INFO - printf(" %s\n", - api.ldapai_extensions[i]); -#else +#ifdef LDAP_OPT_API_FEATURE_INFO LDAPAPIFeatureInfo fi; + fi.ldapaif_info_version = LDAP_FEATURE_INFO_VERSION; fi.ldapaif_name = api.ldapai_extensions[i]; fi.ldapaif_version = 0; - ldap_get_option(NULL, LDAP_OPT_API_FEATURE_INFO, &fi); + if( ldap_get_option(NULL, LDAP_OPT_API_FEATURE_INFO, &fi) == LDAP_SUCCESS ) { + if(fi.ldapaif_info_version != LDAP_FEATURE_INFO_VERSION) { + printf(" %s feature info mismatch: got %d, expected %d\n", + api.ldapai_extensions[i], + LDAP_FEATURE_INFO_VERSION, + fi.ldapaif_info_version); - printf(" %s (%d)\n", - api.ldapai_extensions[i], fi.ldapaif_version); + } else { + printf(" %s: version %d\n", + fi.ldapaif_name, + fi.ldapaif_version); + } + + } else { + printf(" %s (NO FEATURE INFO)\n", + api.ldapai_extensions[i]); + } + +#else + printf(" %s\n", + api.ldapai_extensions[i]); #endif } } @@ -112,48 +137,47 @@ main(int argc, char **argv) if(ldap_get_option(NULL, LDAP_OPT_DEREF, &ival) != LDAP_SUCCESS) { fprintf(stderr, "%s: ldap_get_option(api) failed\n", argv[0]); - exit(-1); + return EXIT_FAILURE; } printf(" DEREF: %d\n", ival); if(ldap_get_option(NULL, LDAP_OPT_SIZELIMIT, &ival) != LDAP_SUCCESS) { fprintf(stderr, "%s: ldap_get_option(sizelimit) failed\n", argv[0]); - exit(-1); + return EXIT_FAILURE; } printf(" SIZELIMIT: %d\n", ival); if(ldap_get_option(NULL, LDAP_OPT_TIMELIMIT, &ival) != LDAP_SUCCESS) { fprintf(stderr, "%s: ldap_get_option(timelimit) failed\n", argv[0]); - exit(-1); + return EXIT_FAILURE; } printf(" TIMELIMIT: %d\n", ival); if(ldap_get_option(NULL, LDAP_OPT_REFERRALS, &ival) != LDAP_SUCCESS) { fprintf(stderr, "%s: ldap_get_option(referrals) failed\n", argv[0]); - exit(-1); + return EXIT_FAILURE; } printf(" REFERRALS: %s\n", ival == (int) LDAP_OPT_ON ? "on" : "off"); if(ldap_get_option(NULL, LDAP_OPT_RESTART, &ival) != LDAP_SUCCESS) { fprintf(stderr, "%s: ldap_get_option(restart) failed\n", argv[0]); - exit(-1); + return EXIT_FAILURE; } printf(" RESTART: %s\n", ival == (int) LDAP_OPT_ON ? "on" : "off"); if(ldap_get_option(NULL, LDAP_OPT_PROTOCOL_VERSION, &ival) != LDAP_SUCCESS) { fprintf(stderr, "%s: ldap_get_option(protocol version) failed\n", argv[0]); - exit(-1); + return EXIT_FAILURE; } printf(" PROTOCOL VERSION: %d\n", ival); if(ldap_get_option(NULL, LDAP_OPT_HOST_NAME, &sval) != LDAP_SUCCESS) { fprintf(stderr, "%s: ldap_get_option(host name) failed\n", argv[0]); - exit(-1); + return EXIT_FAILURE; } printf(" HOST NAME: %s\n", sval); - exit(0); - return 0; + return EXIT_SUCCESS; } diff --git a/libraries/libldap/apitest.dsp b/libraries/libldap/apitest.dsp index 6cb9698b3f..5b3b905535 100644 --- a/libraries/libldap/apitest.dsp +++ b/libraries/libldap/apitest.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=apitest - Win32 Debug +CFG=apitest - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,16 @@ CFG=apitest - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "apitest.mak" CFG="apitest - Win32 Debug" +!MESSAGE NMAKE /f "apitest.mak" CFG="apitest - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "apitest - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "apitest - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "apitest - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "apitest - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -41,7 +45,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -65,7 +69,7 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe @@ -75,12 +79,64 @@ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 oldap32.lib olber32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" +!ELSEIF "$(CFG)" == "apitest - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "apitest_" +# PROP BASE Intermediate_Dir "apitest_" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\apitest" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 oldap32.lib olber32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" +# ADD LINK32 oldap32.lib olber32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\SDebug" + +!ELSEIF "$(CFG)" == "apitest - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "apitest0" +# PROP BASE Intermediate_Dir "apitest0" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\apitest" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 oldap32.lib olber32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\Release" +# ADD LINK32 oldap32.lib olber32.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\SRelease" + !ENDIF # Begin Target # Name "apitest - Win32 Release" # Name "apitest - Win32 Debug" +# Name "apitest - Win32 Single Debug" +# Name "apitest - Win32 Single Release" # Begin Source File SOURCE=.\apitest.c diff --git a/libraries/libldap/apitest.dsw b/libraries/libldap/apitest.dsw index 49079d3c40..bb514f16e2 100644 --- a/libraries/libldap/apitest.dsw +++ b/libraries/libldap/apitest.dsw @@ -18,6 +18,18 @@ Package=<4> ############################################################################### +Project: "liblber"=..\liblber\liblber.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + Project: "libldap"=.\libldap.dsp - Package Owner=<4> Package=<5> @@ -26,6 +38,9 @@ Package=<5> Package=<4> {{{ + Begin Project Dependency + Project_Dep_Name liblber + End Project Dependency }}} ############################################################################### diff --git a/libraries/libldap/bind.c b/libraries/libldap/bind.c index f7211f8a3d..2ef983f649 100644 --- a/libraries/libldap/bind.c +++ b/libraries/libldap/bind.c @@ -35,7 +35,7 @@ */ int -ldap_bind( LDAP *ld, char *dn, char *passwd, int authmethod ) +ldap_bind( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *passwd, int authmethod ) { /* * The bind request looks like this: @@ -88,7 +88,11 @@ ldap_bind( LDAP *ld, char *dn, char *passwd, int authmethod ) * NULL, LDAP_AUTH_KRBV4 ) */ int -ldap_bind_s( LDAP *ld, char *dn, char *passwd, int authmethod ) +ldap_bind_s( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *passwd, + int authmethod ) { Debug( LDAP_DEBUG_TRACE, "ldap_bind_s\n", 0, 0, 0 ); diff --git a/libraries/libldap/cache.c b/libraries/libldap/cache.c index 936488a3a9..46b2078d51 100644 --- a/libraries/libldap/cache.c +++ b/libraries/libldap/cache.c @@ -25,10 +25,10 @@ static int cache_hash LDAP_P(( BerElement *ber )); static LDAPMessage *msg_dup LDAP_P(( LDAPMessage *msg )); static int request_cmp LDAP_P(( BerElement *req1, BerElement *req2 )); -static int chain_contains_dn LDAP_P(( LDAPMessage *msg, char *dn )); +static int chain_contains_dn LDAP_P(( LDAPMessage *msg, LDAP_CONST char *dn )); static long msg_size LDAP_P(( LDAPMessage *msg )); static void check_cache_memused LDAP_P(( LDAPCache *lc )); -static void uncache_entry_or_req LDAP_P(( LDAP *ld, char *dn, int msgid )); +static void uncache_entry_or_req LDAP_P(( LDAP *ld, LDAP_CONST char *dn, int msgid )); #endif @@ -138,7 +138,7 @@ ldap_uncache_request( LDAP *ld, int msgid ) void -ldap_uncache_entry( LDAP *ld, char *dn ) +ldap_uncache_entry( LDAP *ld, LDAP_CONST char *dn ) { #ifndef LDAP_NOCACHE Debug( LDAP_DEBUG_TRACE, "ldap_uncache_entry %s ld_cache %lx\n", @@ -153,7 +153,7 @@ ldap_uncache_entry( LDAP *ld, char *dn ) static void uncache_entry_or_req( LDAP *ld, - char *dn, /* if non-NULL, uncache entry */ + const char *dn, /* if non-NULL, uncache entry */ int msgid ) /* request to uncache (if dn == NULL) */ { int i; @@ -540,7 +540,7 @@ request_cmp( BerElement *req1, BerElement *req2 ) static int -chain_contains_dn( LDAPMessage *msg, char *dn ) +chain_contains_dn( LDAPMessage *msg, const char *dn ) { LDAPMessage *m; BerElement ber; diff --git a/libraries/libldap/cldap.c b/libraries/libldap/cldap.c index 126e1695b4..145633e921 100644 --- a/libraries/libldap/cldap.c +++ b/libraries/libldap/cldap.c @@ -92,7 +92,7 @@ cldap_open( char *host, int port ) ld->ld_cldapnaddr = 0; ld->ld_cldapaddrs = NULL; - if (lber_pvt_sb_set_io( &(ld->ld_sb), &lber_pvt_sb_io_udp, NULL )<0) { + if (ber_pvt_sb_set_io( &(ld->ld_sb), &ber_pvt_sb_io_udp, NULL )<0) { ldap_ld_free(ld, 1 ); return NULL; } @@ -164,7 +164,7 @@ cldap_open( char *host, int port ) DO_RETURN( NULL ); } - lber_pvt_sb_udp_set_dst( &ld->ld_sb, ld->ld_cldapaddrs[0] ); + ber_pvt_sb_udp_set_dst( &ld->ld_sb, ld->ld_cldapaddrs[0] ); cldap_setretryinfo( ld, 0, 0 ); @@ -219,7 +219,7 @@ cldap_search_s( LDAP *ld, char *base, int scope, char *filter, char **attrs, --ld->ld_msgid; /* use same id as before */ } - lber_pvt_sb_udp_set_dst( &(ld->ld_sb), + ber_pvt_sb_udp_set_dst( &(ld->ld_sb), ld->ld_cldapaddrs[ cri.cri_useaddr ] ); Debug( LDAP_DEBUG_TRACE, "cldap_search_s try %d (to %s)\n", @@ -358,7 +358,7 @@ cldap_result( LDAP *ld, int msgid, LDAPMessage **res, * got a result: determine which server it came from * decode into ldap message chain */ - src = (struct sockaddr_in *) lber_pvt_sb_udp_get_src( sb ); + src = (struct sockaddr_in *) ber_pvt_sb_udp_get_src( sb ); for ( fromaddr = 0; fromaddr < ld->ld_cldapnaddr; ++fromaddr ) { if ( memcmp( &((struct sockaddr_in *) @@ -394,7 +394,7 @@ cldap_result( LDAP *ld, int msgid, LDAPMessage **res, if ( i == fromaddr ) { continue; } - lber_pvt_sb_udp_set_dst( sb, ld->ld_cldapaddrs[i] ); + ber_pvt_sb_udp_set_dst( sb, ld->ld_cldapaddrs[i] ); Debug( LDAP_DEBUG_TRACE, "cldap_result abandoning id %d (to %s)\n", msgid, inet_ntoa( ((struct sockaddr_in *) @@ -497,7 +497,7 @@ cldap_parsemsg( LDAP *ld, int msgid, BerElement *ber, if ( ldap_debug & LDAP_DEBUG_PACKETS ) { fprintf( stderr, "cldap_parsemsg add message id %d type %d:\n", ldm->lm_msgid, ldm->lm_msgtype ); - lber_log_dump( LDAP_DEBUG_BER, ldap_debug, ldm->lm_ber, 1 ); + ber_log_dump( LDAP_DEBUG_BER, ldap_debug, ldm->lm_ber, 1 ); } #endif /* LDAP_DEBUG */ diff --git a/libraries/libldap/compare.c b/libraries/libldap/compare.c index ab64d19865..489905b970 100644 --- a/libraries/libldap/compare.c +++ b/libraries/libldap/compare.c @@ -20,15 +20,25 @@ #include "ldap-int.h" /* - * ldap_compare - perform an ldap (and X.500) compare operation. The dn + * ldap_compare_ext - perform an ldap extended compare operation. The dn * of the entry to compare to and the attribute and value to compare (in * attr and value) are supplied. The msgid of the response is returned. * * Example: - * ldap_compare( ld, "c=us@cn=bob", "userPassword", "secret" ) + * struct berval bvalue = { "secret", strlen("secret") }; + * rc = ldap_compare( ld, "c=us@cn=bob", + * "userPassword", &bvalue, + * sctrl, cctrl, &msgid ) */ int -ldap_compare( LDAP *ld, char *dn, char *attr, char *value ) +ldap_compare_ext( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *attr, + struct berval *bvalue, + LDAPControl **sctrls, + LDAPControl **cctrls, + int *msgidp ) { BerElement *ber; @@ -47,14 +57,28 @@ ldap_compare( LDAP *ld, char *dn, char *attr, char *value ) /* create a message to send */ if ( (ber = ldap_alloc_ber_with_options( ld )) == NULLBER ) { - return( -1 ); + return( LDAP_NO_MEMORY ); } - if ( ber_printf( ber, "{it{s{ss}}}", ++ld->ld_msgid, LDAP_REQ_COMPARE, - dn, attr, value ) == -1 ) { + if ( ber_printf( ber, "{it{s{sO}}", /* leave open '}' */ + ++ld->ld_msgid, + LDAP_REQ_COMPARE, dn, attr, &bvalue ) == -1 ) + { ld->ld_errno = LDAP_ENCODING_ERROR; ber_free( ber, 1 ); - return( -1 ); + return( ld->ld_errno ); + } + + /* Put Server Controls */ + if( ldap_int_put_controls( ld, sctrls, ber ) != LDAP_SUCCESS ) { + ber_free( ber, 1 ); + return ld->ld_errno; + } + + if( ber_printf( ber, "}" ) == -1 ) { + ld->ld_errno = LDAP_ENCODING_ERROR; + ber_free( ber, 1 ); + return( ld->ld_errno ); } #ifndef LDAP_NOCACHE @@ -62,27 +86,78 @@ ldap_compare( LDAP *ld, char *dn, char *attr, char *value ) if ( ldap_check_cache( ld, LDAP_REQ_COMPARE, ber ) == 0 ) { ber_free( ber, 1 ); ld->ld_errno = LDAP_SUCCESS; - return( ld->ld_msgid ); + *msgidp = ld->ld_msgid; + return( ld->ld_errno ); } ldap_add_request_to_cache( ld, LDAP_REQ_COMPARE, ber ); } #endif /* LDAP_NOCACHE */ /* send the message */ - return ( ldap_send_initial_request( ld, LDAP_REQ_COMPARE, dn, ber )); + *msgidp = ldap_send_initial_request( ld, LDAP_REQ_COMPARE, dn, ber ); + return ( *msgidp < 0 ? ld->ld_errno : LDAP_SUCCESS ); +} + +/* + * ldap_compare_ext - perform an ldap extended compare operation. The dn + * of the entry to compare to and the attribute and value to compare (in + * attr and value) are supplied. The msgid of the response is returned. + * + * Example: + * msgid = ldap_compare( ld, "c=us@cn=bob", "userPassword", "secret" ) + */ +int +ldap_compare( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *attr, + LDAP_CONST char *value ) +{ + int msgid; + struct berval bvalue; + + bvalue.bv_val = (char *) value; + bvalue.bv_len = (value == NULL) ? 0 : strlen( value ); + + return ldap_compare_ext( ld, dn, attr, &bvalue, NULL, NULL, &msgid ) == LDAP_SUCCESS + ? msgid : -1; } int -ldap_compare_s( LDAP *ld, char *dn, char *attr, char *value ) +ldap_compare_ext_s( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *attr, + struct berval *bvalue, + LDAPControl **sctrl, + LDAPControl **cctrl ) { + int rc; int msgid; LDAPMessage *res; - if ( (msgid = ldap_compare( ld, dn, attr, value )) == -1 ) - return( ld->ld_errno ); + rc = ldap_compare_ext( ld, dn, attr, bvalue, sctrl, cctrl, &msgid ); + + if ( rc != LDAP_SUCCESS ) + return( rc ); if ( ldap_result( ld, msgid, 1, (struct timeval *) NULL, &res ) == -1 ) return( ld->ld_errno ); return( ldap_result2error( ld, res, 1 ) ); } + +int +ldap_compare_s( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *attr, + LDAP_CONST char *value ) +{ + struct berval bvalue; + + bvalue.bv_val = (char *) value; + bvalue.bv_len = (value == NULL) ? 0 : strlen( value ); + + return ldap_compare_ext_s( ld, dn, attr, &bvalue, NULL, NULL ); +} \ No newline at end of file diff --git a/libraries/libldap/controls.c b/libraries/libldap/controls.c index bac038e304..1043d99ca1 100644 --- a/libraries/libldap/controls.c +++ b/libraries/libldap/controls.c @@ -15,6 +15,102 @@ #include "ldap-int.h" + +/* + * ldap_int_put_controls + */ + +int ldap_int_put_controls( + LDAP *ld, + LDAPControl **ctrls, + BerElement *ber ) +{ + LDAPControl **c; + + assert( ld != NULL ); + assert( ber != NULL ); + + if( ctrls == NULL ) { + /* use default server controls */ + ctrls = ld->ld_sctrls; + } + + if( ctrls == NULL || *ctrls == NULL ) { + return LDAP_SUCCESS; + } + + if ( ld->ld_version < LDAP_VERSION3 ) { + /* LDAPv2 doesn't support controls, + * error if any control is critical + */ + for( c = ctrls ; *c != NULL; c++ ) { + if( (*c)->ldctl_iscritical ) { + ld->ld_errno = LDAP_NOT_SUPPORTED; + return ld->ld_errno; + } + } + + return LDAP_SUCCESS; + } + + /* Controls are encoded as a sequence of sequences */ + if( ber_printf( ber, "t{", LDAP_TAG_CONTROLS ) == -1 ) { + ld->ld_errno = LDAP_ENCODING_ERROR; + return ld->ld_errno; + } + + for( c = ctrls ; *c != NULL; c++ ) { + if ( ber_printf( ber, "{s", + (*c)->ldctl_oid ) == -1 ) + { + ld->ld_errno = LDAP_ENCODING_ERROR; + return ld->ld_errno; + } + + if( (*c)->ldctl_iscritical /* only if true */ + && ( ber_printf( ber, "b", + (*c)->ldctl_iscritical ) == -1 ) ) + { + ld->ld_errno = LDAP_ENCODING_ERROR; + return ld->ld_errno; + } + + if( (*c)->ldctl_value.bv_val != NULL /* only if we have a value */ + && ( ber_printf( ber, "O", + &((*c)->ldctl_value) ) == -1 ) ) + { + ld->ld_errno = LDAP_ENCODING_ERROR; + return ld->ld_errno; + } + + + if( ber_printf( ber, "}" ) == -1 ) { + ld->ld_errno = LDAP_ENCODING_ERROR; + return ld->ld_errno; + } + } + + + if( ber_printf( ber, "}" ) == -1 ) { + ld->ld_errno = LDAP_ENCODING_ERROR; + return ld->ld_errno; + } + + return LDAP_SUCCESS; +} + +int ldap_int_get_controls LDAP_P(( + BerElement *be, + LDAPControl ***ctrls )) +{ + assert( be != NULL ); + assert( ctrls != NULL ); + + **ctrls = NULL; + + return LDAP_NOT_SUPPORTED; +} + /* * Free a LDAPControl */ @@ -54,7 +150,7 @@ ldap_controls_free( LDAPControl **controls ) /* * Duplicate an array of LDAPControl */ -LDAPControl **ldap_controls_dup( LDAPControl **controls ) +LDAPControl **ldap_controls_dup( const LDAPControl **controls ) { LDAPControl **new; int i; @@ -96,7 +192,7 @@ LDAPControl **ldap_controls_dup( LDAPControl **controls ) /* * Duplicate a LDAPControl */ -LDAPControl *ldap_control_dup( LDAPControl *c ) +LDAPControl *ldap_control_dup( const LDAPControl *c ) { LDAPControl *new; @@ -145,10 +241,4 @@ LDAPControl *ldap_control_dup( LDAPControl *c ) new->ldctl_iscritical = c->ldctl_iscritical; return new; -} - -/* get the controls from the BerElement */ -int ldap_get_ber_controls( BerElement *be, LDAPControl ***cp) -{ - return LDAP_NOT_SUPPORTED; -} +} \ No newline at end of file diff --git a/libraries/libldap/delete.c b/libraries/libldap/delete.c index 5b28038944..bc260b205e 100644 --- a/libraries/libldap/delete.c +++ b/libraries/libldap/delete.c @@ -20,16 +20,24 @@ #include "ldap-int.h" /* - * ldap_delete - initiate an ldap (and X.500) delete operation. Parameters: + * ldap_delete_ext - initiate an ldap extended delete operation. Parameters: * * ld LDAP descriptor * dn DN of the object to delete + * sctrls Server Controls + * cctrls Client Controls + * msgidp Message Id Pointer * * Example: - * msgid = ldap_delete( ld, dn ); + * rc = ldap_delete( ld, dn, sctrls, cctrls, msgidp ); */ int -ldap_delete( LDAP *ld, char *dn ) +ldap_delete_ext( + LDAP *ld, + LDAP_CONST char* dn, + LDAPControl **sctrls, + LDAPControl **cctrls, + int *msgidp ) { BerElement *ber; @@ -42,28 +50,55 @@ ldap_delete( LDAP *ld, char *dn ) /* create a message to send */ if ( (ber = ldap_alloc_ber_with_options( ld )) == NULLBER ) { - return( -1 ); + ld->ld_errno = LDAP_NO_MEMORY; + return( ld->ld_errno ); + } + + if ( ber_printf( ber, "{its", /* leave open - '}' */ + ++ld->ld_msgid, LDAP_REQ_DELETE, dn ) == -1 ) + { + ld->ld_errno = LDAP_ENCODING_ERROR; + ber_free( ber, 1 ); + return( ld->ld_errno ); + } + + /* Put Server Controls */ + if( ldap_int_put_controls( ld, sctrls, ber ) != LDAP_SUCCESS ) { + ber_free( ber, 1 ); + return ld->ld_errno; } - if ( ber_printf( ber, "{its}", ++ld->ld_msgid, LDAP_REQ_DELETE, dn ) + /* close '{' */ + if ( ber_printf( ber, "}", ++ld->ld_msgid, LDAP_REQ_DELETE, dn ) == -1 ) { ld->ld_errno = LDAP_ENCODING_ERROR; ber_free( ber, 1 ); - return( -1 ); + return( ld->ld_errno ); } /* send the message */ - return ( ldap_send_initial_request( ld, LDAP_REQ_DELETE, dn, ber )); -} + *msgidp = ldap_send_initial_request( ld, LDAP_REQ_DELETE, dn, ber ); + if(*msgidp < 0) + return ld->ld_errno; + + return LDAP_SUCCESS; +} int -ldap_delete_s( LDAP *ld, char *dn ) +ldap_delete_ext_s( + LDAP *ld, + LDAP_CONST char *dn, + LDAPControl **sctrls, + LDAPControl **cctrls ) { - int msgid; + int msgid; + int rc; LDAPMessage *res; - if ( (msgid = ldap_delete( ld, dn )) == -1 ) + rc = ldap_delete_ext( ld, dn, sctrls, cctrls, &msgid ); + + if( rc != LDAP_SUCCESS ) return( ld->ld_errno ); if ( ldap_result( ld, msgid, 1, (struct timeval *) NULL, &res ) == -1 ) @@ -71,3 +106,34 @@ ldap_delete_s( LDAP *ld, char *dn ) return( ldap_result2error( ld, res, 1 ) ); } +/* + * ldap_delete - initiate an ldap (and X.500) delete operation. Parameters: + * + * ld LDAP descriptor + * dn DN of the object to delete + * + * Example: + * msgid = ldap_delete( ld, dn ); + */ +int +ldap_delete( LDAP *ld, LDAP_CONST char *dn ) +{ + int msgid; + + /* + * A delete request looks like this: + * DelRequet ::= DistinguishedName, + */ + + Debug( LDAP_DEBUG_TRACE, "ldap_delete\n", 0, 0, 0 ); + + return ldap_delete_ext( ld, dn, NULL, NULL, &msgid ) == LDAP_SUCCESS + ? msgid : -1 ; +} + + +int +ldap_delete_s( LDAP *ld, LDAP_CONST char *dn ) +{ + return ldap_delete_ext_s( ld, dn, NULL, NULL ); +} diff --git a/libraries/libldap/error.c b/libraries/libldap/error.c index 96883b3471..1c5279da7e 100644 --- a/libraries/libldap/error.c +++ b/libraries/libldap/error.c @@ -108,7 +108,7 @@ ldap_err2string( int err ) /* depreciated */ void -ldap_perror( LDAP *ld, char *s ) +ldap_perror( LDAP *ld, LDAP_CONST char *s ) { int i; diff --git a/libraries/libldap/friendly.c b/libraries/libldap/friendly.c index ef07adc82b..9c7b966844 100644 --- a/libraries/libldap/friendly.c +++ b/libraries/libldap/friendly.c @@ -23,7 +23,10 @@ #include "ldap-int.h" char * -ldap_friendly_name( char *filename, char *uname, LDAPFriendlyMap **map ) +ldap_friendly_name( + LDAP_CONST char *filename, + /* LDAP_CONST */ char *uname, + LDAPFriendlyMap **map ) { int i, entries; FILE *fp; diff --git a/libraries/libldap/getdn.c b/libraries/libldap/getdn.c index fd229f2247..6691f333e4 100644 --- a/libraries/libldap/getdn.c +++ b/libraries/libldap/getdn.c @@ -21,7 +21,7 @@ #include "ldap-int.h" -static char **explode_name( char *name, int notypes, int is_dn ); +static char **explode_name( LDAP_CONST char *name, int notypes, int is_dn ); char * ldap_get_dn( LDAP *ld, LDAPMessage *entry ) @@ -46,7 +46,7 @@ ldap_get_dn( LDAP *ld, LDAPMessage *entry ) } char * -ldap_dn2ufn( char *dn ) +ldap_dn2ufn( LDAP_CONST char *dn ) { char *p, *ufn, *r; int state; @@ -119,37 +119,51 @@ ldap_dn2ufn( char *dn ) } char ** -ldap_explode_dns( char *dn ) +ldap_explode_dns( LDAP_CONST char *dn_in ) { - int ncomps, maxcomps; char *s; char **rdns; char *tok_r; + char *dn; - if ( (rdns = (char **) malloc( 8 * sizeof(char *) )) == NULL ) { + int ncomps; + int maxcomps = 8; + + if ( (dn = strdup( dn_in )) == NULL ) { + return( NULL ); + } + + if ( (rdns = (char **) malloc( maxcomps * sizeof(char *) )) == NULL ) { + free( dn ); return( NULL ); } - maxcomps = 8; ncomps = 0; for ( s = ldap_pvt_strtok( dn, "@.", &tok_r ); s != NULL; - s = ldap_pvt_strtok( NULL, "@.", &tok_r ) ) { + s = ldap_pvt_strtok( NULL, "@.", &tok_r ) ) + { if ( ncomps == maxcomps ) { maxcomps *= 2; if ( (rdns = (char **) realloc( rdns, maxcomps * - sizeof(char *) )) == NULL ) { - return( NULL ); + sizeof(char *) )) == NULL ) + { + free( dn ); + return NULL; } } rdns[ncomps++] = strdup( s ); } + free(dn); + rdns[ncomps] = NULL; + /* trim rdns */ + rdns = (char **) realloc( rdns, (ncomps+1) * sizeof(char*) ); return( rdns ); } char ** -ldap_explode_dn( char *dn, int notypes ) +ldap_explode_dn( LDAP_CONST char *dn, int notypes ) { Debug( LDAP_DEBUG_TRACE, "ldap_explode_dn\n", 0, 0, 0 ); @@ -160,16 +174,17 @@ ldap_explode_dn( char *dn, int notypes ) } char ** -ldap_explode_rdn( char *rdn, int notypes ) +ldap_explode_rdn( LDAP_CONST char *rdn, int notypes ) { Debug( LDAP_DEBUG_TRACE, "ldap_explode_rdn\n", 0, 0, 0 ); return explode_name( rdn, notypes, 0 ); } static char ** -explode_name( char *name, int notypes, int is_dn ) +explode_name( LDAP_CONST char *name, int notypes, int is_dn ) { - char *p, *q, **parts = NULL; + const char *p, *q; + char **parts = NULL; int state, count = 0, endquote, len; p = name-1; @@ -261,7 +276,7 @@ explode_name( char *name, int notypes, int is_dn ) int -ldap_is_dns_dn( char *dn ) +ldap_is_dns_dn( LDAP_CONST char *dn ) { return( dn[ 0 ] != '\0' && strchr( dn, '=' ) == NULL && strchr( dn, ',' ) == NULL ); diff --git a/libraries/libldap/getentry.c b/libraries/libldap/getentry.c index a718acebb7..5dc62fdf42 100644 --- a/libraries/libldap/getentry.c +++ b/libraries/libldap/getentry.c @@ -97,7 +97,7 @@ ldap_get_entry_controls( goto cleanup_and_return; } - rc = ldap_get_ber_controls( &be, serverctrls ); + rc = ldap_int_get_controls( &be, serverctrls ); cleanup_and_return: if( rc != LDAP_SUCCESS ) { diff --git a/libraries/libldap/getfilter.c b/libraries/libldap/getfilter.c index d69ff0e9e8..94f73c3c77 100644 --- a/libraries/libldap/getfilter.c +++ b/libraries/libldap/getfilter.c @@ -27,12 +27,15 @@ #include "ldap-int.h" -static int break_into_words LDAP_P(( char *str, char *delims, char ***wordsp )); +static int break_into_words LDAP_P(( + /* LDAP_CONST */ char *str, + LDAP_CONST char *delims, + char ***wordsp )); #define FILT_MAX_LINE_LEN 1024 LDAPFiltDesc * -ldap_init_getfilter( char *fname ) +ldap_init_getfilter( LDAP_CONST char *fname ) { FILE *fp; char *buf; @@ -205,7 +208,7 @@ ldap_init_getfilter_buf( char *buf, long buflen ) void -ldap_setfilteraffixes( LDAPFiltDesc *lfdp, char *prefix, char *suffix ) +ldap_setfilteraffixes( LDAPFiltDesc *lfdp, LDAP_CONST char *prefix, LDAP_CONST char *suffix ) { if ( lfdp->lfd_filtprefix != NULL ) { free( lfdp->lfd_filtprefix ); @@ -220,7 +223,10 @@ ldap_setfilteraffixes( LDAPFiltDesc *lfdp, char *prefix, char *suffix ) LDAPFiltInfo * -ldap_getfirstfilter( LDAPFiltDesc *lfdp, char *tagpat, char *value ) +ldap_getfirstfilter( + LDAPFiltDesc *lfdp, + /* LDAP_CONST */ char *tagpat, + /* LDAP_CONST */ char *value ) { LDAPFiltList *flp; int rc; @@ -305,10 +311,18 @@ ldap_getnextfilter( LDAPFiltDesc *lfdp ) void -ldap_build_filter( char *filtbuf, unsigned long buflen, char *pattern, - char *prefix, char *suffix, char *attr, char *value, char **valwords ) +ldap_build_filter( + char *filtbuf, + unsigned long buflen, + LDAP_CONST char *pattern, + LDAP_CONST char *prefix, + LDAP_CONST char *suffix, + LDAP_CONST char *attr, + LDAP_CONST char *value, + char **valwords ) { - char *p, *f; + const char *p; + char *f; size_t slen; int i, wordcount, wordnum, endwordnum; @@ -401,7 +415,7 @@ ldap_build_filter( char *filtbuf, unsigned long buflen, char *pattern, static int -break_into_words( char *str, char *delims, char ***wordsp ) +break_into_words( /* LDAP_CONST */ char *str, LDAP_CONST char *delims, char ***wordsp ) { char *word, **words; int count; diff --git a/libraries/libldap/getvalues.c b/libraries/libldap/getvalues.c index 724963a1a3..f593e045be 100644 --- a/libraries/libldap/getvalues.c +++ b/libraries/libldap/getvalues.c @@ -22,7 +22,7 @@ #include "ldap-int.h" char ** -ldap_get_values( LDAP *ld, LDAPMessage *entry, char *target ) +ldap_get_values( LDAP *ld, LDAPMessage *entry, LDAP_CONST char *target ) { BerElement ber; char attr[LDAP_MAX_ATTR_LEN]; @@ -70,7 +70,7 @@ ldap_get_values( LDAP *ld, LDAPMessage *entry, char *target ) } struct berval ** -ldap_get_values_len( LDAP *ld, LDAPMessage *entry, char *target ) +ldap_get_values_len( LDAP *ld, LDAPMessage *entry, LDAP_CONST char *target ) { BerElement ber; char attr[LDAP_MAX_ATTR_LEN]; diff --git a/libraries/libldap/ldap-int.h b/libraries/libldap/ldap-int.h index 7cae7d94dc..bef3ba50f1 100644 --- a/libraries/libldap/ldap-int.h +++ b/libraries/libldap/ldap-int.h @@ -35,6 +35,7 @@ LDAP_BEGIN_DECL #define LDAP_URL_PREFIX_LEN 7 #define LDAP_URL_URLCOLON "URL:" #define LDAP_URL_URLCOLON_LEN 4 +#define NULLLDAPURLDESC ((LDAPURLDesc *)NULL) #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS #define LDAP_REF_STR "Referral:\n" @@ -73,7 +74,7 @@ struct ldapmsg { struct ldapmsg *lm_next; /* next response */ unsigned int lm_time; /* used to maintain cache */ }; - +#define NULLMSG ((LDAPMessage *)NULL) /* * structure representing get/set'able options * which have global defaults. @@ -95,8 +96,8 @@ struct ldapoptions { int ldo_refhoplimit; /* limit on referral nesting */ /* LDAPv3 server and client controls */ - LDAPControl **ldo_server_controls; - LDAPControl **ldo_client_controls; + LDAPControl **ldo_sctrls; + LDAPControl **ldo_cctrls; LDAP_BOOLEANS ldo_booleans; /* boolean options */ }; @@ -201,6 +202,9 @@ struct ldap { #define ld_cldaptimeout ld_options.ldo_cldaptimeout #define ld_refhoplimit ld_options.ldo_refhoplimit +#define ld_sctrls ld_options.ldo_sctrls +#define ld_cctrls ld_options.ldo_cctrls + int ld_version; /* version connected at */ char *ld_host; int ld_port; @@ -257,7 +261,7 @@ void openldap_ldap_initialize LDAP_P((void)); /* * in print.c */ -int ldap_log_printf LDAP_P((LDAP *ld, int level, char *fmt, ...)); +int ldap_log_printf LDAP_P((LDAP *ld, int level, const char *fmt, ...)); /* * in cache.c @@ -270,9 +274,17 @@ int ldap_check_cache LDAP_P(( LDAP *ld, unsigned long msgtype, BerElement *reque /* * in controls.c */ -LDAPControl *ldap_control_dup LDAP_P(( LDAPControl *ctrl )); -LDAPControl **ldap_controls_dup LDAP_P(( LDAPControl **ctrl )); -int ldap_get_ber_controls LDAP_P(( BerElement *be, LDAPControl ***cp)); +LDAPControl *ldap_control_dup LDAP_P(( const LDAPControl *ctrl )); +LDAPControl **ldap_controls_dup LDAP_P(( const LDAPControl **ctrls )); + +int ldap_int_get_controls LDAP_P(( + BerElement *be, + LDAPControl ***cp)); + +int ldap_int_put_controls LDAP_P(( + LDAP *ld, + LDAPControl **ctrls, + BerElement *ber )); /* * in dsparse.c @@ -293,14 +305,14 @@ char *ldap_get_kerberosv4_credentials LDAP_P(( LDAP *ld, char *who, char *servic /* * in open.c */ -int open_ldap_connection( LDAP *ld, Sockbuf *sb, char *host, int defport, +int open_ldap_connection( LDAP *ld, Sockbuf *sb, const char *host, int defport, char **krbinstancep, int async ); /* * in os-ip.c */ -int ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address, int port, +int ldap_connect_to_host( Sockbuf *sb, const char *host, unsigned long address, int port, int async ); void ldap_close_connection( Sockbuf *sb ); @@ -324,11 +336,12 @@ int ldap_is_write_ready( LDAP *ld, Sockbuf *sb ); * in request.c */ int ldap_send_initial_request( LDAP *ld, unsigned long msgtype, - char *dn, BerElement *ber ); + const char *dn, BerElement *ber ); BerElement *ldap_alloc_ber_with_options( LDAP *ld ); void ldap_set_ber_options( LDAP *ld, BerElement *ber ); -#if defined( LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS ) || defined( LDAP_API_FEATURE_X_OPENLDAP_V2_DNS ) +#if defined( LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS ) \ + || defined( LDAP_API_FEATURE_X_OPENLDAP_V2_DNS ) int ldap_send_server_request( LDAP *ld, BerElement *ber, int msgid, LDAPRequest *parentreq, LDAPServer *srvlist, LDAPConn *lc, int bind ); @@ -356,8 +369,9 @@ LDAP_F int cldap_getmsg ( LDAP *ld, struct timeval *timeout, BerElement *ber ); /* * in search.c */ -BerElement *ldap_build_search_req( LDAP *ld, char *base, int scope, - char *filter, char **attrs, int attrsonly ); +BerElement *ldap_build_search_req( LDAP *ld, const char *base, int scope, + const char *filter, char **attrs, int attrsonly, + LDAPControl **sctrls, LDAPControl **cctrls ); /* * in strdup.c @@ -367,14 +381,23 @@ char *ldap_strdup LDAP_P(( const char * )); /* * in unbind.c */ -int ldap_ld_free( LDAP *ld, int close ); -int ldap_send_unbind( LDAP *ld, Sockbuf *sb ); +int ldap_ld_free LDAP_P(( + LDAP *ld, + int close, + LDAPControl **sctrls, + LDAPControl **cctrls )); + +int ldap_send_unbind LDAP_P(( + LDAP *ld, + Sockbuf *sb, + LDAPControl **sctrls, + LDAPControl **cctrls )); #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_DNS /* * in getdxbyname.c */ -char **ldap_getdxbyname( char *domain ); +char **ldap_getdxbyname( const char *domain ); #endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_DNS */ #if defined( STR_TRANSLATION ) && defined( LDAP_DEFAULT_CHARSET ) diff --git a/libraries/libldap/libldap.dsp b/libraries/libldap/libldap.dsp index 4a767617a2..0b90aa04e3 100644 --- a/libraries/libldap/libldap.dsp +++ b/libraries/libldap/libldap.dsp @@ -42,7 +42,7 @@ CPP=cl.exe # PROP Intermediate_Dir "Release\libldap" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_WINDOWS" /YX /FD /c BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo @@ -80,8 +80,8 @@ LIB32=link.exe -lib # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "libldap_" -# PROP Intermediate_Dir "libldap_" +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\libldap" # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c @@ -101,11 +101,11 @@ LIB32=link.exe -lib # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "libldap0" -# PROP Intermediate_Dir "libldap0" +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\libldap" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_WINDOWS" /YX /FD /c BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo @@ -219,18 +219,6 @@ SOURCE=.\kbind.c # End Source File # Begin Source File -SOURCE="..\liblber\lber-int.h" -# End Source File -# Begin Source File - -SOURCE=..\..\include\lber.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\lber_pvt.h -# End Source File -# Begin Source File - SOURCE=".\ldap-int.h" # End Source File # Begin Source File diff --git a/libraries/libldap/ltest.dsp b/libraries/libldap/ltest.dsp index 60979e8e0f..d2d89f13b5 100644 --- a/libraries/libldap/ltest.dsp +++ b/libraries/libldap/ltest.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=ltest - Win32 Debug +CFG=ltest - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,16 @@ CFG=ltest - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "ltest.mak" CFG="ltest - Win32 Debug" +!MESSAGE NMAKE /f "ltest.mak" CFG="ltest - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ltest - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ltest - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "ltest - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "ltest - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -36,11 +40,12 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release\ltest" +# PROP Output_Dir "..\Release" # PROP Intermediate_Dir "Release\ltest" +# PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -48,7 +53,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 oldap32.lib olber32.lib olutil32.lib hs_regex.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\Release" +# ADD LINK32 hs_regex.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\Release" !ELSEIF "$(CFG)" == "ltest - Win32 Debug" @@ -59,11 +64,12 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug\ltest" +# PROP Output_Dir "..\Debug" # PROP Intermediate_Dir "Debug\ltest" +# PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe @@ -71,7 +77,55 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 oldap32.lib olber32.lib olutil32.lib hs_regex.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" +# ADD LINK32 hs_regex.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" + +!ELSEIF "$(CFG)" == "ltest - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ltest___" +# PROP BASE Intermediate_Dir "ltest___" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\ltest" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 oldap32.lib olber32.lib olutil32.lib hs_regex.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\Release" +# ADD LINK32 hs_regex.lib ws2_32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\SRelease" + +!ELSEIF "$(CFG)" == "ltest - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ltest__0" +# PROP BASE Intermediate_Dir "ltest__0" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\ltest" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 oldap32.lib olber32.lib olutil32.lib hs_regex.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\Debug" +# ADD LINK32 hs_regex.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\SDebug" !ENDIF @@ -79,6 +133,8 @@ LINK32=link.exe # Name "ltest - Win32 Release" # Name "ltest - Win32 Debug" +# Name "ltest - Win32 Single Release" +# Name "ltest - Win32 Single Debug" # Begin Source File SOURCE=.\test.c diff --git a/libraries/libldap/modify.c b/libraries/libldap/modify.c index f10f082da2..71abe8aba1 100644 --- a/libraries/libldap/modify.c +++ b/libraries/libldap/modify.c @@ -20,13 +20,18 @@ #include "ldap-int.h" /* - * ldap_modify - initiate an ldap (and X.500) modify operation. Parameters: + * ldap_modify_ext - initiate an ldap extended modify operation. + * + * Parameters: * * ld LDAP descriptor * dn DN of the object to modify * mods List of modifications to make. This is null-terminated * array of struct ldapmod's, specifying the modifications * to perform. + * sctrls Server Controls + * cctrls Client Controls + * msgidp Message ID pointer * * Example: * LDAPMod *mods[] = { @@ -34,10 +39,15 @@ * { LDAP_MOD_REPLACE, "sn", { "jensen", 0 } }, * 0 * } - * msgid = ldap_modify( ld, dn, mods ); + * rc= ldap_modify_ext( ld, dn, mods, sctrls, cctrls, &msgid ); */ int -ldap_modify( LDAP *ld, char *dn, LDAPMod **mods ) +ldap_modify_ext( LDAP *ld, + LDAP_CONST char *dn, + LDAPMod **mods, + LDAPControl **sctrls, + LDAPControl **cctrls, + int *msgidp ) { BerElement *ber; int i, rc; @@ -60,18 +70,18 @@ ldap_modify( LDAP *ld, char *dn, LDAPMod **mods ) * } */ - Debug( LDAP_DEBUG_TRACE, "ldap_modify\n", 0, 0, 0 ); + Debug( LDAP_DEBUG_TRACE, "ldap_modify_ext\n", 0, 0, 0 ); /* create a message to send */ if ( (ber = ldap_alloc_ber_with_options( ld )) == NULLBER ) { - return( -1 ); + return( LDAP_NO_MEMORY ); } if ( ber_printf( ber, "{it{s{", ++ld->ld_msgid, LDAP_REQ_MODIFY, dn ) == -1 ) { ld->ld_errno = LDAP_ENCODING_ERROR; ber_free( ber, 1 ); - return( -1 ); + return( ld->ld_errno ); } /* for each modification to be performed... */ @@ -88,28 +98,79 @@ ldap_modify( LDAP *ld, char *dn, LDAPMod **mods ) if ( rc == -1 ) { ld->ld_errno = LDAP_ENCODING_ERROR; ber_free( ber, 1 ); - return( -1 ); + return( ld->ld_errno ); } } - if ( ber_printf( ber, "}}}" ) == -1 ) { + if ( ber_printf( ber, "}}" ) == -1 ) { ld->ld_errno = LDAP_ENCODING_ERROR; ber_free( ber, 1 ); - return( -1 ); + return( ld->ld_errno ); + } + + /* Put Server Controls */ + if( ldap_int_put_controls( ld, sctrls, ber ) != LDAP_SUCCESS ) { + ber_free( ber, 1 ); + return ld->ld_errno; + } + + if ( ber_printf( ber, "}" ) == -1 ) { + ld->ld_errno = LDAP_ENCODING_ERROR; + ber_free( ber, 1 ); + return( ld->ld_errno ); } /* send the message */ - return( ldap_send_initial_request( ld, LDAP_REQ_MODIFY, dn, ber )); + *msgidp = ldap_send_initial_request( ld, LDAP_REQ_MODIFY, dn, ber ); + return( *msgidp < 0 ? ld->ld_errno : LDAP_SUCCESS ); +} + +/* + * ldap_modify - initiate an ldap modify operation. + * + * Parameters: + * + * ld LDAP descriptor + * dn DN of the object to modify + * mods List of modifications to make. This is null-terminated + * array of struct ldapmod's, specifying the modifications + * to perform. + * + * Example: + * LDAPMod *mods[] = { + * { LDAP_MOD_ADD, "cn", { "babs jensen", "babs", 0 } }, + * { LDAP_MOD_REPLACE, "sn", { "jensen", 0 } }, + * 0 + * } + * msgid = ldap_modify( ld, dn, mods ); + */ +int +ldap_modify( LDAP *ld, LDAP_CONST char *dn, LDAPMod **mods ) +{ + int rc, msgid; + + Debug( LDAP_DEBUG_TRACE, "ldap_modify\n", 0, 0, 0 ); + + rc = ldap_modify_ext( ld, dn, mods, NULL, NULL, &msgid ); + + if ( rc != LDAP_SUCCESS ) + return -1; + + return msgid; } int -ldap_modify_s( LDAP *ld, char *dn, LDAPMod **mods ) +ldap_modify_ext_s( LDAP *ld, LDAP_CONST char *dn, + LDAPMod **mods, LDAPControl **sctrl, LDAPControl **cctrl ) { + int rc; int msgid; LDAPMessage *res; - if ( (msgid = ldap_modify( ld, dn, mods )) == -1 ) - return( ld->ld_errno ); + rc = ldap_modify_ext( ld, dn, mods, sctrl, cctrl, &msgid ); + + if ( rc != LDAP_SUCCESS ) + return( rc ); if ( ldap_result( ld, msgid, 1, (struct timeval *) NULL, &res ) == -1 ) return( ld->ld_errno ); @@ -117,3 +178,9 @@ ldap_modify_s( LDAP *ld, char *dn, LDAPMod **mods ) return( ldap_result2error( ld, res, 1 ) ); } +int +ldap_modify_s( LDAP *ld, LDAP_CONST char *dn, LDAPMod **mods ) +{ + return ldap_modify_ext_s( ld, dn, mods, NULL, NULL ); +} + diff --git a/libraries/libldap/modrdn.c b/libraries/libldap/modrdn.c index d148ab552b..8debf49971 100644 --- a/libraries/libldap/modrdn.c +++ b/libraries/libldap/modrdn.c @@ -33,21 +33,28 @@ #include "ldap-int.h" /* - * ldap_rename2 - initiate an ldap (and X.500) modifyDN operation. Parameters: - * (LDAP V3 MODIFYDN REQUEST) - * ld LDAP descriptor - * dn DN of the object to modify - * newrdn RDN to give the object + * ldap_rename - initiate an ldap extended modifyDN operation. + * + * Parameters: + * ld LDAP descriptor + * dn DN of the object to modify + * newrdn RDN to give the object * deleteoldrdn nonzero means to delete old rdn values from the entry - * newSuperior DN of the new parent if applicable + * newSuperior DN of the new parent if applicable + * + * Returns the LDAP error code. */ int -ldap_rename2( LDAP *ld, - char *dn, - char *newrdn, - int deleteoldrdn, - char *newSuperior ) +ldap_rename( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *newrdn, + int deleteoldrdn, + LDAP_CONST char *newSuperior, + LDAPControl **sctrls, + LDAPControl **cctrls, + int *msgidp ) { /* * A modify rdn request looks like this: @@ -59,137 +66,179 @@ ldap_rename2( LDAP *ld, * } */ - Debug( LDAP_DEBUG_TRACE, "ldap_rename2\n", 0, 0, 0 ); + BerElement *ber; + int rc; - if( newSuperior != NULL ) { - BerElement *ber; - - /* create a message to send */ - if ( (ber = ldap_alloc_ber_with_options( ld )) == NULLBER ) { - return( -1 ); - } - - if ( ber_printf( ber, "{it{ssbts}}", - ++ld->ld_msgid, - LDAP_REQ_MODRDN, - dn, - newrdn, - deleteoldrdn, - LDAP_TAG_NEWSUPERIOR, - newSuperior ) - == -1 ) { + Debug( LDAP_DEBUG_TRACE, "ldap_rename\n", 0, 0, 0 ); - ld->ld_errno = LDAP_ENCODING_ERROR; - ber_free( ber, 1 ); - return( -1 ); + /* create a message to send */ + if ( (ber = ldap_alloc_ber_with_options( ld )) == NULLBER ) { + return( LDAP_NO_MEMORY ); + } - } + if( newSuperior != NULL ) { + /* must be version 3 (or greater) */ + if ( ld->ld_version == 0 ) { + ld->ld_version = LDAP_VERSION3; + } + + if ( ld->ld_version < LDAP_VERSION3 ) { + ld->ld_errno = LDAP_NOT_SUPPORTED; + ber_free( ber, 1 ); + return( ld->ld_errno ); + } + + rc = ber_printf( ber, "{it{ssbts}", /* leave '}' for later */ + ++ld->ld_msgid, LDAP_REQ_MODDN, + dn, newrdn, deleteoldrdn, + LDAP_TAG_NEWSUPERIOR, newSuperior ); - /* send the message */ - return ldap_send_initial_request( ld, LDAP_REQ_MODRDN, dn, ber ); - } else { + rc = ber_printf( ber, "{it{ssb}", /* leave '}' for later */ + ++ld->ld_msgid, LDAP_REQ_MODDN, + dn, newrdn, deleteoldrdn ); + } - /* If no newSuperior fall through to ldap_modrdn2() */ + if ( rc < 0 ) { + ld->ld_errno = LDAP_ENCODING_ERROR; + ber_free( ber, 1 ); + return( ld->ld_errno ); + } - return ldap_modrdn2( ld, dn, newrdn, deleteoldrdn ); + /* Put Server Controls */ + if( ldap_int_put_controls( ld, sctrls, ber ) != LDAP_SUCCESS ) { + ber_free( ber, 1 ); + return ld->ld_errno; + } + + /* close the '{' */ + rc = ber_printf( ber, "}" ); + if ( rc < 0 ) { + ld->ld_errno = LDAP_ENCODING_ERROR; + ber_free( ber, 1 ); + return( ld->ld_errno ); + } + /* send the message */ + *msgidp = ldap_send_initial_request( ld, LDAP_REQ_MODRDN, dn, ber ); + + if( *msgidp < 0 ) { + return( ld->ld_errno ); } -}/* int ldap_rename2() */ + return LDAP_SUCCESS; +} /* - * ldap_modrdn2 - initiate an ldap (and X.500) modifyRDN operation. Parameters: - * + * ldap_rename2 - initiate an ldap (and X.500) modifyDN operation. Parameters: + * (LDAP V3 MODIFYDN REQUEST) * ld LDAP descriptor * dn DN of the object to modify * newrdn RDN to give the object * deleteoldrdn nonzero means to delete old rdn values from the entry + * newSuperior DN of the new parent if applicable * - * Example: - * msgid = ldap_modrdn( ld, dn, newrdn ); + * ldap_rename2 uses a U-Mich Style API. It returns the msgid. */ + int -ldap_modrdn2( LDAP *ld, char *dn, char *newrdn, int deleteoldrdn ) +ldap_rename2( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *newrdn, + int deleteoldrdn, + LDAP_CONST char *newSuperior ) { - BerElement *ber; + int msgid; + int rc; - /* - * A modify rdn request looks like this: - * ModifyRDNRequest ::= SEQUENCE { - * entry DistinguishedName, - * newrdn RelativeDistinguishedName, - * deleteoldrdn BOOLEAN - * } - */ + Debug( LDAP_DEBUG_TRACE, "ldap_rename2\n", 0, 0, 0 ); - Debug( LDAP_DEBUG_TRACE, "ldap_modrdn\n", 0, 0, 0 ); + rc = ldap_rename( ld, dn, newrdn, deleteoldrdn, newSuperior, + NULL, NULL, &msgid ); - /* create a message to send */ - if ( (ber = ldap_alloc_ber_with_options( ld )) == NULLBER ) { - return( -1 ); - } + return rc == LDAP_SUCCESS ? msgid : -1; +} - if ( ber_printf( ber, "{it{ssb}}", ++ld->ld_msgid, LDAP_REQ_MODRDN, dn, - newrdn, deleteoldrdn ) == -1 ) { - ld->ld_errno = LDAP_ENCODING_ERROR; - ber_free( ber, 1 ); - return( -1 ); - } - /* send the message */ - return ( ldap_send_initial_request( ld, LDAP_REQ_MODRDN, dn, ber )); +/* + * ldap_modrdn2 - initiate an ldap modifyRDN operation. Parameters: + * + * ld LDAP descriptor + * dn DN of the object to modify + * newrdn RDN to give the object + * deleteoldrdn nonzero means to delete old rdn values from the entry + * + * Example: + * msgid = ldap_modrdn( ld, dn, newrdn ); + */ +int +ldap_modrdn2( LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *newrdn, + int deleteoldrdn ) +{ + return ldap_rename2( ld, dn, newrdn, deleteoldrdn, NULL ); } int -ldap_modrdn( LDAP *ld, char *dn, char *newrdn ) +ldap_modrdn( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn ) { - return( ldap_modrdn2( ld, dn, newrdn, 1 ) ); + return( ldap_rename2( ld, dn, newrdn, 1, NULL ) ); } + int -ldap_rename2_s( LDAP *ld, char *dn, char *newrdn, int deleteoldrdn, - char *newSuperior ) +ldap_rename_s( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *newrdn, + int deleteoldrdn, + LDAP_CONST char *newSuperior, + LDAPControl **sctrls, + LDAPControl **cctrls ) { - int msgid; - LDAPMessage *res; + int rc; + int msgid; + LDAPMessage *res; + rc = ldap_rename( ld, dn, newrdn, deleteoldrdn, + newSuperior, sctrls, cctrls, &msgid ); - if ( (msgid = ldap_rename2( ld, - dn, - newrdn, - deleteoldrdn, - newSuperior )) - == -1 ) - return( ld->ld_errno ); + if( rc != LDAP_SUCCESS ) { + return rc; + } - if ( ldap_result( ld, msgid, 1, (struct timeval *) NULL, &res ) - == -1 ) - return( ld->ld_errno ); + rc = ldap_result( ld, msgid, 1, NULL, &res ); - return( ldap_result2error( ld, res, 1 ) ); + if( rc == -1 ) { + return ld->ld_errno; + } + return ldap_result2error( ld, res, 1 ); } int -ldap_modrdn2_s( LDAP *ld, char *dn, char *newrdn, int deleteoldrdn ) +ldap_rename2_s( + LDAP *ld, + LDAP_CONST char *dn, + LDAP_CONST char *newrdn, + int deleteoldrdn, + LDAP_CONST char *newSuperior ) { - int msgid; - LDAPMessage *res; - - if ( (msgid = ldap_modrdn2( ld, dn, newrdn, deleteoldrdn )) == -1 ) - return( ld->ld_errno ); - - if ( ldap_result( ld, msgid, 1, (struct timeval *) NULL, &res ) == -1 ) - return( ld->ld_errno ); + return ldap_rename_s( ld, dn, newrdn, deleteoldrdn, newSuperior, NULL, NULL ); +} - return( ldap_result2error( ld, res, 1 ) ); +int +ldap_modrdn2_s( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn, int deleteoldrdn ) +{ + return ldap_rename_s( ld, dn, newrdn, deleteoldrdn, NULL, NULL, NULL ); } int -ldap_modrdn_s( LDAP *ld, char *dn, char *newrdn ) +ldap_modrdn_s( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn ) { - return( ldap_modrdn2_s( ld, dn, newrdn, 1 ) ); + return ldap_rename_s( ld, dn, newrdn, 1, NULL, NULL, NULL ); } diff --git a/libraries/libldap/open.c b/libraries/libldap/open.c index a1db516cbb..e42c95cd0e 100644 --- a/libraries/libldap/open.c +++ b/libraries/libldap/open.c @@ -36,7 +36,7 @@ */ LDAP * -ldap_open( char *host, int port ) +ldap_open( LDAP_CONST char *host, int port ) { LDAP *ld; #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS @@ -54,7 +54,7 @@ ldap_open( char *host, int port ) NULL || ( ld->ld_defhost != NULL && ( srv->lsrv_host = strdup( ld->ld_defhost )) == NULL )) { if(srv != NULL) free( (char*) srv ); - ldap_ld_free( ld, 0 ); + ldap_ld_free( ld, 0, NULL, NULL ); return( NULL ); } srv->lsrv_port = ld->ld_defport; @@ -62,7 +62,7 @@ ldap_open( char *host, int port ) if (( ld->ld_defconn = ldap_new_connection( ld, &srv, 1,1,0 )) == NULL ) { if ( ld->ld_defhost != NULL ) free( srv->lsrv_host ); free( (char *)srv ); - ldap_ld_free( ld, 0 ); + ldap_ld_free( ld, 0, NULL, NULL ); return( NULL ); } ++ld->ld_defconn->lconn_refcnt; /* so it never gets closed/freed */ @@ -70,7 +70,7 @@ ldap_open( char *host, int port ) #else /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */ if ( open_ldap_connection( ld, &ld->ld_sb, ld->ld_defhost, ld->ld_defport, &ld->ld_host, 0 ) < 0 ) { - ldap_ld_free( ld, 0 ); + ldap_ld_free( ld, 0, NULL, NULL ); return( NULL ); } #endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */ @@ -92,7 +92,7 @@ ldap_open( char *host, int port ) * ld = ldap_open( host, port ); */ LDAP * -ldap_init( char *defhost, int defport ) +ldap_init( LDAP_CONST char *defhost, int defport ) { LDAP *ld; @@ -199,20 +199,20 @@ ldap_init( char *defhost, int defport ) /* we'll assume we're talking version 2 for now */ ld->ld_version = LDAP_VERSION2; - lber_pvt_sb_init( &(ld->ld_sb) ); + ber_pvt_sb_init( &(ld->ld_sb) ); return( ld ); } int -open_ldap_connection( LDAP *ld, Sockbuf *sb, char *host, int defport, +open_ldap_connection( LDAP *ld, Sockbuf *sb, const char *host, int defport, char **krbinstancep, int async ) { int rc = -1; int port; - char *p, *q, *r; - char *curhost, hostname[ 2*MAXHOSTNAMELEN ]; + const char *p, *q; + char *r, *curhost, hostname[ 2*MAXHOSTNAMELEN ]; Debug( LDAP_DEBUG_TRACE, "open_ldap_connection\n", 0, 0, 0 ); @@ -228,7 +228,7 @@ open_ldap_connection( LDAP *ld, Sockbuf *sb, char *host, int defport, ++q; } } else { - curhost = p; /* avoid copy if possible */ + curhost = (char *) p; /* avoid copy if possible */ q = NULL; } @@ -258,7 +258,7 @@ open_ldap_connection( LDAP *ld, Sockbuf *sb, char *host, int defport, return( rc ); } - lber_pvt_sb_set_io( sb, &lber_pvt_sb_io_tcp, NULL ); + ber_pvt_sb_set_io( sb, &ber_pvt_sb_io_tcp, NULL ); if ( krbinstancep != NULL ) { #ifdef HAVE_KERBEROS diff --git a/libraries/libldap/options.c b/libraries/libldap/options.c index e8d2f30af6..0ea0ae81bc 100644 --- a/libraries/libldap/options.c +++ b/libraries/libldap/options.c @@ -14,32 +14,65 @@ #include "ldap-int.h" static const LDAPAPIFeatureInfo features[] = { -#ifdef LDAP_API_FEATURE_INFO - {"INFO", LDAP_API_FEATURE_INFO}, +#ifdef LDAP_API_FEATURE_X_OPENLDAP + { /* OpenLDAP Extensions API Feature */ + LDAP_FEATURE_INFO_VERSION, + "X_OPENLDAP", + LDAP_API_FEATURE_X_OPENLDAP + }, #endif + #ifdef LDAP_API_FEATURE_THREAD_SAFE - {"THREAD_SAFE", LDAP_API_FEATURE_THREAD_SAFE}, + { /* Basic Thread Safe */ + LDAP_FEATURE_INFO_VERSION, + "THREAD_SAFE", + LDAP_API_FEATURE_THREAD_SAFE + }, #endif #ifdef LDAP_API_FEATURE_SESSION_THREAD_SAFE - {"SESSION_THREAD_SAFE", LDAP_API_FEATURE_SESSION_THREAD_SAFE}, + { /* Session Thread Safe */ + LDAP_FEATURE_INFO_VERSION, + "SESSION_THREAD_SAFE", + LDAP_API_FEATURE_SESSION_THREAD_SAFE + }, #endif #ifdef LDAP_API_FEATURE_OPERATION_THREAD_SAFE - {"OPERATION_THREAD_SAFE", LDAP_API_FEATURE_OPERATION_THREAD_SAFE}, + { /* Operation Thread Safe */ + LDAP_FEATURE_INFO_VERSION, + "OPERATION_THREAD_SAFE", + LDAP_API_FEATURE_OPERATION_THREAD_SAFE + }, #endif #ifdef LDAP_API_FEATURE_X_OPENLDAP_REENTRANT - {"X_OPENLDAP_REENTRANT", LDAP_API_FEATURE_X_OPENLDAP_REENTRANT}, + { /* OpenLDAP Reentrant */ + LDAP_FEATURE_INFO_VERSION, + "X_OPENLDAP_REENTRANT", + LDAP_API_FEATURE_X_OPENLDAP_REENTRANT + }, #endif #if defined( LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE ) && \ defined( LDAP_THREAD_SAFE ) - {"X_OPENLDAP_THREAD_SAFE", LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE}, + { /* OpenLDAP Thread Safe */ + LDAP_FEATURE_INFO_VERSION, + "X_OPENLDAP_THREAD_SAFE", + LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE + }, #endif #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_DNS - {"X_OPENLDAP_V2_DNS", LDAP_API_FEATURE_X_OPENLDAP_V2_DNS}, + { /* DNS */ + LDAP_FEATURE_INFO_VERSION, + "X_OPENLDAP_V2_DNS", + LDAP_API_FEATURE_X_OPENLDAP_V2_DNS + }, #endif #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS - {"X_OPENLDAP_V2_REFERRALS", LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS}, + { /* V2 Referrals */ + LDAP_FEATURE_INFO_VERSION, + "X_OPENLDAP_V2_REFERRALS", + LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS + }, #endif - {NULL, 0} + {0, NULL, 0} }; int @@ -111,7 +144,7 @@ ldap_get_option( break; } - * (int *) outvalue = lber_pvt_sb_get_desc( &(ld->ld_sb) ); + * (int *) outvalue = ber_pvt_sb_get_desc( &(ld->ld_sb) ); return 0; case LDAP_OPT_DEREF: @@ -151,13 +184,13 @@ ldap_get_option( case LDAP_OPT_SERVER_CONTROLS: * (LDAPControl ***) outvalue = - ldap_controls_dup( lo->ldo_server_controls ); + ldap_controls_dup( lo->ldo_sctrls ); return 0; case LDAP_OPT_CLIENT_CONTROLS: * (LDAPControl ***) outvalue = - ldap_controls_dup( lo->ldo_client_controls ); + ldap_controls_dup( lo->ldo_cctrls ); return 0; @@ -203,6 +236,13 @@ ldap_get_option( int i; if(info == NULL) return -1; + + if(info->ldapaif_info_version != LDAP_FEATURE_INFO_VERSION) { + /* api info version mismatch */ + info->ldapaif_info_version = LDAP_FEATURE_INFO_VERSION; + return -1; + } + if(info->ldapaif_name == NULL) return -1; for(i=0; features[i].ldapaif_name != NULL; i++) { @@ -298,17 +338,17 @@ ldap_set_option( case LDAP_OPT_SERVER_CONTROLS: { LDAPControl **controls = (LDAPControl **) invalue; - ldap_controls_free( lo->ldo_server_controls ); + ldap_controls_free( lo->ldo_sctrls ); if( controls == NULL || *controls == NULL ) { - lo->ldo_server_controls = NULL; + lo->ldo_sctrls = NULL; return 0; } - lo->ldo_server_controls = + lo->ldo_sctrls = ldap_controls_dup( (LDAPControl **) invalue ); - if(lo->ldo_server_controls == NULL) { + if(lo->ldo_sctrls == NULL) { /* memory allocation error ? */ break; } @@ -317,17 +357,17 @@ ldap_set_option( case LDAP_OPT_CLIENT_CONTROLS: { LDAPControl **controls = (LDAPControl **) invalue; - ldap_controls_free( lo->ldo_client_controls ); + ldap_controls_free( lo->ldo_cctrls ); if( controls == NULL || *controls == NULL ) { - lo->ldo_client_controls = NULL; + lo->ldo_cctrls = NULL; return 0; } - lo->ldo_client_controls = + lo->ldo_cctrls = ldap_controls_dup( (LDAPControl **) invalue ); - if(lo->ldo_client_controls == NULL) { + if(lo->ldo_cctrls == NULL) { /* memory allocation error ? */ break; } diff --git a/libraries/libldap/os-ip.c b/libraries/libldap/os-ip.c index 54e068b2a1..e30fcb5a82 100644 --- a/libraries/libldap/os-ip.c +++ b/libraries/libldap/os-ip.c @@ -33,7 +33,7 @@ #include "ldap-int.h" int -ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address, +ldap_connect_to_host( Sockbuf *sb, const char *host, unsigned long address, int port, int async ) /* * if host == NULL, connect using address @@ -140,7 +140,7 @@ ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address, } } - lber_pvt_sb_set_desc( sb, s ); + ber_pvt_sb_set_desc( sb, s ); if ( connected ) { @@ -167,7 +167,7 @@ ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address, void ldap_close_connection( Sockbuf *sb ) { - lber_pvt_sb_close( sb ); + ber_pvt_sb_close( sb ); } @@ -189,7 +189,7 @@ ldap_host_connected_to( Sockbuf *sb ) (void)memset( (char *)&sin, 0, sizeof( struct sockaddr_in )); len = sizeof( sin ); - if ( getpeername( lber_pvt_sb_get_desc(sb), (struct sockaddr *)&sin, &len ) == -1 ) { + if ( getpeername( ber_pvt_sb_get_desc(sb), (struct sockaddr *)&sin, &len ) == -1 ) { return( NULL ); } @@ -233,7 +233,7 @@ ldap_mark_select_write( LDAP *ld, Sockbuf *sb ) sip = (struct selectinfo *)ld->ld_selectinfo; - if ( !FD_ISSET( lber_pvt_sb_get_desc(sb), &sip->si_writefds )) { + if ( !FD_ISSET( ber_pvt_sb_get_desc(sb), &sip->si_writefds )) { FD_SET( (u_int) sb->sb_sd, &sip->si_writefds ); } } @@ -246,7 +246,7 @@ ldap_mark_select_read( LDAP *ld, Sockbuf *sb ) sip = (struct selectinfo *)ld->ld_selectinfo; - if ( !FD_ISSET( lber_pvt_sb_get_desc(sb), &sip->si_readfds )) { + if ( !FD_ISSET( ber_pvt_sb_get_desc(sb), &sip->si_readfds )) { FD_SET( (u_int) sb->sb_sd, &sip->si_readfds ); } } @@ -259,8 +259,8 @@ ldap_mark_select_clear( LDAP *ld, Sockbuf *sb ) sip = (struct selectinfo *)ld->ld_selectinfo; - FD_CLR( (u_int) lber_pvt_sb_get_desc(sb), &sip->si_writefds ); - FD_CLR( (u_int) lber_pvt_sb_get_desc(sb), &sip->si_readfds ); + FD_CLR( (u_int) ber_pvt_sb_get_desc(sb), &sip->si_writefds ); + FD_CLR( (u_int) ber_pvt_sb_get_desc(sb), &sip->si_readfds ); } @@ -271,7 +271,7 @@ ldap_is_write_ready( LDAP *ld, Sockbuf *sb ) sip = (struct selectinfo *)ld->ld_selectinfo; - return( FD_ISSET( lber_pvt_sb_get_desc(sb), &sip->si_use_writefds )); + return( FD_ISSET( ber_pvt_sb_get_desc(sb), &sip->si_use_writefds )); } @@ -282,7 +282,7 @@ ldap_is_read_ready( LDAP *ld, Sockbuf *sb ) sip = (struct selectinfo *)ld->ld_selectinfo; - return( FD_ISSET( lber_pvt_sb_get_desc(sb), &sip->si_use_readfds )); + return( FD_ISSET( ber_pvt_sb_get_desc(sb), &sip->si_use_readfds )); } diff --git a/libraries/libldap/print.c b/libraries/libldap/print.c index ee021296fa..f8203c1604 100644 --- a/libraries/libldap/print.c +++ b/libraries/libldap/print.c @@ -33,7 +33,7 @@ static int ldap_log_check( LDAP *ld, int loglvl ) int ldap_log_printf #ifdef HAVE_STDARG - ( LDAP *ld, int loglvl, char *fmt, ... ) + ( LDAP *ld, int loglvl, const char *fmt, ... ) #else ( va_alist ) va_dcl @@ -72,6 +72,6 @@ va_dcl va_end(ap); - (*lber_pvt_log_print)( buf ); + (*ber_pvt_log_print)( buf ); return 1; } diff --git a/libraries/libldap/references.c b/libraries/libldap/references.c index fd56c9ce00..176a72c9ec 100644 --- a/libraries/libldap/references.c +++ b/libraries/libldap/references.c @@ -107,7 +107,7 @@ ldap_parse_reference( goto free_and_return; } - rc = ldap_get_ber_controls( &be, serverctrls ); + rc = ldap_int_get_controls( &be, serverctrls ); free_and_return: diff --git a/libraries/libldap/request.c b/libraries/libldap/request.c index ed56a0563b..24c9d21850 100644 --- a/libraries/libldap/request.c +++ b/libraries/libldap/request.c @@ -45,7 +45,7 @@ ldap_alloc_ber_with_options( LDAP *ld ) { BerElement *ber; - if (( ber = ber_alloc_t( ld->ld_lberoptions )) == NULLBER ) { + if (( ber = ber_alloc_t( ld->ld_lberoptions )) == NULLBER ) { ld->ld_errno = LDAP_NO_MEMORY; #ifdef STR_TRANSLATION } else { @@ -72,7 +72,10 @@ ldap_set_ber_options( LDAP *ld, BerElement *ber ) int -ldap_send_initial_request( LDAP *ld, unsigned long msgtype, char *dn, +ldap_send_initial_request( + LDAP *ld, + unsigned long msgtype, + const char *dn, BerElement *ber ) { #if defined( LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS ) || defined( LDAP_API_FEATURE_X_OPENLDAP_V2_DNS ) @@ -81,7 +84,7 @@ ldap_send_initial_request( LDAP *ld, unsigned long msgtype, char *dn, Debug( LDAP_DEBUG_TRACE, "ldap_send_initial_request\n", 0, 0, 0 ); - if ( ! lber_pvt_sb_in_use(&ld->ld_sb ) ) { + if ( ! ber_pvt_sb_in_use(&ld->ld_sb ) ) { /* not connected yet */ #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS @@ -300,7 +303,7 @@ ldap_new_connection( LDAP *ld, LDAPServer **srvlistp, int use_ldsb, * XXX open connection synchronously for now */ if (( lc = (LDAPConn *)calloc( 1, sizeof( LDAPConn ))) == NULL || - ( !use_ldsb && ( (sb = lber_pvt_sb_alloc()) == NULL ))) { + ( !use_ldsb && ( (sb = ber_sockbuf_alloc()) == NULL ))) { if ( lc != NULL ) { free( (char *)lc ); } @@ -324,7 +327,7 @@ ldap_new_connection( LDAP *ld, LDAPServer **srvlistp, int use_ldsb, if ( srv == NULL ) { if ( !use_ldsb ) { - lber_pvt_sb_free( lc->lconn_sb ); + ber_sockbuf_free( lc->lconn_sb ); } free( (char *)lc ); ld->ld_errno = LDAP_SERVER_DOWN; @@ -444,10 +447,10 @@ ldap_free_connection( LDAP *ld, LDAPConn *lc, int force, int unbind ) if ( lc->lconn_status == LDAP_CONNST_CONNECTED ) { ldap_mark_select_clear( ld, lc->lconn_sb ); if ( unbind ) { - ldap_send_unbind( ld, lc->lconn_sb ); + ldap_send_unbind( ld, lc->lconn_sb, NULL, NULL ); } ldap_close_connection( lc->lconn_sb ); - lber_pvt_sb_destroy( lc->lconn_sb ); + ber_pvt_sb_destroy( lc->lconn_sb ); ber_clear( &lc->lconn_ber, 1 ); } prevlc = NULL; @@ -468,7 +471,7 @@ ldap_free_connection( LDAP *ld, LDAPConn *lc, int force, int unbind ) free( lc->lconn_krbinstance ); } if ( lc->lconn_sb != &ld->ld_sb ) { - lber_pvt_sb_free( lc->lconn_sb ); + ber_sockbuf_free( lc->lconn_sb ); } free( lc ); Debug( LDAP_DEBUG_TRACE, "ldap_free_connection: actually freed\n", @@ -878,7 +881,7 @@ re_encode_request( LDAP *ld, BerElement *origber, int msgid, char **dnp ) if ( ldap_debug & LDAP_DEBUG_PACKETS ) { Debug( LDAP_DEBUG_ANY, "re_encode_request new request is:\n", 0, 0, 0 ); - lber_log_dump( LDAP_DEBUG_BER, ldap_debug, ber, 0 ); + ber_log_dump( LDAP_DEBUG_BER, ldap_debug, ber, 0 ); } #endif /* LDAP_DEBUG */ diff --git a/libraries/libldap/result.c b/libraries/libldap/result.c index 40729f18c5..affb590d46 100644 --- a/libraries/libldap/result.c +++ b/libraries/libldap/result.c @@ -166,7 +166,7 @@ wait4msg( LDAP *ld, int msgid, int all, struct timeval *timeout, while ( rc == -2 ) { #ifndef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS /* hack attack */ - if ( ! lber_pvt_sb_data_ready(&ld->ld_sb) ) { + if ( ! ber_pvt_sb_data_ready(&ld->ld_sb) ) { rc = ldap_select1( ld, tvp ); if ( rc == 0 || ( rc == -1 && ( @@ -192,7 +192,7 @@ wait4msg( LDAP *ld, int msgid, int all, struct timeval *timeout, } #endif /* LDAP_DEBUG */ for ( lc = ld->ld_conns; lc != NULL; lc = lc->lconn_next ) { - if ( lber_pvt_sb_data_ready(lc->lconn_sb) ) { + if ( ber_pvt_sb_data_ready(lc->lconn_sb) ) { rc = try_read1msg( ld, msgid, all, lc->lconn_sb, lc, result ); break; @@ -578,7 +578,7 @@ merge_error_info( LDAP *ld, LDAPRequest *parentr, LDAPRequest *lr ) } parentr->lr_res_error = lr->lr_res_error; lr->lr_res_error = NULL; - if ( NAME_ERROR( lr->lr_res_errno )) { + if ( LDAP_NAME_ERROR( lr->lr_res_errno )) { if ( parentr->lr_res_matched != NULL ) { free( parentr->lr_res_matched ); } @@ -622,7 +622,7 @@ ldap_select1( LDAP *ld, struct timeval *timeout ) } FD_ZERO( &readfds ); - FD_SET( lber_pvt_sb_get_desc(&ld->ld_sb), &readfds ); + FD_SET( ber_pvt_sb_get_desc(&ld->ld_sb), &readfds ); return( select( tblsize, &readfds, 0, 0, timeout ) ); } @@ -744,7 +744,7 @@ cldap_getmsg( LDAP *ld, struct timeval *timeout, BerElement *ber ) int rc; unsigned long tag, len; - if ( ! lber_pvt_sb_data_ready(&ld->ld_sb) ) { + if ( ! ber_pvt_sb_data_ready(&ld->ld_sb) ) { rc = ldap_select1( ld, timeout ); if ( rc == -1 || rc == 0 ) { ld->ld_errno = (rc == -1 ? LDAP_SERVER_DOWN : diff --git a/libraries/libldap/sbind.c b/libraries/libldap/sbind.c index e4753c3497..e6a4f96bd4 100644 --- a/libraries/libldap/sbind.c +++ b/libraries/libldap/sbind.c @@ -31,7 +31,7 @@ */ int -ldap_simple_bind( LDAP *ld, char *dn, char *passwd ) +ldap_simple_bind( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *passwd ) { BerElement *ber; @@ -89,7 +89,7 @@ ldap_simple_bind( LDAP *ld, char *dn, char *passwd ) */ int -ldap_simple_bind_s( LDAP *ld, char *dn, char *passwd ) +ldap_simple_bind_s( LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *passwd ) { int msgid; LDAPMessage *result; diff --git a/libraries/libldap/search.c b/libraries/libldap/search.c index 117d5f4d2e..dd7f26f734 100644 --- a/libraries/libldap/search.c +++ b/libraries/libldap/search.c @@ -30,7 +30,9 @@ static int put_substring_filter LDAP_P(( BerElement *ber, char *type, char *str static int put_filter_list LDAP_P(( BerElement *ber, char *str )); /* - * ldap_search - initiate an ldap (and X.500) search operation. Parameters: + * ldap_search - initiate an ldap search operation. + * + * Parameters: * * ld LDAP descriptor * base DN of the base object @@ -47,7 +49,7 @@ static int put_filter_list LDAP_P(( BerElement *ber, char *str )); * attrs, attrsonly ); */ int -ldap_search( LDAP *ld, char *base, int scope, char *filter, +ldap_search( LDAP *ld, LDAP_CONST char *base, int scope, LDAP_CONST char *filter, char **attrs, int attrsonly ) { BerElement *ber; @@ -55,7 +57,7 @@ ldap_search( LDAP *ld, char *base, int scope, char *filter, Debug( LDAP_DEBUG_TRACE, "ldap_search\n", 0, 0, 0 ); if (( ber = ldap_build_search_req( ld, base, scope, filter, attrs, - attrsonly )) == NULLBER ) { + attrsonly, NULL, NULL )) == NULLBER ) { return( -1 ); } @@ -76,11 +78,20 @@ ldap_search( LDAP *ld, char *base, int scope, char *filter, BerElement * -ldap_build_search_req( LDAP *ld, char *base, int scope, char *filter, - char **attrs, int attrsonly ) +ldap_build_search_req( + LDAP *ld, + LDAP_CONST char *base_in, + int scope, + LDAP_CONST char *filter_in, + char **attrs, + int attrsonly, + LDAPControl **sctrls, + LDAPControl **cctrls ) { BerElement *ber; int err; + char *base; + char *filter; /* * Create the search request. It looks like this: @@ -111,9 +122,11 @@ ldap_build_search_req( LDAP *ld, char *base, int scope, char *filter, return( NULLBER ); } - if ( base == NULL ) { + if ( base_in == NULL ) { /* no base provided, use session default base */ base = ld->ld_options.ldo_defbase; + } else { + base = (char *) base_in; } if ( base == NULL ) { @@ -141,7 +154,7 @@ ldap_build_search_req( LDAP *ld, char *base, int scope, char *filter, return( NULLBER ); } - filter = strdup( filter ); + filter = strdup( filter_in ); err = put_filter( ber, filter ); free( filter ); @@ -151,7 +164,19 @@ ldap_build_search_req( LDAP *ld, char *base, int scope, char *filter, return( NULLBER ); } - if ( ber_printf( ber, "{v}}}", attrs ) == -1 ) { + if ( ber_printf( ber, "{v}}", attrs ) == -1 ) { + ld->ld_errno = LDAP_ENCODING_ERROR; + ber_free( ber, 1 ); + return( NULLBER ); + } + + /* Put Server Controls */ + if( ldap_int_put_controls( ld, sctrls, ber ) != LDAP_SUCCESS ) { + ber_free( ber, 1 ); + return( NULLBER ); + } + + if ( ber_printf( ber, "}", attrs ) == -1 ) { ld->ld_errno = LDAP_ENCODING_ERROR; ber_free( ber, 1 ); return( NULLBER ); @@ -519,7 +544,9 @@ put_substring_filter( BerElement *ber, char *type, char *val ) } int -ldap_search_st( LDAP *ld, char *base, int scope, char *filter, char **attrs, +ldap_search_st( + LDAP *ld, LDAP_CONST char *base, int scope, + LDAP_CONST char *filter, char **attrs, int attrsonly, struct timeval *timeout, LDAPMessage **res ) { int msgid; @@ -541,8 +568,14 @@ ldap_search_st( LDAP *ld, char *base, int scope, char *filter, char **attrs, } int -ldap_search_s( LDAP *ld, char *base, int scope, char *filter, char **attrs, - int attrsonly, LDAPMessage **res ) +ldap_search_s( + LDAP *ld, + LDAP_CONST char *base, + int scope, + LDAP_CONST char *filter, + char **attrs, + int attrsonly, + LDAPMessage **res ) { int msgid; diff --git a/libraries/libldap/sort.c b/libraries/libldap/sort.c index cab92cc7d7..36570bb133 100644 --- a/libraries/libldap/sort.c +++ b/libraries/libldap/sort.c @@ -80,8 +80,8 @@ int ldap_sort_entries( LDAP *ld, LDAPMessage **chain, - char *attr, /* NULL => sort by DN */ - int (*cmp) (const char *, const char *) + LDAP_CONST char *attr, /* NULL => sort by DN */ + int (*cmp) (LDAP_CONST char *, LDAP_CONST char *) ) { int i, count; diff --git a/libraries/libldap/ufn.c b/libraries/libldap/ufn.c index f6dc616e75..aad63aa341 100644 --- a/libraries/libldap/ufn.c +++ b/libraries/libldap/ufn.c @@ -217,7 +217,8 @@ ldap_ufn_search_ctx( LDAP *ld, char **ufncomp, int ncomp, char *prefix, } int -ldap_ufn_search_ct( LDAP *ld, char *ufn, char **attrs, int attrsonly, +ldap_ufn_search_ct( + LDAP *ld, LDAP_CONST char *ufn, char **attrs, int attrsonly, LDAPMessage **res, cancelptype cancelproc, void *cancelparm, char *tag1, char *tag2, char *tag3 ) { @@ -302,7 +303,8 @@ ldap_ufn_search_ct( LDAP *ld, char *ufn, char **attrs, int attrsonly, * ldapfilter.conf tags. */ int -ldap_ufn_search_c( LDAP *ld, char *ufn, char **attrs, int attrsonly, +ldap_ufn_search_c( + LDAP *ld, LDAP_CONST char *ufn, char **attrs, int attrsonly, LDAPMessage **res, cancelptype cancelproc, void *cancelparm ) { return( ldap_ufn_search_ct( ld, ufn, attrs, attrsonly, res, cancelproc, @@ -313,7 +315,8 @@ ldap_ufn_search_c( LDAP *ld, char *ufn, char **attrs, int attrsonly, * same as ldap_ufn_search_c without the cancel function */ int -ldap_ufn_search_s( LDAP *ld, char *ufn, char **attrs, int attrsonly, +ldap_ufn_search_s( + LDAP *ld, LDAP_CONST char *ufn, char **attrs, int attrsonly, LDAPMessage **res ) { struct timeval tv; @@ -459,7 +462,7 @@ ldap_ufn_expand( LDAP *ld, cancelptype cancelproc, void *cancelparm, */ LDAPFiltDesc * -ldap_ufn_setfilter( LDAP *ld, char *fname ) +ldap_ufn_setfilter( LDAP *ld, LDAP_CONST char *fname ) { if ( ld->ld_filtd != NULL ) ldap_getfilter_free( ld->ld_filtd ); @@ -468,7 +471,7 @@ ldap_ufn_setfilter( LDAP *ld, char *fname ) } void -ldap_ufn_setprefix( LDAP *ld, char *prefix ) +ldap_ufn_setprefix( LDAP *ld, LDAP_CONST char *prefix ) { if ( ld->ld_ufnprefix != NULL ) free( ld->ld_ufnprefix ); diff --git a/libraries/libldap/unbind.c b/libraries/libldap/unbind.c index 7f17a1bb73..fb1c2e4d4d 100644 --- a/libraries/libldap/unbind.c +++ b/libraries/libldap/unbind.c @@ -20,18 +20,30 @@ #include "ldap-int.h" +int +ldap_unbind_ext( + LDAP *ld, + LDAPControl **sctrls, + LDAPControl **cctrls ) +{ + return ldap_ld_free( ld, 1, sctrls, cctrls ); +} int ldap_unbind( LDAP *ld ) { Debug( LDAP_DEBUG_TRACE, "ldap_unbind\n", 0, 0, 0 ); - return( ldap_ld_free( ld, 1 )); + return( ldap_unbind_ext( ld, NULL, NULL ) ); } int -ldap_ld_free( LDAP *ld, int close ) +ldap_ld_free( + LDAP *ld, + int close, + LDAPControl **sctrls, + LDAPControl **cctrls ) { LDAPMessage *lm, *next; int err = LDAP_SUCCESS; @@ -53,7 +65,7 @@ ldap_ld_free( LDAP *ld, int close ) } #else /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */ if ( close ) { - err = ldap_send_unbind( ld, &ld->ld_sb ); + err = ldap_send_unbind( ld, &ld->ld_sb, sctrls, cctrls ); ldap_close_connection( &ld->ld_sb ); } #endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */ @@ -101,7 +113,7 @@ ldap_ld_free( LDAP *ld, int close ) if ( ld->ld_options.ldo_defhost != NULL ) free( ld->ld_options.ldo_defhost ); - lber_pvt_sb_destroy( &(ld->ld_sb) ); + ber_pvt_sb_destroy( &(ld->ld_sb) ); free( (char *) ld ); @@ -113,12 +125,16 @@ ldap_ld_free( LDAP *ld, int close ) int ldap_unbind_s( LDAP *ld ) { - return( ldap_ld_free( ld, 1 )); + return( ldap_unbind_ext( ld, NULL, NULL ) ); } int -ldap_send_unbind( LDAP *ld, Sockbuf *sb ) +ldap_send_unbind( + LDAP *ld, + Sockbuf *sb, + LDAPControl **sctrls, + LDAPControl **cctrls ) { BerElement *ber; @@ -130,7 +146,20 @@ ldap_send_unbind( LDAP *ld, Sockbuf *sb ) } /* fill it in */ - if ( ber_printf( ber, "{itn}", ++ld->ld_msgid, + if ( ber_printf( ber, "{itn", ++ld->ld_msgid, + LDAP_REQ_UNBIND ) == -1 ) { + ld->ld_errno = LDAP_ENCODING_ERROR; + ber_free( ber, 1 ); + return( ld->ld_errno ); + } + + /* Put Server Controls */ + if( ldap_int_put_controls( ld, sctrls, ber ) != LDAP_SUCCESS ) { + ber_free( ber, 1 ); + return ld->ld_errno; + } + + if ( ber_printf( ber, "}", ++ld->ld_msgid, LDAP_REQ_UNBIND ) == -1 ) { ld->ld_errno = LDAP_ENCODING_ERROR; ber_free( ber, 1 ); diff --git a/libraries/libldap/url.c b/libraries/libldap/url.c index d7af4a9c43..781ff2f6f5 100644 --- a/libraries/libldap/url.c +++ b/libraries/libldap/url.c @@ -35,60 +35,65 @@ /* local functions */ -static int skip_url_prefix LDAP_P(( char **urlp, int *enclosedp )); +static const char* skip_url_prefix LDAP_P(( const char *url, int *enclosedp )); static void hex_unescape LDAP_P(( char *s )); static int unhex( char c ); int -ldap_is_ldap_url( char *url ) +ldap_is_ldap_url( LDAP_CONST char *url ) { int enclosed; - return( url != NULL && skip_url_prefix( &url, &enclosed )); + return( url != NULL && skip_url_prefix( url, &enclosed ) != NULL ); } -static int -skip_url_prefix( char **urlp, int *enclosedp ) +static const char* +skip_url_prefix( const char *url, int *enclosedp ) { /* * return non-zero if this looks like a LDAP URL; zero if not * if non-zero returned, *urlp will be moved past "ldap://" part of URL */ - if ( *urlp == NULL ) { - return( 0 ); + char* p; + + if ( url == NULL ) { + return( NULL ); } + p = (char *) url; + /* skip leading '<' (if any) */ - if ( **urlp == '<' ) { + if ( *p == '<' ) { *enclosedp = 1; - ++*urlp; + ++p; } else { *enclosedp = 0; } /* skip leading "URL:" (if any) */ - if ( strlen( *urlp ) >= LDAP_URL_URLCOLON_LEN && strncasecmp( - *urlp, LDAP_URL_URLCOLON, LDAP_URL_URLCOLON_LEN ) == 0 ) { - *urlp += LDAP_URL_URLCOLON_LEN; + if ( strlen( p ) >= LDAP_URL_URLCOLON_LEN + && strncasecmp( p, LDAP_URL_URLCOLON, LDAP_URL_URLCOLON_LEN ) == 0 ) + { + p += LDAP_URL_URLCOLON_LEN; } /* check for missing "ldap://" prefix */ - if ( strlen( *urlp ) < LDAP_URL_PREFIX_LEN || - strncasecmp( *urlp, LDAP_URL_PREFIX, LDAP_URL_PREFIX_LEN ) != 0 ) { - return( 0 ); + if ( strlen( p ) < LDAP_URL_PREFIX_LEN || + strncasecmp( p, LDAP_URL_PREFIX, LDAP_URL_PREFIX_LEN ) != 0 ) { + return( NULL ); } /* skip over "ldap://" prefix and return success */ - *urlp += LDAP_URL_PREFIX_LEN; - return( 1 ); + p += LDAP_URL_PREFIX_LEN; + return( p ); } int -ldap_url_parse( char *url, LDAPURLDesc **ludpp ) +ldap_url_parse( LDAP_CONST char *url_in, LDAPURLDesc **ludpp ) { /* * Pick apart the pieces of an LDAP URL. @@ -97,27 +102,33 @@ ldap_url_parse( char *url, LDAPURLDesc **ludpp ) LDAPURLDesc *ludp; char *attrs, *p, *q; int enclosed, i, nattrs; + const char *url_tmp; + char *url; Debug( LDAP_DEBUG_TRACE, "ldap_url_parse(%s)\n", url, 0, 0 ); *ludpp = NULL; /* pessimistic */ - if ( !skip_url_prefix( &url, &enclosed )) { + url_tmp = skip_url_prefix( url_in, &enclosed ); + + if ( url_tmp == NULL ) { return( LDAP_URL_ERR_NOTLDAP ); } - /* allocate return struct */ - if (( ludp = (LDAPURLDesc *)calloc( 1, sizeof( LDAPURLDesc ))) - == NULLLDAPURLDESC ) { + /* make working copy of the remainder of the URL */ + if (( url = strdup( url_tmp )) == NULL ) { return( LDAP_URL_ERR_MEM ); } - /* make working copy of the remainder of the URL */ - if (( url = strdup( url )) == NULL ) { - ldap_free_urldesc( ludp ); + /* allocate return struct */ + if (( ludp = (LDAPURLDesc *)calloc( 1, sizeof( LDAPURLDesc ))) + == NULLLDAPURLDESC ) + { + free( url ); return( LDAP_URL_ERR_MEM ); } + if ( enclosed && *((p = url + strlen( url ) - 1)) == '>' ) { *p = '\0'; } @@ -239,7 +250,7 @@ ldap_free_urldesc( LDAPURLDesc *ludp ) int -ldap_url_search( LDAP *ld, char *url, int attrsonly ) +ldap_url_search( LDAP *ld, LDAP_CONST char *url, int attrsonly ) { int err; LDAPURLDesc *ludp; @@ -254,7 +265,7 @@ ldap_url_search( LDAP *ld, char *url, int attrsonly ) } if (( ber = ldap_build_search_req( ld, ludp->lud_dn, ludp->lud_scope, - ludp->lud_filter, ludp->lud_attrs, attrsonly )) == NULLBER ) { + ludp->lud_filter, ludp->lud_attrs, attrsonly, NULL, NULL )) == NULLBER ) { return( -1 ); } @@ -274,7 +285,7 @@ ldap_url_search( LDAP *ld, char *url, int attrsonly ) if ( ludp->lud_port == 0 ) { srv->lsrv_port = openldap_ldap_global_options.ldo_defport; } else { - srv->lsrv_port = ludp->lud_port; + srv->lsrv_port = ludp->lud_port; } } #else /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */ @@ -302,7 +313,7 @@ ldap_url_search( LDAP *ld, char *url, int attrsonly ) int -ldap_url_search_st( LDAP *ld, char *url, int attrsonly, +ldap_url_search_st( LDAP *ld, LDAP_CONST char *url, int attrsonly, struct timeval *timeout, LDAPMessage **res ) { int msgid; @@ -326,7 +337,8 @@ ldap_url_search_st( LDAP *ld, char *url, int attrsonly, int -ldap_url_search_s( LDAP *ld, char *url, int attrsonly, LDAPMessage **res ) +ldap_url_search_s( + LDAP *ld, LDAP_CONST char *url, int attrsonly, LDAPMessage **res ) { int msgid; diff --git a/libraries/libldap_r/libldap_r.dsp b/libraries/libldap_r/libldap_r.dsp index beb07505d6..c6028d5972 100644 --- a/libraries/libldap_r/libldap_r.dsp +++ b/libraries/libldap_r/libldap_r.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Static Library" 0x0104 -CFG=libldap_r - Win32 Debug +CFG=libldap_r - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,16 @@ CFG=libldap_r - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "libldap_r.mak" CFG="libldap_r - Win32 Debug" +!MESSAGE NMAKE /f "libldap_r.mak" CFG="libldap_r - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "libldap_r - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "libldap_r - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "libldap_r - Win32 Single Debug" (based on\ + "Win32 (x86) Static Library") +!MESSAGE "libldap_r - Win32 Single Release" (based on\ + "Win32 (x86) Static Library") !MESSAGE # Begin Project @@ -36,10 +40,10 @@ CPP=cl.exe # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\Release" -# PROP Intermediate_Dir "Release" +# PROP Intermediate_Dir "Release\libldap_r" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "LDAP_R_COMPILE" /D "WIN32" /D "_WINDOWS" /YX /FD /c BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo @@ -57,10 +61,10 @@ LIB32=link.exe -lib # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "..\Debug" -# PROP Intermediate_Dir "Debug" +# PROP Intermediate_Dir "Debug\libldap_r" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\..\include" /D "_DEBUG" /D "LDAP_R_COMPILE" /D "WIN32" /D "_WINDOWS" /YX /FD /c BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo @@ -68,12 +72,56 @@ LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\Debug\oldap_r.lib" +!ELSEIF "$(CFG)" == "libldap_r - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "libldap_" +# PROP BASE Intermediate_Dir "libldap_" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\libldap_r" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\..\include" /D "_DEBUG" /D "LDAP_R_COMPILE" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\..\include" /D "_DEBUG" /D "LDAP_R_COMPILE" /D "WIN32" /D "_WINDOWS" /YX /FD /c +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\Debug\oldap_r.lib" +# ADD LIB32 /nologo /out:"..\SDebug\oldap_r.lib" + +!ELSEIF "$(CFG)" == "libldap_r - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "libldap0" +# PROP BASE Intermediate_Dir "libldap0" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\libldap_r" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "LDAP_R_COMPILE" /D "WIN32" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "LDAP_R_COMPILE" /D "WIN32" /D "_WINDOWS" /YX /FD /c +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\Release\oldap_r.lib" +# ADD LIB32 /nologo /out:"..\SRelease\oldap_r.lib" + !ENDIF # Begin Target # Name "libldap_r - Win32 Release" # Name "libldap_r - Win32 Debug" +# Name "libldap_r - Win32 Single Debug" +# Name "libldap_r - Win32 Single Release" # Begin Source File SOURCE=..\libldap\abandon.c @@ -172,18 +220,6 @@ SOURCE=..\libldap\kbind.c # End Source File # Begin Source File -SOURCE="..\liblber\lber-int.h" -# End Source File -# Begin Source File - -SOURCE=..\..\include\lber.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\lber_pvt.h -# End Source File -# Begin Source File - SOURCE="..\libldap\ldap-int.h" # End Source File # Begin Source File @@ -208,7 +244,7 @@ SOURCE=..\..\include\ldap_pvt.h # End Source File # Begin Source File -SOURCE=..\..\include\ldapconfig.h +SOURCE=..\..\include\ldap_pvt_thread.h # End Source File # Begin Source File @@ -232,10 +268,6 @@ SOURCE="..\libldap\os-ip.c" # End Source File # Begin Source File -SOURCE=..\..\include\portable.h -# End Source File -# Begin Source File - SOURCE=..\libldap\print.c # End Source File # Begin Source File diff --git a/libraries/libldap_r/rdwr.c b/libraries/libldap_r/rdwr.c index 294fe8054f..60e2a420b6 100644 --- a/libraries/libldap_r/rdwr.c +++ b/libraries/libldap_r/rdwr.c @@ -27,6 +27,8 @@ int ldap_pvt_thread_rdwr_init( ldap_pvt_thread_rdwr_t *rw ) { + assert( rw != NULL ); + memset( rw, 0, sizeof(ldap_pvt_thread_rdwr_t) ); /* we should check return results */ @@ -41,6 +43,9 @@ ldap_pvt_thread_rdwr_init( ldap_pvt_thread_rdwr_t *rw ) int ldap_pvt_thread_rdwr_destroy( ldap_pvt_thread_rdwr_t *rw ) { + assert( rw != NULL ); + assert( rw->ltrw_valid == LDAP_PVT_THREAD_RDWR_VALID ); + if( rw->ltrw_valid != LDAP_PVT_THREAD_RDWR_VALID ) return LDAP_PVT_THREAD_EINVAL; @@ -71,6 +76,9 @@ ldap_pvt_thread_rdwr_destroy( ldap_pvt_thread_rdwr_t *rw ) int ldap_pvt_thread_rdwr_rlock( ldap_pvt_thread_rdwr_t *rw ) { + assert( rw != NULL ); + assert( rw->ltrw_valid == LDAP_PVT_THREAD_RDWR_VALID ); + if( rw->ltrw_valid != LDAP_PVT_THREAD_RDWR_VALID ) return LDAP_PVT_THREAD_EINVAL; @@ -98,6 +106,9 @@ int ldap_pvt_thread_rdwr_rlock( ldap_pvt_thread_rdwr_t *rw ) int ldap_pvt_thread_rdwr_rtrylock( ldap_pvt_thread_rdwr_t *rw ) { + assert( rw != NULL ); + assert( rw->ltrw_valid == LDAP_PVT_THREAD_RDWR_VALID ); + if( rw->ltrw_valid != LDAP_PVT_THREAD_RDWR_VALID ) return LDAP_PVT_THREAD_EINVAL; @@ -117,6 +128,9 @@ int ldap_pvt_thread_rdwr_rtrylock( ldap_pvt_thread_rdwr_t *rw ) int ldap_pvt_thread_rdwr_runlock( ldap_pvt_thread_rdwr_t *rw ) { + assert( rw != NULL ); + assert( rw->ltrw_valid == LDAP_PVT_THREAD_RDWR_VALID ); + if( rw->ltrw_valid != LDAP_PVT_THREAD_RDWR_VALID ) return LDAP_PVT_THREAD_EINVAL; @@ -135,6 +149,9 @@ int ldap_pvt_thread_rdwr_runlock( ldap_pvt_thread_rdwr_t *rw ) int ldap_pvt_thread_rdwr_wlock( ldap_pvt_thread_rdwr_t *rw ) { + assert( rw != NULL ); + assert( rw->ltrw_valid == LDAP_PVT_THREAD_RDWR_VALID ); + if( rw->ltrw_valid != LDAP_PVT_THREAD_RDWR_VALID ) return LDAP_PVT_THREAD_EINVAL; @@ -160,6 +177,9 @@ int ldap_pvt_thread_rdwr_wlock( ldap_pvt_thread_rdwr_t *rw ) int ldap_pvt_thread_rdwr_wtrylock( ldap_pvt_thread_rdwr_t *rw ) { + assert( rw != NULL ); + assert( rw->ltrw_valid == LDAP_PVT_THREAD_RDWR_VALID ); + if( rw->ltrw_valid != LDAP_PVT_THREAD_RDWR_VALID ) return LDAP_PVT_THREAD_EINVAL; @@ -179,6 +199,9 @@ int ldap_pvt_thread_rdwr_wtrylock( ldap_pvt_thread_rdwr_t *rw ) int ldap_pvt_thread_rdwr_wunlock( ldap_pvt_thread_rdwr_t *rw ) { + assert( rw != NULL ); + assert( rw->ltrw_valid == LDAP_PVT_THREAD_RDWR_VALID ); + if( rw->ltrw_valid != LDAP_PVT_THREAD_RDWR_VALID ) return LDAP_PVT_THREAD_EINVAL; @@ -212,16 +235,25 @@ int ldap_pvt_thread_rdwr_wunlock( ldap_pvt_thread_rdwr_t *rw ) int ldap_pvt_thread_rdwr_readers(ldap_pvt_thread_rdwr_t *rw) { + assert( rw != NULL ); + assert( rw->ltrw_valid == LDAP_PVT_THREAD_RDWR_VALID ); + return( rw->ltrw_r_active ); } int ldap_pvt_thread_rdwr_writers(ldap_pvt_thread_rdwr_t *rw) { + assert( rw != NULL ); + assert( rw->ltrw_valid == LDAP_PVT_THREAD_RDWR_VALID ); + return( rw->ltrw_w_active ); } int ldap_pvt_thread_rdwr_active(ldap_pvt_thread_rdwr_t *rw) { + assert( rw != NULL ); + assert( rw->ltrw_valid == LDAP_PVT_THREAD_RDWR_VALID ); + return(ldap_pvt_thread_rdwr_readers(rw) + ldap_pvt_thread_rdwr_writers(rw)); } diff --git a/libraries/libldap_r/thr_nt.c b/libraries/libldap_r/thr_nt.c index 1a884eba07..a9b72b2e77 100644 --- a/libraries/libldap_r/thr_nt.c +++ b/libraries/libldap_r/thr_nt.c @@ -14,7 +14,6 @@ #include "ldap_pvt_thread.h" #if defined( HAVE_NT_THREADS ) -#include int ldap_pvt_thread_initialize( void ) @@ -49,7 +48,7 @@ int ldap_pvt_thread_join( ldap_pvt_thread_t thread, void **thread_return ) { DWORD status; - status = WaitForSingleObject( thread, INFINITE ); + status = WaitForSingleObject( (HANDLE) thread, INFINITE ); if (status == WAIT_FAILED) { return -1; } diff --git a/libraries/libldbm/ldbm.c b/libraries/libldbm/ldbm.c index 0ce41481c8..2be3d810e3 100644 --- a/libraries/libldbm/ldbm.c +++ b/libraries/libldbm/ldbm.c @@ -80,26 +80,26 @@ int ldbm_shutdown( void ) #else -#ifndef WIN32 +void * +ldbm_malloc( size_t size ) +{ + return( calloc( 1, size )); +} + #ifdef HAVE_SYSLOG +#ifdef HAVE_SYSLOG_H #include "syslog.h" #else /* quick hack */ #define LOG_INFO 1 extern int syslog(int, char*, ...); #endif -#endif /* WIN32 */ - -void * -ldbm_malloc( size_t size ) -{ - return( calloc( 1, size )); -} +#endif /* HAVE_SYSLOG */ static void ldbm_db_errcall( const char *prefix, char *message ) { -#ifndef WIN32 +#ifdef HAVE_SYSLOG syslog( LOG_INFO, "ldbm_db_errcall(): %s %s", prefix, message ); #endif } diff --git a/libraries/libldbm/libldbm.dsp b/libraries/libldbm/libldbm.dsp index e44dc46016..1f4407621f 100644 --- a/libraries/libldbm/libldbm.dsp +++ b/libraries/libldbm/libldbm.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Static Library" 0x0104 -CFG=libldbm - Win32 Debug +CFG=libldbm - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,15 @@ CFG=libldbm - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "libldbm.mak" CFG="libldbm - Win32 Debug" +!MESSAGE NMAKE /f "libldbm.mak" CFG="libldbm - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "libldbm - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "libldbm - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "libldbm - Win32 Single Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "libldbm - Win32 Single Release" (based on\ + "Win32 (x86) Static Library") !MESSAGE # Begin Project @@ -36,7 +39,7 @@ CPP=cl.exe # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "..\Release" -# PROP Intermediate_Dir "Release" +# PROP Intermediate_Dir "Release\libldbm" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c @@ -57,7 +60,7 @@ LIB32=link.exe -lib # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "..\Debug" -# PROP Intermediate_Dir "Debug" +# PROP Intermediate_Dir "Debug\libldbm" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c @@ -68,15 +71,63 @@ LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo /out:"..\Debug\oldbm32.lib" +!ELSEIF "$(CFG)" == "libldbm - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "libldbm_" +# PROP BASE Intermediate_Dir "libldbm_" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\libldbm" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\Debug\oldbm32.lib" +# ADD LIB32 /nologo /out:"..\Debug\oldbm32.lib" + +!ELSEIF "$(CFG)" == "libldbm - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "libldbm0" +# PROP BASE Intermediate_Dir "libldbm0" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\libldbm" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"..\Release\oldbm32.lib" +# ADD LIB32 /nologo /out:"..\Release\oldbm32.lib" + !ENDIF # Begin Target # Name "libldbm - Win32 Release" # Name "libldbm - Win32 Debug" +# Name "libldbm - Win32 Single Debug" +# Name "libldbm - Win32 Single Release" # Begin Source File SOURCE=.\ldbm.c # End Source File +# Begin Source File + +SOURCE=..\..\include\ldbm.h +# End Source File # End Target # End Project diff --git a/libraries/libldif/libldif.dsp b/libraries/libldif/libldif.dsp index c27e653dea..62325148f4 100644 --- a/libraries/libldif/libldif.dsp +++ b/libraries/libldif/libldif.dsp @@ -80,8 +80,8 @@ LIB32=link.exe -lib # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "libldif_" -# PROP Intermediate_Dir "libldif_" +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\libldif" # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c @@ -101,8 +101,8 @@ LIB32=link.exe -lib # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "libldif0" -# PROP Intermediate_Dir "libldif0" +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\libldif" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c @@ -123,35 +123,11 @@ LIB32=link.exe -lib # Name "libldif - Win32 Single Release" # Begin Source File -SOURCE=..\..\include\lber.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\lber_pvt.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\ldap_cdefs.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\ldap_features.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\ldap_log.h -# End Source File -# Begin Source File - SOURCE=..\..\include\ldif.h # End Source File # Begin Source File SOURCE=.\line64.c # End Source File -# Begin Source File - -SOURCE=..\..\include\portable.h -# End Source File # End Target # End Project diff --git a/libraries/libldif/line64.c b/libraries/libldif/line64.c index 000cf9439e..65ec9a750e 100644 --- a/libraries/libldif/line64.c +++ b/libraries/libldif/line64.c @@ -51,7 +51,7 @@ static const unsigned char b642nib[0x80] = { int ldif_parse_line( - char *line, + LDAP_CONST char *line, char **type, char **value, int *vlen @@ -70,7 +70,7 @@ ldif_parse_line( for ( s = line; *s && *s != ':'; s++ ) ; /* NULL */ if ( *s == '\0' ) { - lber_pvt_log_printf( LDAP_DEBUG_PARSE, ldif_debug, + ber_pvt_log_printf( LDAP_DEBUG_PARSE, ldif_debug, "ldif_parse_line missing ':'\n"); return( -1 ); } @@ -98,7 +98,7 @@ ldif_parse_line( /* if no value is present, error out */ if ( *s == '\0' ) { - lber_pvt_log_printf( LDAP_DEBUG_PARSE, ldif_debug, + ber_pvt_log_printf( LDAP_DEBUG_PARSE, ldif_debug, "ldif_parse_line missing value\n"); return( -1 ); } @@ -118,7 +118,7 @@ ldif_parse_line( for ( i = 0; i < 4; i++ ) { if ( p[i] != '=' && (p[i] & 0x80 || b642nib[ p[i] & 0x7f ] > 0x3f) ) { - lber_pvt_log_printf( LDAP_DEBUG_ANY, ldif_debug, + ber_pvt_log_printf( LDAP_DEBUG_ANY, ldif_debug, "ldif_parse_line: invalid base 64 encoding char (%c) 0x%x\n", p[i], p[i] ); return( -1 ); @@ -198,7 +198,11 @@ ldif_getline( char **next ) } void -ldif_put_type_and_value( char **out, char *t, char *val, int vlen ) +ldif_put_type_and_value( + char **out, + LDAP_CONST char *t, + LDAP_CONST char *val, + int vlen ) { unsigned char *byte, *p, *stop; unsigned char buf[3]; @@ -294,7 +298,7 @@ ldif_put_type_and_value( char **out, char *t, char *val, int vlen ) char * -ldif_type_and_value( char *type, char *val, int vlen ) +ldif_type_and_value( LDAP_CONST char *type, LDAP_CONST char *val, int vlen ) /* * return malloc'd, zero-terminated LDIF line */ @@ -306,7 +310,7 @@ ldif_type_and_value( char *type, char *val, int vlen ) if (( buf = (char *) malloc( LDIF_SIZE_NEEDED( tlen, vlen ) + 1 )) == NULL ) { - lber_pvt_log_printf( LDAP_DEBUG_ANY, ldif_debug, + ber_pvt_log_printf( LDAP_DEBUG_ANY, ldif_debug, "ldif_type_and_value: malloc failed!" ); return NULL; } diff --git a/libraries/liblutil/liblutil.dsp b/libraries/liblutil/liblutil.dsp index 0dd1581038..e0e7ecf478 100644 --- a/libraries/liblutil/liblutil.dsp +++ b/libraries/liblutil/liblutil.dsp @@ -81,8 +81,8 @@ LIB32=link.exe -lib # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "liblutil" -# PROP Intermediate_Dir "liblutil" +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "SDebug\liblutil" # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c @@ -102,8 +102,8 @@ LIB32=link.exe -lib # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "libluti0" -# PROP Intermediate_Dir "libluti0" +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "SRelease\liblutil" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c @@ -144,10 +144,6 @@ SOURCE=..\..\include\ldap_cdefs.h # End Source File # Begin Source File -SOURCE=..\..\include\ldap_features.h -# End Source File -# Begin Source File - SOURCE=.\lockf.c # End Source File # Begin Source File diff --git a/servers/ldapd/main.c b/servers/ldapd/main.c index 3f0e3d3580..ca74d44b20 100644 --- a/servers/ldapd/main.c +++ b/servers/ldapd/main.c @@ -515,10 +515,10 @@ do_queries( conn_init(); } - lber_pvt_sb_init( &sb ); - lber_pvt_sb_set_desc( &sb, clientsock ); - lber_pvt_sb_set_io( &sb, (udp) ? &lber_pvt_sb_io_udp : - &lber_pvt_sb_io_tcp, NULL ); + ber_pvt_sb_init( &sb ); + ber_pvt_sb_set_desc( &sb, clientsock ); + ber_pvt_sb_set_io( &sb, (udp) ? &ber_pvt_sb_io_udp : + &ber_pvt_sb_io_tcp, NULL ); timeout.tv_sec = idletime; timeout.tv_usec = 0; for ( ;; ) { @@ -547,7 +547,7 @@ do_queries( * already waiting for us on the client sock. */ - if ( ! lber_pvt_sb_data_ready( &sb ) ) { + if ( ! ber_pvt_sb_data_ready( &sb ) ) { if ( (rc = select( dtblsize, &readfds, 0, 0, udp ? 0 : &timeout )) < 1 ) { #ifdef LDAP_DEBUG @@ -573,7 +573,7 @@ do_queries( } } - if ( lber_pvt_sb_data_ready( &sb ) || + if ( ber_pvt_sb_data_ready( &sb ) || FD_ISSET( clientsock, &readfds ) ) { client_request( &sb, conns, udp ); } else { diff --git a/servers/ldapd/request.c b/servers/ldapd/request.c index 222500b6f9..00d0854008 100644 --- a/servers/ldapd/request.c +++ b/servers/ldapd/request.c @@ -88,7 +88,7 @@ client_request( #ifdef LDAP_CONNECTIONLESS if ( udp && dosyslog ) { - sai = (struct sockaddr_in *)lber_pvt_sb_udp_get_src( &clientsb ); + sai = (struct sockaddr_in *)ber_pvt_sb_udp_get_src( &clientsb ); syslog( LOG_INFO, "UDP request from unknown (%s)", inet_ntoa( sai->sin_addr ) ); } @@ -192,7 +192,7 @@ client_request( free( ber.ber_buf ); return; } - sai = (struct sockaddr_in *) lber_pvt_sb_udp_get_src( &clientsb ); + sai = (struct sockaddr_in *) ber_pvt_sb_udp_get_src( &clientsb ); if ( get_cldap_msg( msgid, tag, (struct sockaddr *)sai ) != NULL ) { diff --git a/servers/ldapd/result.c b/servers/ldapd/result.c index 777aec2e68..3754251fa8 100644 --- a/servers/ldapd/result.c +++ b/servers/ldapd/result.c @@ -280,7 +280,7 @@ send_ldap_msgresult( { #ifdef LDAP_CONNECTIONLESS if ( m->m_cldap ) { - lber_pvt_sb_udp_set_dst( &sb, &m->m_clientaddr ); + ber_pvt_sb_udp_set_dst( &sb, &m->m_clientaddr ); Debug( LDAP_DEBUG_TRACE, "UDP response to %s port %d\n", inet_ntoa(((struct sockaddr_in *) @@ -305,7 +305,7 @@ send_ldap_result( int rc; #ifdef LDAP_CONNECTIONLESS int cldap; - cldap = ( sb->sb_io == &lber_pvt_sb_io_udp ); + cldap = ( sb->sb_io == &ber_pvt_sb_io_udp ); #endif Debug( LDAP_DEBUG_TRACE, "send_ldap_result\n", 0, 0, 0 ); diff --git a/servers/ldapd/search.c b/servers/ldapd/search.c index 33afd35713..840772eb64 100644 --- a/servers/ldapd/search.c +++ b/servers/ldapd/search.c @@ -700,7 +700,7 @@ search_result( LDAP_OPERATIONS_ERROR, NULL, "ber_printf" ); return; } - lber_pvt_sb_udp_set_dst( sb, &m->m_clientaddr ); + ber_pvt_sb_udp_set_dst( sb, &m->m_clientaddr ); if ( ber_flush( sb, ber, 1 ) != 0 ) { send_ldap_msgresult( sb, SEARCHRESTAG, m, diff --git a/servers/slapd/back-ldbm/backldbm.dsp b/servers/slapd/back-ldbm/backldbm.dsp index a3ca7e171f..c9d2a5faf7 100644 --- a/servers/slapd/back-ldbm/backldbm.dsp +++ b/servers/slapd/back-ldbm/backldbm.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Static Library" 0x0104 -CFG=backldbm - Win32 Debug +CFG=backldbm - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,16 @@ CFG=backldbm - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "backldbm.mak" CFG="backldbm - Win32 Debug" +!MESSAGE NMAKE /f "backldbm.mak" CFG="backldbm - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "backldbm - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "backldbm - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "backldbm - Win32 Single Debug" (based on\ + "Win32 (x86) Static Library") +!MESSAGE "backldbm - Win32 Single Release" (based on\ + "Win32 (x86) Static Library") !MESSAGE # Begin Project @@ -35,8 +39,8 @@ CPP=cl.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "..\Release\backldbm" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "..\\" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c @@ -56,8 +60,8 @@ LIB32=link.exe -lib # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" +# PROP Output_Dir "..\Debug" +# PROP Intermediate_Dir "..\Debug\backldbm" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\\" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c @@ -68,12 +72,56 @@ LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo +!ELSEIF "$(CFG)" == "backldbm - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "backldbm" +# PROP BASE Intermediate_Dir "backldbm" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "..\SDebug\backldbm" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\\" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c +# ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\\" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "backldbm - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "backldb0" +# PROP BASE Intermediate_Dir "backldb0" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "..\SRelease\backldbm" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\\" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\\" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + !ENDIF # Begin Target # Name "backldbm - Win32 Release" # Name "backldbm - Win32 Debug" +# Name "backldbm - Win32 Single Debug" +# Name "backldbm - Win32 Single Release" # Begin Source File SOURCE=.\abandon.c diff --git a/servers/slapd/bind.c b/servers/slapd/bind.c index 223401aa1b..7784711182 100644 --- a/servers/slapd/bind.c +++ b/servers/slapd/bind.c @@ -57,25 +57,27 @@ do_bind( */ { - BerElement tber; + BerElement *tber; unsigned long tlen, ttag; - tber = *op->o_ber; - ttag = ber_skip_tag( &tber, &tlen ); - if ( ber_peek_tag( &tber, &tlen ) == LBER_SEQUENCE ) { - Debug( LDAP_DEBUG_ANY, "version 3.0 detected\n", 0, 0, 0 ); + tber = ber_dup( op->o_ber ); + ttag = ber_skip_tag( tber, &tlen ); + if ( ber_peek_tag( tber, &tlen ) == LBER_SEQUENCE ) { + Debug( LDAP_DEBUG_ANY, "bind: version 3.0 detected\n", 0, 0, 0 ); conn->c_version = 30; rc = ber_scanf(ber, "{{iato}}", &version, &cdn, &method, &cred); } else { rc = ber_scanf( ber, "{iato}", &version, &cdn, &method, &cred ); } + + ber_free( tber, 1 ); } #else rc = ber_scanf( ber, "{iato}", &version, &cdn, &method, &cred ); #endif if ( rc == LBER_ERROR ) { - Debug( LDAP_DEBUG_ANY, "ber_scanf failed\n", 0, 0, 0 ); + Debug( LDAP_DEBUG_ANY, "bind: ber_scanf failed\n", 0, 0, 0 ); send_ldap_result( conn, op, LDAP_PROTOCOL_ERROR, NULL, "decoding error" ); return; diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c index b7ed2d7d62..fd75a314f6 100644 --- a/servers/slapd/connection.c +++ b/servers/slapd/connection.c @@ -10,6 +10,9 @@ #include "slap.h" +/* we need LBER internals */ +#include "../../libraries/liblber/lber-int.h" + /* protected by connections_mutex */ static ldap_pvt_thread_mutex_t connections_mutex; static Connection *connections = NULL; @@ -133,7 +136,8 @@ int connections_shutdown(void) } ldap_pvt_thread_mutex_unlock( &connections_mutex ); - return 0; + + return 0; } static Connection* connection_get( int s ) @@ -149,7 +153,7 @@ static Connection* connection_get( int s ) #ifndef HAVE_WINSOCK assert( connections[s].c_struct_state == SLAP_C_USED ); assert( connections[s].c_conn_state != SLAP_C_INVALID ); - assert( connections[s].c_sb.sb_sd != -1 ); + assert( !ber_pvt_sb_in_use( connections[i].c_sb ) ); c = &connections[s]; #else @@ -159,21 +163,21 @@ static Connection* connection_get( int s ) for(i=0; ic_ops = NULL; c->c_pending_ops = NULL; - lber_pvt_sb_init( &c->c_sb ); + c->c_sb = ber_sockbuf_alloc( ); /* should check status of thread calls */ ldap_pvt_thread_mutex_init( &c->c_mutex ); @@ -293,10 +297,10 @@ long connection_init( c->c_starttime = slap_get_time(); - lber_pvt_sb_set_desc( &c->c_sb, s ); - lber_pvt_sb_set_io( &c->c_sb, &lber_pvt_sb_io_tcp, NULL ); + ber_pvt_sb_set_desc( c->c_sb, s ); + ber_pvt_sb_set_io( c->c_sb, &ber_pvt_sb_io_tcp, NULL ); - if( lber_pvt_sb_set_nonblock( &c->c_sb, 1 ) < 0 ) { + if( ber_pvt_sb_set_nonblock( c->c_sb, 1 ) < 0 ) { Debug( LDAP_DEBUG_ANY, "connection_init(%d, %s, %s): set nonblocking failed\n", s, c->c_client_name, c->c_client_addr); @@ -348,18 +352,18 @@ connection_destroy( Connection *c ) c->c_client_addr = NULL; } - if ( lber_pvt_sb_in_use(&c->c_sb) ) { - int sd = lber_pvt_sb_get_desc(&c->c_sb); + if ( ber_pvt_sb_in_use(c->c_sb) ) { + int sd = ber_pvt_sb_get_desc(c->c_sb); slapd_remove( sd ); - lber_pvt_sb_close( &c->c_sb ); + ber_pvt_sb_close( c->c_sb ); Statslog( LDAP_DEBUG_STATS, "conn=%d fd=%d closed.\n", c->c_connid, sd, 0, 0, 0 ); } - lber_pvt_sb_destroy( &c->c_sb ); + ber_pvt_sb_destroy( c->c_sb ); ldap_pvt_thread_mutex_unlock( &connections_mutex ); } @@ -389,13 +393,13 @@ void connection_closing( Connection *c ) Debug( LDAP_DEBUG_TRACE, "connection_closing: readying conn=%ld sd=%d for close.\n", - c->c_connid, c->c_sb.sb_sd, 0 ); + c->c_connid, ber_pvt_sb_get_desc( c->c_sb ), 0 ); /* update state to closing */ c->c_conn_state = SLAP_C_CLOSING; /* don't listen on this port anymore */ - slapd_clr_read( c->c_sb.sb_sd, 1 ); + slapd_clr_read( ber_pvt_sb_get_desc( c->c_sb ), 1 ); /* shutdown I/O -- not yet implemented */ @@ -415,7 +419,7 @@ void connection_closing( Connection *c ) } /* wake write blocked operations */ - slapd_clr_write( c->c_sb.sb_sd, 1 ); + slapd_clr_write( ber_pvt_sb_get_desc(c->c_sb), 1 ); ldap_pvt_thread_cond_signal( &c->c_write_cv ); } } @@ -430,13 +434,13 @@ static void connection_close( Connection *c ) if( c->c_ops != NULL ) { Debug( LDAP_DEBUG_TRACE, "connection_close: deferring conn=%ld sd=%d.\n", - c->c_connid, c->c_sb.sb_sd, 0 ); + c->c_connid, ber_pvt_sb_get_desc( c->c_sb ), 0 ); return; } Debug( LDAP_DEBUG_TRACE, "connection_close: conn=%ld sd=%d.\n", - c->c_connid, c->c_sb.sb_sd, 0 ); + c->c_connid, ber_pvt_sb_get_desc( c->c_sb ), 0 ); connection_destroy( c ); } @@ -627,7 +631,7 @@ connection_operation( void *arg_v ) if( conn->c_conn_state == SLAP_C_CLOSING ) { Debug( LDAP_DEBUG_TRACE, "connection_operation: attempting closing conn=%ld sd=%d.\n", - conn->c_connid, conn->c_sb.sb_sd, 0 ); + conn->c_connid, ber_pvt_sb_get_desc( conn->c_sb ), 0 ); connection_close( conn ); } @@ -680,7 +684,7 @@ int connection_read(int s) #define CONNECTION_INPUT_LOOP 1 #ifdef DATA_READY_LOOP - while(!rc && lber_pvt_sb_data_ready(&c->c_sb)) + while(!rc && ber_pvt_sb_data_ready(&c->c_sb)) #elif CONNECTION_INPUT_LOOP while(!rc) #endif @@ -719,14 +723,14 @@ connection_input( } errno = 0; - if ( (tag = ber_get_next( &conn->c_sb, &len, conn->c_currentber )) + if ( (tag = ber_get_next( conn->c_sb, &len, conn->c_currentber )) != LDAP_TAG_MESSAGE ) { int err = errno; Debug( LDAP_DEBUG_TRACE, "ber_get_next on fd %d failed errno %d (%s)\n", - lber_pvt_sb_get_desc(&conn->c_sb), err, + ber_pvt_sb_get_desc( conn->c_sb ), err, err > -1 && err < sys_nerr ? sys_errlist[err] : "unknown" ); Debug( LDAP_DEBUG_TRACE, "\t*** got %ld of %lu so far\n", diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c index 6bcc98e430..bb182993f1 100644 --- a/servers/slapd/daemon.c +++ b/servers/slapd/daemon.c @@ -79,8 +79,8 @@ static void slapd_add(int s) { } #endif - FD_SET( s, &slap_daemon.sd_actives ); - FD_SET( s, &slap_daemon.sd_readers ); + FD_SET( (unsigned) s, &slap_daemon.sd_actives ); + FD_SET( (unsigned) s, &slap_daemon.sd_readers ); Debug( LDAP_DEBUG_CONNS, "daemon: added %d%s%s\n", s, FD_ISSET(s, &slap_daemon.sd_readers) ? "r" : "", @@ -101,9 +101,9 @@ void slapd_remove(int s) { FD_ISSET(s, &slap_daemon.sd_readers) ? "r" : "", FD_ISSET(s, &slap_daemon.sd_writers) ? "w" : "" ); - FD_CLR( s, &slap_daemon.sd_actives ); - FD_CLR( s, &slap_daemon.sd_readers ); - FD_CLR( s, &slap_daemon.sd_writers ); + FD_CLR( (unsigned) s, &slap_daemon.sd_actives ); + FD_CLR( (unsigned) s, &slap_daemon.sd_readers ); + FD_CLR( (unsigned) s, &slap_daemon.sd_writers ); ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex ); } @@ -111,8 +111,8 @@ void slapd_remove(int s) { void slapd_clr_write(int s, int wake) { ldap_pvt_thread_mutex_lock( &slap_daemon.sd_mutex ); - assert( FD_ISSET( s, &slap_daemon.sd_actives) ); - FD_CLR( s, &slap_daemon.sd_writers ); + assert( FD_ISSET( (unsigned) s, &slap_daemon.sd_actives) ); + FD_CLR( (unsigned) s, &slap_daemon.sd_writers ); ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex ); @@ -123,7 +123,7 @@ void slapd_set_write(int s, int wake) { ldap_pvt_thread_mutex_lock( &slap_daemon.sd_mutex ); assert( FD_ISSET( s, &slap_daemon.sd_actives) ); - FD_SET( s, &slap_daemon.sd_writers ); + FD_SET( (unsigned) s, &slap_daemon.sd_writers ); ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex ); @@ -134,7 +134,7 @@ void slapd_clr_read(int s, int wake) { ldap_pvt_thread_mutex_lock( &slap_daemon.sd_mutex ); assert( FD_ISSET( s, &slap_daemon.sd_actives) ); - FD_CLR( s, &slap_daemon.sd_readers ); + FD_CLR( (unsigned) s, &slap_daemon.sd_readers ); ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex ); @@ -145,7 +145,7 @@ void slapd_set_read(int s, int wake) { ldap_pvt_thread_mutex_lock( &slap_daemon.sd_mutex ); assert( FD_ISSET( s, &slap_daemon.sd_actives) ); - FD_SET( s, &slap_daemon.sd_readers ); + FD_SET( (unsigned) s, &slap_daemon.sd_readers ); ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex ); @@ -313,7 +313,7 @@ slapd_daemon_task( memcpy( &writefds, &slap_daemon.sd_writers, sizeof(fd_set) ); #endif - FD_SET( tcps, &readfds ); + FD_SET( (unsigned) tcps, &readfds ); #ifndef HAVE_WINSOCK nfds = slap_daemon.sd_nfds; @@ -513,7 +513,7 @@ slapd_daemon_task( slapd_clr_write( wd, 0 ); if ( connection_write( wd ) < 0 ) { - FD_CLR( wd, &readfds ); + FD_CLR( (unsigned) wd, &readfds ); slapd_close( wd ); } } diff --git a/servers/slapd/libslapd.dsp b/servers/slapd/libslapd.dsp index 92cf59d677..3ae7691b8a 100644 --- a/servers/slapd/libslapd.dsp +++ b/servers/slapd/libslapd.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Static Library" 0x0104 -CFG=libslapd - Win32 Debug +CFG=libslapd - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,16 @@ CFG=libslapd - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "libslapd.mak" CFG="libslapd - Win32 Debug" +!MESSAGE NMAKE /f "libslapd.mak" CFG="libslapd - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "libslapd - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "libslapd - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "libslapd - Win32 Single Debug" (based on\ + "Win32 (x86) Static Library") +!MESSAGE "libslapd - Win32 Single Release" (based on\ + "Win32 (x86) Static Library") !MESSAGE # Begin Project @@ -35,8 +39,8 @@ CPP=cl.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "libslapd" -# PROP Intermediate_Dir "libslapd" +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release\libslapd" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c @@ -56,8 +60,8 @@ LIB32=link.exe -lib # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "libslap0" -# PROP Intermediate_Dir "libslap0" +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug\libslapd" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c @@ -68,12 +72,56 @@ LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo +!ELSEIF "$(CFG)" == "libslapd - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "libslap1" +# PROP BASE Intermediate_Dir "libslap1" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "SDebug" +# PROP Intermediate_Dir "SDebug\libslapd" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "libslapd - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "libslap2" +# PROP BASE Intermediate_Dir "libslap2" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "SRelease" +# PROP Intermediate_Dir "SRelease\libslapd" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + !ENDIF # Begin Target # Name "libslapd - Win32 Release" # Name "libslapd - Win32 Debug" +# Name "libslapd - Win32 Single Debug" +# Name "libslapd - Win32 Single Release" # Begin Source File SOURCE=.\abandon.c @@ -188,6 +236,10 @@ SOURCE=.\phonetic.c # End Source File # Begin Source File +SOURCE=".\proto-slap.h" +# End Source File +# Begin Source File + SOURCE=.\repl.c # End Source File # Begin Source File @@ -208,6 +260,10 @@ SOURCE=.\search.c # End Source File # Begin Source File +SOURCE=.\slap.h +# End Source File +# Begin Source File + SOURCE=.\str2filter.c # End Source File # Begin Source File diff --git a/servers/slapd/main.c b/servers/slapd/main.c index c58ffdaf19..085e7184fa 100644 --- a/servers/slapd/main.c +++ b/servers/slapd/main.c @@ -19,15 +19,15 @@ static RETSIGTYPE wait4child( int sig ); #endif -#ifdef WIN32 -const char Versionstr[] = "OpenLDAP slapd 1.2 for Windows NT"; -#endif - /* * when more than one slapd is running on one machine, each one might have * it's own LOCAL for syslogging and must have its own pid/args files */ +#ifndef HAVE_MKVERSION +const char Versionstr[] = "OpenLDAP Standalone LDAP Server (slapd)"; +#endif + #ifdef LOG_LOCAL4 #define DEFAULT_SYSLOG_USER LOG_LOCAL4 @@ -87,7 +87,9 @@ main( int argc, char **argv ) int inetd = 0; int rc; int tcps; +#ifdef LDAP_CONNECTIONLESS int udp; +#endif #ifdef LOG_LOCAL4 int syslogUser = DEFAULT_SYSLOG_USER; #endif @@ -109,7 +111,7 @@ main( int argc, char **argv ) g_argv = argv; while ( (i = getopt( argc, argv, - "d:f:ia:p:s:c" + "d:f:ia:p:s:" #ifdef LOG_LOCAL4 "l:" #endif @@ -118,6 +120,9 @@ main( int argc, char **argv ) #endif #if defined(HAVE_SETUID) && defined(HAVE_SETGID) "u:g:" +#endif +#ifdef LDAP_CONNECTIONLESS + "c" #endif )) != EOF ) { switch ( i ) { @@ -232,7 +237,7 @@ main( int argc, char **argv ) } } - lber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &slap_debug); + ber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &slap_debug); ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &slap_debug); ldif_debug = slap_debug; diff --git a/servers/slapd/nt_debug.c b/servers/slapd/nt_debug.c index a2aa623f95..e892ee0eb9 100644 --- a/servers/slapd/nt_debug.c +++ b/servers/slapd/nt_debug.c @@ -1,12 +1,16 @@ -#include -#include #include "portable.h" + +#include + +#include +#include + #include "slap.h" static FILE *log_file; -void Debug( int level, char *fmt, ... ) +void Debug( int level, const char *fmt, ... ) { char buffer[4096]; va_list vl; diff --git a/servers/slapd/result.c b/servers/slapd/result.c index 77f3b3a913..d73acf27cf 100644 --- a/servers/slapd/result.c +++ b/servers/slapd/result.c @@ -13,6 +13,9 @@ #include "slap.h" +/* we need LBER internals */ +#include "../../libraries/liblber/lber-int.h" + static void send_ldap_result2( Connection *conn, @@ -102,7 +105,7 @@ send_ldap_result2( return; } - if ( ber_flush( &conn->c_sb, ber, 1 ) == 0 ) { + if ( ber_flush( conn->c_sb, ber, 1 ) == 0 ) { break; } @@ -128,7 +131,7 @@ send_ldap_result2( /* wait for socket to be write-ready */ conn->c_writewaiter = 1; - slapd_set_write( conn->c_sb.sb_sd, 1 ); + slapd_set_write( ber_pvt_sb_get_desc( conn->c_sb ), 1 ); ldap_pvt_thread_cond_wait( &conn->c_write_cv, &conn->c_mutex ); conn->c_writewaiter = 0; @@ -159,7 +162,7 @@ send_ldap_result( { #ifdef LDAP_CONNECTIONLESS if ( op->o_cldap ) { - lber_pvt_sb_udp_set_dst( &conn->c_sb, &op->o_clientaddr ); + ber_pvt_sb_udp_set_dst( &conn->c_sb, &op->o_clientaddr ); Debug( LDAP_DEBUG_TRACE, "UDP response to %s port %d\n", inet_ntoa(((struct sockaddr_in *) &op->o_clientaddr)->sin_addr ), @@ -344,7 +347,7 @@ send_search_entry( return 0; } - if ( ber_flush( &conn->c_sb, ber, 1 ) == 0 ) { + if ( ber_flush( conn->c_sb, ber, 1 ) == 0 ) { break; } @@ -370,7 +373,7 @@ send_search_entry( /* wait for socket to be write-ready */ conn->c_writewaiter = 1; - slapd_set_write( conn->c_sb.sb_sd, 1 ); + slapd_set_write( ber_pvt_sb_get_desc( conn->c_sb ), 1 ); ldap_pvt_thread_cond_wait( &conn->c_write_cv, &conn->c_mutex ); conn->c_writewaiter = 0; diff --git a/servers/slapd/slap.h b/servers/slapd/slap.h index 70abfad3ce..5b231775b1 100644 --- a/servers/slapd/slap.h +++ b/servers/slapd/slap.h @@ -19,7 +19,7 @@ #include "ldap_log.h" -#include "../../libraries/liblber/lber-int.h" +#include "lber.h" #include "ldap.h" #include "ldap_pvt_thread.h" @@ -418,7 +418,7 @@ typedef struct slap_conn { int c_conn_state; /* connection state */ ldap_pvt_thread_mutex_t c_mutex; /* protect the connection */ - Sockbuf c_sb; /* ber connection stuff */ + Sockbuf *c_sb; /* ber connection stuff */ /* only can be changed by connect_init */ time_t c_starttime; /* when the connection was opened */ diff --git a/servers/slapd/slapd.dsp b/servers/slapd/slapd.dsp index ac8adb5621..3522102349 100644 --- a/servers/slapd/slapd.dsp +++ b/servers/slapd/slapd.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=slapd - Win32 Debug +CFG=slapd - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,16 @@ CFG=slapd - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "slapd.mak" CFG="slapd - Win32 Debug" +!MESSAGE NMAKE /f "slapd.mak" CFG="slapd - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "slapd - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "slapd - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "slapd - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "slapd - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -37,7 +41,7 @@ RSC=rc.exe # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" +# PROP Intermediate_Dir "Release\slapd" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -61,7 +65,7 @@ LINK32=link.exe # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" +# PROP Intermediate_Dir "Debug\slapd" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -73,7 +77,57 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 hs_regexd.lib libdbs.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 hs_regex.lib libdb.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "slapd - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "slapd___" +# PROP BASE Intermediate_Dir "slapd___" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir ".SDebug" +# PROP Intermediate_Dir "SDebug\slapd" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 hs_regexd.lib libdbs.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 hs_regex.lib libdb.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "slapd - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "slapd__0" +# PROP BASE Intermediate_Dir "slapd__0" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "SRelease" +# PROP Intermediate_Dir "SRelease\slapd" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 hs_regex.lib libdb.lib wsock32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 hs_regex.lib libdb.lib wsock32.lib /nologo /subsystem:console /machine:I386 !ENDIF @@ -81,29 +135,27 @@ LINK32=link.exe # Name "slapd - Win32 Release" # Name "slapd - Win32 Debug" -# Begin Group "Source" +# Name "slapd - Win32 Single Debug" +# Name "slapd - Win32 Single Release" +# Begin Source File -# PROP Default_Filter ".c" +SOURCE=.\daemon.c +# End Source File # Begin Source File SOURCE=.\main.c # End Source File # Begin Source File -SOURCE=.\result.c +SOURCE=".\proto-slap.h" # End Source File -# End Group -# Begin Group "Headers" - -# PROP Default_Filter ".h" # Begin Source File -SOURCE=".\proto-slap.h" +SOURCE=.\result.c # End Source File # Begin Source File SOURCE=.\slap.h # End Source File -# End Group # End Target # End Project diff --git a/servers/slapd/slapd.dsw b/servers/slapd/slapd.dsw index 423864c94d..e9c636c214 100644 --- a/servers/slapd/slapd.dsw +++ b/servers/slapd/slapd.dsw @@ -15,240 +15,6 @@ Package=<4> ############################################################################### -Project: "ldapdelete"=..\..\clients\tools\ldapdelete.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name liblber - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldap - End Project Dependency - Begin Project Dependency - Project_Dep_Name liblutil - End Project Dependency -}}} - -############################################################################### - -Project: "ldapmodify"=..\..\clients\tools\ldapmodify.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name liblber - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldap - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldif - End Project Dependency - Begin Project Dependency - Project_Dep_Name liblutil - End Project Dependency -}}} - -############################################################################### - -Project: "ldapmodrdn"=..\..\clients\tools\ldapmodrdn.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name liblber - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldap - End Project Dependency - Begin Project Dependency - Project_Dep_Name liblutil - End Project Dependency -}}} - -############################################################################### - -Project: "ldapsearch"=..\..\clients\tools\ldapsearch.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name liblber - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldap - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldif - End Project Dependency - Begin Project Dependency - Project_Dep_Name liblutil - End Project Dependency -}}} - -############################################################################### - -Project: "ldif2id2children"=.\tools\ldif2id2children.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name backldbm - End Project Dependency - Begin Project Dependency - Project_Dep_Name libavl - End Project Dependency - Begin Project Dependency - Project_Dep_Name liblber - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldap_r - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldbm - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldif - End Project Dependency - Begin Project Dependency - Project_Dep_Name liblutil - End Project Dependency - Begin Project Dependency - Project_Dep_Name libslapd - End Project Dependency -}}} - -############################################################################### - -Project: "ldif2id2entry"=.\tools\ldif2id2entry.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name backldbm - End Project Dependency - Begin Project Dependency - Project_Dep_Name libavl - End Project Dependency - Begin Project Dependency - Project_Dep_Name liblber - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldap_r - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldbm - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldif - End Project Dependency - Begin Project Dependency - Project_Dep_Name liblutil - End Project Dependency - Begin Project Dependency - Project_Dep_Name libslapd - End Project Dependency -}}} - -############################################################################### - -Project: "ldif2index"=.\tools\ldif2index.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name backldbm - End Project Dependency - Begin Project Dependency - Project_Dep_Name libavl - End Project Dependency - Begin Project Dependency - Project_Dep_Name liblber - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldap_r - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldbm - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldif - End Project Dependency - Begin Project Dependency - Project_Dep_Name liblutil - End Project Dependency - Begin Project Dependency - Project_Dep_Name libslapd - End Project Dependency -}}} - -############################################################################### - -Project: "ldif2ldbm"=.\tools\ldif2ldbm.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name backldbm - End Project Dependency - Begin Project Dependency - Project_Dep_Name libavl - End Project Dependency - Begin Project Dependency - Project_Dep_Name liblber - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldap_r - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldbm - End Project Dependency - Begin Project Dependency - Project_Dep_Name libldif - End Project Dependency - Begin Project Dependency - Project_Dep_Name liblutil - End Project Dependency - Begin Project Dependency - Project_Dep_Name libslapd - End Project Dependency -}}} - -############################################################################### - Project: "libavl"=..\..\libraries\libavl\libavl.dsp - Package Owner=<4> Package=<5> @@ -273,18 +39,6 @@ Package=<4> ############################################################################### -Project: "libldap"=..\..\libraries\libldap\libldap.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - Project: "libldap_r"=..\..\libraries\libldap_r\libldap_r.dsp - Package Owner=<4> Package=<5> @@ -293,6 +47,9 @@ Package=<5> Package=<4> {{{ + Begin Project Dependency + Project_Dep_Name liblber + End Project Dependency }}} ############################################################################### diff --git a/servers/slapd/tools/ldbmcat.dsp b/servers/slapd/tools/ldbmcat.dsp index 0007dc029b..f51482d398 100644 --- a/servers/slapd/tools/ldbmcat.dsp +++ b/servers/slapd/tools/ldbmcat.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=ldbmcat - Win32 Debug +CFG=ldbmcat - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,16 @@ CFG=ldbmcat - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "ldbmcat.mak" CFG="ldbmcat - Win32 Debug" +!MESSAGE NMAKE /f "ldbmcat.mak" CFG="ldbmcat - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ldbmcat - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ldbmcat - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "ldbmcat - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "ldbmcat - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -36,8 +40,9 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release\ldbmcat" +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "..\Release\ldbmcat" +# PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -48,7 +53,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libdb.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\libraries\Release" +# ADD LINK32 libdb.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\libraries\Release" !ELSEIF "$(CFG)" == "ldbmcat - Win32 Debug" @@ -59,8 +64,8 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug\ldbmcat" +# PROP Output_Dir "..\Debug" +# PROP Intermediate_Dir "..\Debug\ldbmcat" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -72,7 +77,56 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 oldbm32.lib libdb.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\libraries\Debug" +# ADD LINK32 libdb.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\libraries\Debug" + +!ELSEIF "$(CFG)" == "ldbmcat - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ldbmcat_" +# PROP BASE Intermediate_Dir "ldbmcat_" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\Sdebug" +# PROP Intermediate_Dir "..\SDebug\ldbmcat" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 oldbm32.lib libdb.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\libraries\Debug" +# ADD LINK32 libdb.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\libraries\Debug" + +!ELSEIF "$(CFG)" == "ldbmcat - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ldbmcat0" +# PROP BASE Intermediate_Dir "ldbmcat0" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "..\SRelease\ldbmcat" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libdb.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\libraries\Release" +# ADD LINK32 libdb.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\libraries\Release" !ENDIF @@ -80,6 +134,8 @@ LINK32=link.exe # Name "ldbmcat - Win32 Release" # Name "ldbmcat - Win32 Debug" +# Name "ldbmcat - Win32 Single Debug" +# Name "ldbmcat - Win32 Single Release" # Begin Source File SOURCE=.\ldbmcat.c diff --git a/servers/slapd/tools/ldbmtest.dsp b/servers/slapd/tools/ldbmtest.dsp index 061705772c..5c6e014123 100644 --- a/servers/slapd/tools/ldbmtest.dsp +++ b/servers/slapd/tools/ldbmtest.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=ldbmtest - Win32 Debug +CFG=ldbmtest - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,13 +13,17 @@ CFG=ldbmtest - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "ldbmtest.mak" CFG="ldbmtest - Win32 Debug" +!MESSAGE NMAKE /f "ldbmtest.mak" CFG="ldbmtest - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ldbmtest - Win32 Release" (based on\ "Win32 (x86) Console Application") !MESSAGE "ldbmtest - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "ldbmtest - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "ldbmtest - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -37,8 +41,8 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release\ldbmtest" +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "..\Release\ldbmtest" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -60,8 +64,8 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug\ldbmtest" +# PROP Output_Dir "..\Debug" +# PROP Intermediate_Dir "..\Debug\ldbmtest" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -74,12 +78,60 @@ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +!ELSEIF "$(CFG)" == "ldbmtest - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ldbmtest" +# PROP BASE Intermediate_Dir "ldbmtest" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "..\SDebug\ldbmtest" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "ldbmtest - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ldbmtes0" +# PROP BASE Intermediate_Dir "ldbmtes0" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "..\SRelease\ldbmtest" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + !ENDIF # Begin Target # Name "ldbmtest - Win32 Release" # Name "ldbmtest - Win32 Debug" +# Name "ldbmtest - Win32 Single Debug" +# Name "ldbmtest - Win32 Single Release" # Begin Source File SOURCE=.\ldbmtest.c diff --git a/servers/slapd/tools/ldif.dsp b/servers/slapd/tools/ldif.dsp index 8e0412d54f..87baf72e8f 100644 --- a/servers/slapd/tools/ldif.dsp +++ b/servers/slapd/tools/ldif.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=ldif - Win32 Debug +CFG=ldif - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,12 +13,16 @@ CFG=ldif - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "ldif.mak" CFG="ldif - Win32 Debug" +!MESSAGE NMAKE /f "ldif.mak" CFG="ldif - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ldif - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ldif - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "ldif - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "ldif - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -36,12 +40,12 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release/ldif" +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "..\Release\ldif" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -60,12 +64,12 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug/ldif" +# PROP Output_Dir "..\Debug" +# PROP Intermediate_Dir "..\Debug\ldif" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe @@ -75,12 +79,64 @@ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 oldif32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\libraries\Debug" +!ELSEIF "$(CFG)" == "ldif - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ldif___W" +# PROP BASE Intermediate_Dir "ldif___W" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "..\SDebug\ldif" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 oldif32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\libraries\Debug" +# ADD LINK32 oldif32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\libraries\Debug" + +!ELSEIF "$(CFG)" == "ldif - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ldif___0" +# PROP BASE Intermediate_Dir "ldif___0" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "..\SRelease\ldif" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 oldif32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\libraries\Release" +# ADD LINK32 oldif32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\libraries\Release" + !ENDIF # Begin Target # Name "ldif - Win32 Release" # Name "ldif - Win32 Debug" +# Name "ldif - Win32 Single Debug" +# Name "ldif - Win32 Single Release" # Begin Source File SOURCE=.\ldif.c diff --git a/servers/slapd/tools/ldif2id2children.dsp b/servers/slapd/tools/ldif2id2children.dsp index 29a23780bd..dcd755325c 100644 --- a/servers/slapd/tools/ldif2id2children.dsp +++ b/servers/slapd/tools/ldif2id2children.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=ldif2id2children - Win32 Debug +CFG=ldif2id2children - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,7 +13,8 @@ CFG=ldif2id2children - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "ldif2id2children.mak" CFG="ldif2id2children - Win32 Debug" +!MESSAGE NMAKE /f "ldif2id2children.mak"\ + CFG="ldif2id2children - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE @@ -21,6 +22,10 @@ CFG=ldif2id2children - Win32 Debug "Win32 (x86) Console Application") !MESSAGE "ldif2id2children - Win32 Debug" (based on\ "Win32 (x86) Console Application") +!MESSAGE "ldif2id2children - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "ldif2id2children - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -38,8 +43,8 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "..\Release\ldif2id2children" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -62,8 +67,8 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" +# PROP Output_Dir "..\Debug" +# PROP Intermediate_Dir "..\Debug\ldif2id2children" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -75,7 +80,57 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib hs_regexd.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 hs_regex.lib libdb.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "ldif2id2children - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ldif2id2" +# PROP BASE Intermediate_Dir "ldif2id2" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "..\SDebug\ldif2id2children" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib hs_regexd.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 hs_regex.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "ldif2id2children - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ldif2id0" +# PROP BASE Intermediate_Dir "ldif2id0" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "..\SRelease\ldif2id2children" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 hs_regex.lib libdb.lib ws2_32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 hs_regex.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /machine:I386 !ENDIF @@ -83,6 +138,8 @@ LINK32=link.exe # Name "ldif2id2children - Win32 Release" # Name "ldif2id2children - Win32 Debug" +# Name "ldif2id2children - Win32 Single Debug" +# Name "ldif2id2children - Win32 Single Release" # Begin Source File SOURCE=.\ldif2id2children.c diff --git a/servers/slapd/tools/ldif2id2entry.dsp b/servers/slapd/tools/ldif2id2entry.dsp index ea181eda20..a6e201c172 100644 --- a/servers/slapd/tools/ldif2id2entry.dsp +++ b/servers/slapd/tools/ldif2id2entry.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=ldif2id2entry - Win32 Debug +CFG=ldif2id2entry - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,7 +13,7 @@ CFG=ldif2id2entry - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "ldif2id2entry.mak" CFG="ldif2id2entry - Win32 Debug" +!MESSAGE NMAKE /f "ldif2id2entry.mak" CFG="ldif2id2entry - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE @@ -21,6 +21,10 @@ CFG=ldif2id2entry - Win32 Debug "Win32 (x86) Console Application") !MESSAGE "ldif2id2entry - Win32 Debug" (based on\ "Win32 (x86) Console Application") +!MESSAGE "ldif2id2entry - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "ldif2id2entry - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -38,8 +42,8 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "..\Release\ldif2id2entry" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -62,8 +66,8 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" +# PROP Output_Dir "..\Debug" +# PROP Intermediate_Dir "..\Debug\ldif2id2entry" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -75,7 +79,57 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib hs_regexd.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 hs_regex.lib libdb.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "ldif2id2entry - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ldif2id2" +# PROP BASE Intermediate_Dir "ldif2id2" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "..\SDebug\ldif2id2entry" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib hs_regexd.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 hs_regexd.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "ldif2id2entry - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ldif2id0" +# PROP BASE Intermediate_Dir "ldif2id0" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "..\SRelease\ldif2id2entry" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 hs_regex.lib libdb.lib ws2_32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 hs_regex.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /machine:I386 !ENDIF @@ -83,6 +137,8 @@ LINK32=link.exe # Name "ldif2id2entry - Win32 Release" # Name "ldif2id2entry - Win32 Debug" +# Name "ldif2id2entry - Win32 Single Debug" +# Name "ldif2id2entry - Win32 Single Release" # Begin Source File SOURCE=.\ldif2id2entry.c diff --git a/servers/slapd/tools/ldif2index.dsp b/servers/slapd/tools/ldif2index.dsp index 8ce465e567..accb5cec6f 100644 --- a/servers/slapd/tools/ldif2index.dsp +++ b/servers/slapd/tools/ldif2index.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=ldif2index - Win32 Debug +CFG=ldif2index - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,7 +13,7 @@ CFG=ldif2index - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "ldif2index.mak" CFG="ldif2index - Win32 Debug" +!MESSAGE NMAKE /f "ldif2index.mak" CFG="ldif2index - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE @@ -21,6 +21,10 @@ CFG=ldif2index - Win32 Debug "Win32 (x86) Console Application") !MESSAGE "ldif2index - Win32 Debug" (based on\ "Win32 (x86) Console Application") +!MESSAGE "ldif2index - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "ldif2index - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -38,8 +42,8 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "..\Release\ldif2index" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -62,8 +66,8 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" +# PROP Output_Dir "..\Debug" +# PROP Intermediate_Dir "..\Debug\ldif2index" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -75,7 +79,57 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib shell32.lib hs_regexd.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 hs_regex.lib libdb.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "ldif2index - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ldif2ind" +# PROP BASE Intermediate_Dir "ldif2ind" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "..\SDebug\ldif2index" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib shell32.lib hs_regexd.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 hs_regex.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "ldif2index - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ldif2in0" +# PROP BASE Intermediate_Dir "ldif2in0" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "..\SRelease\ldif2index" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 hs_regex.lib libdb.lib ws2_32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 hs_regex.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /machine:I386 !ENDIF @@ -83,6 +137,8 @@ LINK32=link.exe # Name "ldif2index - Win32 Release" # Name "ldif2index - Win32 Debug" +# Name "ldif2index - Win32 Single Debug" +# Name "ldif2index - Win32 Single Release" # Begin Source File SOURCE=.\ldif2index.c diff --git a/servers/slapd/tools/ldif2ldbm.c b/servers/slapd/tools/ldif2ldbm.c index d84276b3c2..df8c2698ce 100644 --- a/servers/slapd/tools/ldif2ldbm.c +++ b/servers/slapd/tools/ldif2ldbm.c @@ -17,16 +17,10 @@ #include "../back-ldbm/back-ldbm.h" #include "ldif.h" +#define INDEXCMD "ldif2index" EXEEXT +#define ID2ENTRYCMD "ldif2id2entry" EXEEXT +#define ID2CHILDRENCMD "ldif2id2children" EXEEXT -#ifdef WIN32 -#define INDEXCMD "ldif2index.exe" -#define ID2ENTRYCMD "ldif2id2entry.exe" -#define ID2CHILDRENCMD "ldif2id2children.exe" -#else -#define INDEXCMD "ldif2index" -#define ID2ENTRYCMD "ldif2id2entry" -#define ID2CHILDRENCMD "ldif2id2children" -#endif #define MAXARGS 100 static void fork_child( char *prog, char *args[] ); diff --git a/servers/slapd/tools/ldif2ldbm.dsp b/servers/slapd/tools/ldif2ldbm.dsp index a338161c2a..049158b5c7 100644 --- a/servers/slapd/tools/ldif2ldbm.dsp +++ b/servers/slapd/tools/ldif2ldbm.dsp @@ -4,7 +4,7 @@ # TARGTYPE "Win32 (x86) Console Application" 0x0103 -CFG=ldif2ldbm - Win32 Debug +CFG=ldif2ldbm - Win32 Single Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE @@ -13,13 +13,17 @@ CFG=ldif2ldbm - Win32 Debug !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "ldif2ldbm.mak" CFG="ldif2ldbm - Win32 Debug" +!MESSAGE NMAKE /f "ldif2ldbm.mak" CFG="ldif2ldbm - Win32 Single Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ldif2ldbm - Win32 Release" (based on\ "Win32 (x86) Console Application") !MESSAGE "ldif2ldbm - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "ldif2ldbm - Win32 Single Debug" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "ldif2ldbm - Win32 Single Release" (based on\ + "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -37,8 +41,8 @@ RSC=rc.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" +# PROP Output_Dir "..\Release" +# PROP Intermediate_Dir "..\Release\ldif2ldbm" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -61,8 +65,8 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" +# PROP Output_Dir "..\Debug" +# PROP Intermediate_Dir "..\Debug\ldif2dlbm" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c @@ -74,7 +78,57 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib shell32.lib hs_regexd.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 hs_regex.lib libdb.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "ldif2ldbm - Win32 Single Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ldif2ldb" +# PROP BASE Intermediate_Dir "ldif2ldb" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\SDebug" +# PROP Intermediate_Dir "..\SDebug\ldif2dlbm" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib shell32.lib hs_regexd.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 hs_regex.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "ldif2ldbm - Win32 Single Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ldif2ld0" +# PROP BASE Intermediate_Dir "ldif2ld0" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\SRelease" +# PROP Intermediate_Dir "..\SRelease\ldif2dlbm" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 hs_regex.lib libdb.lib ws2_32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 hs_regex.lib libdbs.lib ws2_32.lib /nologo /subsystem:console /machine:I386 !ENDIF @@ -82,6 +136,8 @@ LINK32=link.exe # Name "ldif2ldbm - Win32 Release" # Name "ldif2ldbm - Win32 Debug" +# Name "ldif2ldbm - Win32 Single Debug" +# Name "ldif2ldbm - Win32 Single Release" # Begin Source File SOURCE=..\tools\ldif2ldbm.c diff --git a/servers/slapd/wsa_err.c b/servers/slapd/wsa_err.c index 4492477175..856f39a0cf 100644 --- a/servers/slapd/wsa_err.c +++ b/servers/slapd/wsa_err.c @@ -1,3 +1,5 @@ +#include "portable.h" + #include #define __RETSTR( x ) case x: return #x; diff --git a/servers/slurpd/args.c b/servers/slurpd/args.c index 57b80c111c..b1417323e3 100644 --- a/servers/slurpd/args.c +++ b/servers/slurpd/args.c @@ -139,7 +139,7 @@ doargs( sprintf( g->slurpd_status_file, "%s/%s", g->slurpd_rdir, DEFAULT_SLURPD_STATUS_FILE ); - lber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &ldap_debug); + ber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &ldap_debug); ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &ldap_debug); ldif_debug = ldap_debug; -- 2.39.5