Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • openldap/openldap
  • hyc/openldap
  • ryan/openldap
  • iboukris/openldap
  • ondra/openldap
  • sshanks-kx/openldap
  • blaggacao/openldap
  • pbrezina/openldap
  • quanah/openldap
  • dragos_h/openldap
  • lorenz/openldap
  • tsaarni/openldap
  • fei.ding/openldap
  • orent/openldap
  • arrowplum/openldap
  • barchiesi/openldap
  • jotik/openldap
  • hamano/openldap
  • ingovoss/openldap
  • henson/openldap
  • jlrine2/openldap
  • howeverAT/openldap
  • nivanova/openldap
  • orbea/openldap
  • rdubner/openldap
  • smckinney/openldap
  • jklowden/openldap
  • dpa-openldap/openldap
  • rouzier/openldap
  • orgads/openldap
  • ffontaine/openldap
  • jiaqingz/openldap
  • dcoutadeur/openldap
  • begeragus/openldap
  • pubellit/openldap
  • glandium/openldap
  • facboy/openldap
  • thesamesam/openldap
  • Johan/openldap
  • fkooman/openldap
  • gburd/openldap
  • h-homma/openldap
  • sgallagher/openldap
  • ahmed_zaki/openldap
  • gnoe/openldap
  • mid/openldap
  • clan/openldap
47 results
Show changes
Showing with 349 additions and 341 deletions
:: $OpenLDAP$ :: $OpenLDAP$
:: This work is part of OpenLDAP Software <http://www.openldap.org/>. :: This work is part of OpenLDAP Software <http://www.openldap.org/>.
:: ::
:: Copyright 1998-2008 The OpenLDAP Foundation. :: Copyright 1998-2009 The OpenLDAP Foundation.
:: All rights reserved. :: All rights reserved.
:: ::
:: Redistribution and use in source and binary forms, with or without :: Redistribution and use in source and binary forms, with or without
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# $OpenLDAP$ # $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>. ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
## ##
## Copyright 1998-2008 The OpenLDAP Foundation. ## Copyright 1998-2009 The OpenLDAP Foundation.
## All rights reserved. ## All rights reserved.
## ##
## Redistribution and use in source and binary forms, with or without ## Redistribution and use in source and binary forms, with or without
...@@ -55,7 +55,7 @@ WHOWHERE="$USER@`uname -n`:`pwd`" ...@@ -55,7 +55,7 @@ WHOWHERE="$USER@`uname -n`:`pwd`"
cat << __EOF__ cat << __EOF__
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
* *
* Copyright 1998-2008 The OpenLDAP Foundation. * Copyright 1998-2009 The OpenLDAP Foundation.
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -68,7 +68,7 @@ cat << __EOF__ ...@@ -68,7 +68,7 @@ cat << __EOF__
*/ */
static const char copyright[] = static const char copyright[] =
"Copyright 1998-2008 The OpenLDAP Foundation. All rights reserved.\n" "Copyright 1998-2009 The OpenLDAP Foundation. All rights reserved.\n"
"COPYING RESTRICTIONS APPLY\n"; "COPYING RESTRICTIONS APPLY\n";
$static $const char $SYMBOL[] = $static $const char $SYMBOL[] =
......
# $OpenLDAP$ # $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>. ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
## ##
## Copyright 1998-2008 The OpenLDAP Foundation. ## Copyright 1998-2009 The OpenLDAP Foundation.
## All rights reserved. ## All rights reserved.
## ##
## Redistribution and use in source and binary forms, with or without ## Redistribution and use in source and binary forms, with or without
......
...@@ -2,7 +2,7 @@ dnl OpenLDAP Autoconf Macros ...@@ -2,7 +2,7 @@ dnl OpenLDAP Autoconf Macros
dnl $OpenLDAP$ dnl $OpenLDAP$
dnl This work is part of OpenLDAP Software <http://www.openldap.org/>. dnl This work is part of OpenLDAP Software <http://www.openldap.org/>.
dnl dnl
dnl Copyright 1998-2008 The OpenLDAP Foundation. dnl Copyright 1998-2009 The OpenLDAP Foundation.
dnl All rights reserved. dnl All rights reserved.
dnl dnl
dnl Redistribution and use in source and binary forms, with or without dnl Redistribution and use in source and binary forms, with or without
...@@ -119,6 +119,17 @@ if test $ol_cv_cpp_ebcdic = yes ; then ...@@ -119,6 +119,17 @@ if test $ol_cv_cpp_ebcdic = yes ; then
fi fi
]) ])
dnl dnl
dnl --------------------------------------------------------------------
dnl Check for MSVC
AC_DEFUN([OL_MSVC],
[AC_REQUIRE_CPP()dnl
AC_CACHE_CHECK([whether we are using MS Visual C++], ol_cv_msvc,
[AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
#ifndef _MSC_VER
#include <__FOO__/generate_error.h>
#endif
]])],[ol_cv_msvc=yes],[ol_cv_msvc=no])])])
dnl -------------------------------------------------------------------- dnl --------------------------------------------------------------------
dnl OpenLDAP version of STDC header check w/ EBCDIC support dnl OpenLDAP version of STDC header check w/ EBCDIC support
AC_DEFUN([OL_HEADER_STDC], AC_DEFUN([OL_HEADER_STDC],
...@@ -288,24 +299,6 @@ AC_DEFUN([OL_BERKELEY_DB_TRY], ...@@ -288,24 +299,6 @@ AC_DEFUN([OL_BERKELEY_DB_TRY],
#define NULL ((void*)0) #define NULL ((void*)0)
#endif #endif
]], [[ ]], [[
#if DB_VERSION_MAJOR > 1
{
char *version;
int major, minor, patch;
version = db_version( &major, &minor, &patch );
if( major != DB_VERSION_MAJOR ||
minor < DB_VERSION_MINOR )
{
printf("Berkeley DB version mismatch\n"
"\theader: %s\n\tlibrary: %s\n",
DB_VERSION_STRING, version);
return 1;
}
}
#endif
#if DB_VERSION_MAJOR > 2 #if DB_VERSION_MAJOR > 2
db_env_create( NULL, 0 ); db_env_create( NULL, 0 );
#elif DB_VERSION_MAJOR > 1 #elif DB_VERSION_MAJOR > 1
...@@ -325,209 +318,53 @@ fi ...@@ -325,209 +318,53 @@ fi
]) ])
dnl dnl
dnl -------------------------------------------------------------------- dnl --------------------------------------------------------------------
dnl Try to locate appropriate library dnl Get major and minor version from <db.h>
AC_DEFUN([OL_BERKELEY_DB_LINK], AC_DEFUN([OL_BDB_HEADER_VERSION],
[ol_cv_lib_db=no [AC_CACHE_CHECK([for Berkeley DB major version in db.h], [ol_cv_bdb_major],[
AC_LANG_CONFTEST([
dnl Determine major version
AC_CACHE_CHECK([for Berkeley DB major version], [ol_cv_bdb_major],[
ol_cv_bdb_major=0
if test $ol_cv_bdb_major = 0 ; then
AC_EGREP_CPP(__db_version, [
#include <db.h>
#ifndef DB_VERSION_MAJOR
# define DB_VERSION_MAJOR 1
#endif
#if DB_VERSION_MAJOR == 4
__db_version
#endif
], [ol_cv_bdb_major=4], [:])
fi
if test $ol_cv_bdb_major = 0 ; then
AC_EGREP_CPP(__db_version, [
#include <db.h> #include <db.h>
#ifndef DB_VERSION_MAJOR #ifndef DB_VERSION_MAJOR
# define DB_VERSION_MAJOR 1 # define DB_VERSION_MAJOR 1
#endif #endif
#if DB_VERSION_MAJOR == 3 __db_version DB_VERSION_MAJOR
__db_version ])
#endif set X `eval "$ac_cpp conftest.$ac_ext" | $EGREP __db_version` none none
], [ol_cv_bdb_major=3], [:]) ol_cv_bdb_major=${3}
fi
if test $ol_cv_bdb_major = 0 ; then
AC_EGREP_CPP(__db_version, [
#include <db.h>
#ifndef DB_VERSION_MAJOR
# define DB_VERSION_MAJOR 1
#endif
#if DB_VERSION_MAJOR == 2
__db_version
#endif
], [ol_cv_bdb_major=2], [:])
fi
if test $ol_cv_bdb_major = 0 ; then
AC_EGREP_CPP(__db_version, [
#include <db.h>
#ifndef DB_VERSION_MAJOR
# define DB_VERSION_MAJOR 1
#endif
#if DB_VERSION_MAJOR == 1
__db_version
#endif
], [ol_cv_bdb_major=1], [:])
fi
if test $ol_cv_bdb_major = 0 ; then
AC_MSG_ERROR([Unknown Berkeley DB major version])
fi
]) ])
case $ol_cv_bdb_major in [[1-9]]*) : ;; *)
AC_MSG_ERROR([Unknown Berkeley DB major version in db.h]) ;;
esac
dnl Determine minor version dnl Determine minor version
AC_CACHE_CHECK([for Berkeley DB minor version], [ol_cv_bdb_minor],[ AC_CACHE_CHECK([for Berkeley DB minor version in db.h], [ol_cv_bdb_minor],[
ol_cv_bdb_minor=0 AC_LANG_CONFTEST([
if test $ol_cv_bdb_minor = 0 ; then
AC_EGREP_CPP(__db_version, [
#include <db.h> #include <db.h>
#ifndef DB_VERSION_MINOR #ifndef DB_VERSION_MINOR
# define DB_VERSION_MINOR 0 # define DB_VERSION_MINOR 0
#endif #endif
#if DB_VERSION_MINOR == 9 __db_version DB_VERSION_MINOR
__db_version ])
#endif set X `eval "$ac_cpp conftest.$ac_ext" | $EGREP __db_version` none none
], [ol_cv_bdb_minor=9], [:]) ol_cv_bdb_minor=${3}
fi ])
if test $ol_cv_bdb_minor = 0 ; then case $ol_cv_bdb_minor in [[0-9]]*) : ;; *)
AC_EGREP_CPP(__db_version, [ AC_MSG_ERROR([Unknown Berkeley DB minor version in db.h]) ;;
#include <db.h> esac
#ifndef DB_VERSION_MINOR
# define DB_VERSION_MINOR 0
#endif
#if DB_VERSION_MINOR == 8
__db_version
#endif
], [ol_cv_bdb_minor=8], [:])
fi
if test $ol_cv_bdb_minor = 0 ; then
AC_EGREP_CPP(__db_version, [
#include <db.h>
#ifndef DB_VERSION_MINOR
# define DB_VERSION_MINOR 0
#endif
#if DB_VERSION_MINOR == 7
__db_version
#endif
], [ol_cv_bdb_minor=7], [:])
fi
if test $ol_cv_bdb_minor = 0 ; then
AC_EGREP_CPP(__db_version, [
#include <db.h>
#ifndef DB_VERSION_MINOR
# define DB_VERSION_MINOR 0
#endif
#if DB_VERSION_MINOR == 6
__db_version
#endif
], [ol_cv_bdb_minor=6], [:])
fi
if test $ol_cv_bdb_minor = 0 ; then
AC_EGREP_CPP(__db_version, [
#include <db.h>
#ifndef DB_VERSION_MINOR
# define DB_VERSION_MINOR 0
#endif
#if DB_VERSION_MINOR == 5
__db_version
#endif
], [ol_cv_bdb_minor=5], [:])
fi
if test $ol_cv_bdb_minor = 0 ; then
AC_EGREP_CPP(__db_version, [
#include <db.h>
#ifndef DB_VERSION_MINOR
# define DB_VERSION_MINOR 0
#endif
#if DB_VERSION_MINOR == 4
__db_version
#endif
], [ol_cv_bdb_minor=4], [:])
fi
if test $ol_cv_bdb_minor = 0 ; then
AC_EGREP_CPP(__db_version, [
#include <db.h>
#ifndef DB_VERSION_MINOR
# define DB_VERSION_MINOR 0
#endif
#if DB_VERSION_MINOR == 3
__db_version
#endif
], [ol_cv_bdb_minor=3], [:])
fi
if test $ol_cv_bdb_minor = 0 ; then
AC_EGREP_CPP(__db_version, [
#include <db.h>
#ifndef DB_VERSION_MINOR
# define DB_VERSION_MINOR 0
#endif
#if DB_VERSION_MINOR == 2
__db_version
#endif
], [ol_cv_bdb_minor=2], [:])
fi
if test $ol_cv_bdb_minor = 0 ; then
AC_EGREP_CPP(__db_version, [
#include <db.h>
#ifndef DB_VERSION_MINOR
# define DB_VERSION_MINOR 0
#endif
#if DB_VERSION_MINOR == 1
__db_version
#endif
], [ol_cv_bdb_minor=1], [:])
fi
]) ])
dnl
dnl --------------------------------------------------------------------
dnl Try to locate appropriate library
AC_DEFUN([OL_BERKELEY_DB_LINK],
[ol_cv_lib_db=no
if test $ol_cv_bdb_major = 4 ; then if test $ol_cv_bdb_major = 4 ; then
if test $ol_cv_bdb_minor = 6 ; then OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_m,[-ldb-4.$ol_cv_bdb_minor])
OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_6,[-ldb-4.6]) OL_BERKELEY_DB_TRY(ol_cv_db_db4m,[-ldb4$ol_cv_bdb_minor])
OL_BERKELEY_DB_TRY(ol_cv_db_db46,[-ldb46]) OL_BERKELEY_DB_TRY(ol_cv_db_db_4m,[-ldb-4$ol_cv_bdb_minor])
OL_BERKELEY_DB_TRY(ol_cv_db_db_46,[-ldb-46]) OL_BERKELEY_DB_TRY(ol_cv_db_db_4_m,[-ldb-4-$ol_cv_bdb_minor])
OL_BERKELEY_DB_TRY(ol_cv_db_db_4_6,[-ldb-4-6])
elif test $ol_cv_bdb_minor = 5 ; then
OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_5,[-ldb-4.5])
OL_BERKELEY_DB_TRY(ol_cv_db_db45,[-ldb45])
OL_BERKELEY_DB_TRY(ol_cv_db_db_45,[-ldb-45])
OL_BERKELEY_DB_TRY(ol_cv_db_db_4_5,[-ldb-4-5])
elif test $ol_cv_bdb_minor = 4 ; then
OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_4,[-ldb-4.4])
OL_BERKELEY_DB_TRY(ol_cv_db_db44,[-ldb44])
OL_BERKELEY_DB_TRY(ol_cv_db_db_44,[-ldb-44])
OL_BERKELEY_DB_TRY(ol_cv_db_db_4_4,[-ldb-4-4])
elif test $ol_cv_bdb_minor = 3 ; then
OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_3,[-ldb-4.3])
OL_BERKELEY_DB_TRY(ol_cv_db_db43,[-ldb43])
OL_BERKELEY_DB_TRY(ol_cv_db_db_43,[-ldb-43])
OL_BERKELEY_DB_TRY(ol_cv_db_db_4_3,[-ldb-4-3])
elif test $ol_cv_bdb_minor = 2 ; then
OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_2,[-ldb-4.2])
OL_BERKELEY_DB_TRY(ol_cv_db_db42,[-ldb42])
OL_BERKELEY_DB_TRY(ol_cv_db_db_42,[-ldb-42])
OL_BERKELEY_DB_TRY(ol_cv_db_db_4_2,[-ldb-4-2])
fi
OL_BERKELEY_DB_TRY(ol_cv_db_db_4,[-ldb-4]) OL_BERKELEY_DB_TRY(ol_cv_db_db_4,[-ldb-4])
OL_BERKELEY_DB_TRY(ol_cv_db_db4,[-ldb4]) OL_BERKELEY_DB_TRY(ol_cv_db_db4,[-ldb4])
OL_BERKELEY_DB_TRY(ol_cv_db_db,[-ldb]) OL_BERKELEY_DB_TRY(ol_cv_db_db,[-ldb])
elif test $ol_cv_bdb_major = 3 ; then
OL_BERKELEY_DB_TRY(ol_cv_db_db3,[-ldb3])
OL_BERKELEY_DB_TRY(ol_cv_db_db_3,[-ldb-3])
elif test $ol_cv_bdb_major = 2 ; then
OL_BERKELEY_DB_TRY(ol_cv_db_db2,[-ldb2])
OL_BERKELEY_DB_TRY(ol_cv_db_db_2,[-ldb-2])
elif test $ol_cv_bdb_major = 1 ; then
OL_BERKELEY_DB_TRY(ol_cv_db_db1,[-ldb1])
OL_BERKELEY_DB_TRY(ol_cv_db_db_1,[-ldb-1])
fi fi
OL_BERKELEY_DB_TRY(ol_cv_db_none) OL_BERKELEY_DB_TRY(ol_cv_db_none)
]) ])
...@@ -535,7 +372,7 @@ dnl ...@@ -535,7 +372,7 @@ dnl
dnl -------------------------------------------------------------------- dnl --------------------------------------------------------------------
dnl Check if Berkeley DB version dnl Check if Berkeley DB version
AC_DEFUN([OL_BERKELEY_DB_VERSION], AC_DEFUN([OL_BERKELEY_DB_VERSION],
[AC_CACHE_CHECK([for Berkeley DB version match], [ol_cv_berkeley_db_version], [ [AC_CACHE_CHECK([for Berkeley DB library and header version match], [ol_cv_berkeley_db_version], [
ol_LIBS="$LIBS" ol_LIBS="$LIBS"
LIBS="$LTHREAD_LIBS $LIBS" LIBS="$LTHREAD_LIBS $LIBS"
if test $ol_cv_lib_db != yes ; then if test $ol_cv_lib_db != yes ; then
...@@ -674,6 +511,13 @@ AC_DEFUN([OL_BERKELEY_DB], ...@@ -674,6 +511,13 @@ AC_DEFUN([OL_BERKELEY_DB],
[ol_cv_berkeley_db=no [ol_cv_berkeley_db=no
AC_CHECK_HEADERS(db.h) AC_CHECK_HEADERS(db.h)
if test $ac_cv_header_db_h = yes; then if test $ac_cv_header_db_h = yes; then
OL_BDB_HEADER_VERSION
OL_BDB_COMPAT
if test $ol_cv_bdb_compat != yes ; then
AC_MSG_ERROR([BerkeleyDB version incompatible with BDB/HDB backends])
fi
OL_BERKELEY_DB_LINK OL_BERKELEY_DB_LINK
if test "$ol_cv_lib_db" != no ; then if test "$ol_cv_lib_db" != no ; then
ol_cv_berkeley_db=yes ol_cv_berkeley_db=yes
...@@ -685,7 +529,7 @@ fi ...@@ -685,7 +529,7 @@ fi
dnl -------------------------------------------------------------------- dnl --------------------------------------------------------------------
dnl Check for version compatility with back-bdb dnl Check for version compatility with back-bdb
AC_DEFUN([OL_BDB_COMPAT], AC_DEFUN([OL_BDB_COMPAT],
[AC_CACHE_CHECK([Berkeley DB version for BDB/HDB backends], [ol_cv_bdb_compat],[ [AC_CACHE_CHECK([if Berkeley DB version supported by BDB/HDB backends], [ol_cv_bdb_compat],[
AC_EGREP_CPP(__db_version_compat,[ AC_EGREP_CPP(__db_version_compat,[
#include <db.h> #include <db.h>
...@@ -697,44 +541,15 @@ AC_DEFUN([OL_BDB_COMPAT], ...@@ -697,44 +541,15 @@ AC_DEFUN([OL_BDB_COMPAT],
# define DB_VERSION_MINOR 0 # define DB_VERSION_MINOR 0
#endif #endif
/* require 4.2 or later, but exclude 4.3 */ #define DB_VERSION_MM ((DB_VERSION_MAJOR<<8)|DB_VERSION_MINOR)
#if (DB_VERSION_MAJOR >= 4) && (DB_VERSION_MINOR >= 2) && (DB_VERSION_MINOR !=3)
/* require 4.4 or later */
#if DB_VERSION_MM >= 0x0404
__db_version_compat __db_version_compat
#endif #endif
], [ol_cv_bdb_compat=yes], [ol_cv_bdb_compat=no])]) ], [ol_cv_bdb_compat=yes], [ol_cv_bdb_compat=no])])
]) ])
dnl --------------------------------------------------------------------
dnl Find old Berkeley DB 1.85/1.86
AC_DEFUN([OL_BERKELEY_COMPAT_DB],
[AC_CHECK_HEADERS(db_185.h db.h)
if test $ac_cv_header_db_185_h = yes || test $ac_cv_header_db_h = yes; then
AC_CACHE_CHECK([if Berkeley DB header compatibility], [ol_cv_header_db1],[
AC_EGREP_CPP(__db_version_1,[
#if HAVE_DB_185_H
# include <db_185.h>
#else
# include <db.h>
#endif
/* this check could be improved */
#ifndef DB_VERSION_MAJOR
# define DB_VERSION_MAJOR 1
#endif
#if DB_VERSION_MAJOR == 1
__db_version_1
#endif
], [ol_cv_header_db1=yes], [ol_cv_header_db1=no])])
if test $ol_cv_header_db1 = yes ; then
OL_BERKELEY_DB_LINK
if test "$ol_cv_lib_db" != no ; then
ol_cv_berkeley_db=yes
fi
fi
fi
])
dnl dnl
dnl ==================================================================== dnl ====================================================================
dnl Check POSIX Thread version dnl Check POSIX Thread version
...@@ -1106,7 +921,9 @@ AC_DEFUN([OL_LIB_FETCH], ...@@ -1106,7 +921,9 @@ AC_DEFUN([OL_LIB_FETCH],
LIBS="-lfetch -lcom_err $LIBS" LIBS="-lfetch -lcom_err $LIBS"
AC_CACHE_CHECK([fetch(3) library],ol_cv_lib_fetch,[ AC_CACHE_CHECK([fetch(3) library],ol_cv_lib_fetch,[
AC_LINK_IFELSE([AC_LANG_PROGRAM([[ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h> #include <sys/param.h>
#endif
#include <stdio.h> #include <stdio.h>
#include <fetch.h>]], [[struct url *u = fetchParseURL("file:///"); ]])],[ol_cv_lib_fetch=yes],[ol_cv_lib_fetch=no])]) #include <fetch.h>]], [[struct url *u = fetchParseURL("file:///"); ]])],[ol_cv_lib_fetch=yes],[ol_cv_lib_fetch=no])])
LIBS=$ol_LIBS LIBS=$ol_LIBS
......
# $OpenLDAP$ # $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>. ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
## ##
## Copyright 1998-2008 The OpenLDAP Foundation. ## Copyright 1998-2009 The OpenLDAP Foundation.
## All rights reserved. ## All rights reserved.
## ##
## Redistribution and use in source and binary forms, with or without ## Redistribution and use in source and binary forms, with or without
......
# $OpenLDAP$ # $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>. ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
## ##
## Copyright 1998-2008 The OpenLDAP Foundation. ## Copyright 1998-2009 The OpenLDAP Foundation.
## All rights reserved. ## All rights reserved.
## ##
## Redistribution and use in source and binary forms, with or without ## Redistribution and use in source and binary forms, with or without
......
# $OpenLDAP$ # $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>. ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
## ##
## Copyright 1998-2008 The OpenLDAP Foundation. ## Copyright 1998-2009 The OpenLDAP Foundation.
## All rights reserved. ## All rights reserved.
## ##
## Redistribution and use in source and binary forms, with or without ## Redistribution and use in source and binary forms, with or without
...@@ -32,6 +32,7 @@ exec_prefix = @exec_prefix@ ...@@ -32,6 +32,7 @@ exec_prefix = @exec_prefix@
ldap_subdir = @ldap_subdir@ ldap_subdir = @ldap_subdir@
bindir = @bindir@ bindir = @bindir@
datarootdir = @datarootdir@
datadir = @datadir@$(ldap_subdir) datadir = @datadir@$(ldap_subdir)
includedir = @includedir@ includedir = @includedir@
infodir = @infodir@ infodir = @infodir@
...@@ -159,6 +160,7 @@ LUTIL_LIBS = @LUTIL_LIBS@ ...@@ -159,6 +160,7 @@ LUTIL_LIBS = @LUTIL_LIBS@
LTHREAD_LIBS = @LTHREAD_LIBS@ LTHREAD_LIBS = @LTHREAD_LIBS@
BDB_LIBS = @BDB_LIBS@ BDB_LIBS = @BDB_LIBS@
SLAPD_NDB_LIBS = @SLAPD_NDB_LIBS@
LDAP_LIBLBER_LA = $(LDAP_LIBDIR)/liblber/liblber.la LDAP_LIBLBER_LA = $(LDAP_LIBDIR)/liblber/liblber.la
LDAP_LIBLDAP_LA = $(LDAP_LIBDIR)/libldap/libldap.la LDAP_LIBLDAP_LA = $(LDAP_LIBDIR)/libldap/libldap.la
...@@ -185,9 +187,10 @@ KRB4_LIBS = @KRB4_LIBS@ ...@@ -185,9 +187,10 @@ KRB4_LIBS = @KRB4_LIBS@
KRB5_LIBS = @KRB5_LIBS@ KRB5_LIBS = @KRB5_LIBS@
KRB_LIBS = @KRB4_LIBS@ @KRB5_LIBS@ KRB_LIBS = @KRB4_LIBS@ @KRB5_LIBS@
SASL_LIBS = @SASL_LIBS@ SASL_LIBS = @SASL_LIBS@
GSSAPI_LIBS = @GSSAPI_LIBS@
TLS_LIBS = @TLS_LIBS@ TLS_LIBS = @TLS_LIBS@
AUTH_LIBS = @AUTH_LIBS@ AUTH_LIBS = @AUTH_LIBS@
SECURITY_LIBS = $(SASL_LIBS) $(KRB_LIBS) $(TLS_LIBS) $(AUTH_LIBS) SECURITY_LIBS = $(SASL_LIBS) $(KRB_LIBS) $(GSSAPI_LIBS) $(TLS_LIBS) $(AUTH_LIBS)
ICU_LIBS = @ICU_LIBS@ ICU_LIBS = @ICU_LIBS@
MODULES_CPPFLAGS = @SLAPD_MODULES_CPPFLAGS@ MODULES_CPPFLAGS = @SLAPD_MODULES_CPPFLAGS@
......
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
* *
* Copyright 1998-2008 The OpenLDAP Foundation. * Copyright 1998-2009 The OpenLDAP Foundation.
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -13,6 +13,6 @@ ...@@ -13,6 +13,6 @@
*/ */
static const char copyright[] = static const char copyright[] =
"Copyright 1998-2008 The OpenLDAP Foundation. All rights reserved.\n" "Copyright 1998-2009 The OpenLDAP Foundation. All rights reserved.\n"
"COPYING RESTRICTIONS APPLY.\n"; "COPYING RESTRICTIONS APPLY.\n";
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# $OpenLDAP$ # $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>. ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
## ##
## Copyright 1998-2008 The OpenLDAP Foundation. ## Copyright 1998-2009 The OpenLDAP Foundation.
## All rights reserved. ## All rights reserved.
## ##
## Redistribution and use in source and binary forms, with or without ## Redistribution and use in source and binary forms, with or without
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# $OpenLDAP$ # $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>. ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
## ##
## Copyright 1998-2008 The OpenLDAP Foundation. ## Copyright 1998-2009 The OpenLDAP Foundation.
## All rights reserved. ## All rights reserved.
## ##
## Redistribution and use in source and binary forms, with or without ## Redistribution and use in source and binary forms, with or without
...@@ -14,10 +14,10 @@ ...@@ -14,10 +14,10 @@
## <http://www.OpenLDAP.org/license.html>. ## <http://www.OpenLDAP.org/license.html>.
ol_package=OpenLDAP ol_package=OpenLDAP
ol_major=2 ol_major=2
ol_minor=X ol_minor=4
ol_patch=X ol_patch=15
ol_api_inc=000000 ol_api_inc=20415
ol_api_current=0 ol_api_current=6
ol_api_revision=0 ol_api_revision=1
ol_api_age=0 ol_api_age=4
ol_release_date="0000/00/00" ol_release_date="2009/02/19"
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# $OpenLDAP$ # $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>. ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
## ##
## Copyright 1998-2008 The OpenLDAP Foundation. ## Copyright 1998-2009 The OpenLDAP Foundation.
## All rights reserved. ## All rights reserved.
## ##
## Redistribution and use in source and binary forms, with or without ## Redistribution and use in source and binary forms, with or without
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# $OpenLDAP$ # $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>. ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
## ##
## Copyright 1998-2008 The OpenLDAP Foundation. ## Copyright 1998-2009 The OpenLDAP Foundation.
## All rights reserved. ## All rights reserved.
## ##
## Redistribution and use in source and binary forms, with or without ## Redistribution and use in source and binary forms, with or without
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
SRCS = ldapsearch.c ldapmodify.c ldapdelete.c ldapmodrdn.c \ SRCS = ldapsearch.c ldapmodify.c ldapdelete.c ldapmodrdn.c \
ldappasswd.c ldapwhoami.c ldapcompare.c \ ldappasswd.c ldapwhoami.c ldapcompare.c \
ldapexop.c common.c ldapexop.c ldapurl.c common.c
OBJS = ldapsearch.o ldapmodify.o ldapdelete.o ldapmodrdn.o \ OBJS = ldapsearch.o ldapmodify.o ldapdelete.o ldapmodrdn.o \
ldappasswd.o ldapwhoami.o ldapcompare.o \ ldappasswd.o ldapwhoami.o ldapcompare.o \
ldapexop.o common.o ldapexop.o ldapurl.o common.o
LDAP_INCDIR= ../../include LDAP_INCDIR= ../../include
LDAP_LIBDIR= ../../libraries LDAP_LIBDIR= ../../libraries
...@@ -29,10 +29,10 @@ XLIBS = $(LDAP_L) ...@@ -29,10 +29,10 @@ XLIBS = $(LDAP_L)
XXLIBS = $(SECURITY_LIBS) $(LUTIL_LIBS) XXLIBS = $(SECURITY_LIBS) $(LUTIL_LIBS)
XSRCS = ldsversion.c ldmversion.c lddversion.c ldrversion.c \ XSRCS = ldsversion.c ldmversion.c lddversion.c ldrversion.c \
ldpversion.c ldwversion.c ldcversion.c ldeversion.c ldpversion.c ldwversion.c ldcversion.c ldeversion.c lduversion.c
PROGRAMS = ldapsearch ldapmodify ldapdelete ldapmodrdn \ PROGRAMS = ldapsearch ldapmodify ldapdelete ldapmodrdn \
ldappasswd ldapwhoami ldapcompare ldapexop ldappasswd ldapwhoami ldapcompare ldapexop ldapurl
ldapsearch: ldsversion.o ldapsearch: ldsversion.o
...@@ -59,6 +59,9 @@ ldapcompare: ldcversion.o ...@@ -59,6 +59,9 @@ ldapcompare: ldcversion.o
ldapexop: ldeversion.o ldapexop: ldeversion.o
$(LTLINK) -o $@ ldapexop.o common.o ldeversion.o $(LIBS) $(LTLINK) -o $@ ldapexop.o common.o ldeversion.o $(LIBS)
ldapurl: lduversion.o
$(LTLINK) -o $@ ldapurl.o lduversion.o $(LIBS)
ldsversion.c: Makefile ldsversion.c: Makefile
@-$(RM) $@ @-$(RM) $@
$(MKVERSION) $(MKVOPTS) ldapsearch > $@ $(MKVERSION) $(MKVOPTS) ldapsearch > $@
...@@ -107,6 +110,12 @@ ldeversion.c: Makefile ...@@ -107,6 +110,12 @@ ldeversion.c: Makefile
ldeversion.o: ldapexop.o common.o $(XLIBS) ldeversion.o: ldapexop.o common.o $(XLIBS)
lduversion.c: Makefile
@-$(RM) $@
$(MKVERSION) $(MKVOPTS) ldapurl > $@
lduversion.o: ldapurl.o $(XLIBS)
install-local: FORCE install-local: FORCE
-$(MKDIR) $(DESTDIR)$(bindir) -$(MKDIR) $(DESTDIR)$(bindir)
@( \ @( \
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* $OpenLDAP$ */ /* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
* *
* Copyright 1998-2008 The OpenLDAP Foundation. * Copyright 1998-2009 The OpenLDAP Foundation.
* Portions Copyright 2003 Kurt D. Zeilenga. * Portions Copyright 2003 Kurt D. Zeilenga.
* Portions Copyright 2003 IBM Corporation. * Portions Copyright 2003 IBM Corporation.
* All rights reserved. * All rights reserved.
...@@ -62,6 +62,7 @@ int contoper = 0; ...@@ -62,6 +62,7 @@ int contoper = 0;
int debug = 0; int debug = 0;
char *infile = NULL; char *infile = NULL;
int dont = 0; int dont = 0;
int nocanon = 0;
int referrals = 0; int referrals = 0;
int verbose = 0; int verbose = 0;
int ldif = 0; int ldif = 0;
...@@ -93,6 +94,7 @@ char *sasl_secprops = NULL; ...@@ -93,6 +94,7 @@ char *sasl_secprops = NULL;
/* controls */ /* controls */
int assertctl; int assertctl;
char *assertion = NULL; char *assertion = NULL;
struct berval assertionvalue = BER_BVNULL;
char *authzid = NULL; char *authzid = NULL;
/* support deprecated early version of proxyAuthz */ /* support deprecated early version of proxyAuthz */
#define LDAP_CONTROL_OBSOLETE_PROXY_AUTHZ "2.16.840.1.113730.3.4.12" #define LDAP_CONTROL_OBSOLETE_PROXY_AUTHZ "2.16.840.1.113730.3.4.12"
...@@ -133,6 +135,13 @@ static int print_paged_results( LDAP *ld, LDAPControl *ctrl ); ...@@ -133,6 +135,13 @@ static int print_paged_results( LDAP *ld, LDAPControl *ctrl );
#ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST #ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST
static int print_ppolicy( LDAP *ld, LDAPControl *ctrl ); static int print_ppolicy( LDAP *ld, LDAPControl *ctrl );
#endif #endif
static int print_sss( LDAP *ld, LDAPControl *ctrl );
#ifdef LDAP_CONTROL_X_DEREF
static int print_deref( LDAP *ld, LDAPControl *ctrl );
#endif
#ifdef LDAP_CONTROL_X_WHATFAILED
static int print_whatfailed( LDAP *ld, LDAPControl *ctrl );
#endif
static struct tool_ctrls_t { static struct tool_ctrls_t {
const char *oid; const char *oid;
...@@ -144,6 +153,13 @@ static struct tool_ctrls_t { ...@@ -144,6 +153,13 @@ static struct tool_ctrls_t {
{ LDAP_CONTROL_PAGEDRESULTS, TOOL_SEARCH, print_paged_results }, { LDAP_CONTROL_PAGEDRESULTS, TOOL_SEARCH, print_paged_results },
#ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST #ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST
{ LDAP_CONTROL_PASSWORDPOLICYRESPONSE, TOOL_ALL, print_ppolicy }, { LDAP_CONTROL_PASSWORDPOLICYRESPONSE, TOOL_ALL, print_ppolicy },
#endif
{ LDAP_CONTROL_SORTRESPONSE, TOOL_SEARCH, print_sss },
#ifdef LDAP_CONTROL_X_DEREF
{ LDAP_CONTROL_X_DEREF, TOOL_SEARCH, print_deref },
#endif
#ifdef LDAP_CONTROL_X_WHATFAILED
{ LDAP_CONTROL_X_WHATFAILED, TOOL_ALL, print_whatfailed },
#endif #endif
{ NULL, 0, NULL } { NULL, 0, NULL }
}; };
...@@ -234,6 +250,14 @@ tool_destroy( void ) ...@@ -234,6 +250,14 @@ tool_destroy( void )
pr_cookie.bv_val = NULL; pr_cookie.bv_val = NULL;
pr_cookie.bv_len = 0; pr_cookie.bv_len = 0;
} }
if ( binddn != NULL ) {
ber_memfree( binddn );
}
if ( passwd.bv_val != NULL ) {
ber_memfree( passwd.bv_val );
}
} }
void void
...@@ -244,8 +268,8 @@ N_(" -c continuous operation mode (do not stop on errors)\n"), ...@@ -244,8 +268,8 @@ N_(" -c continuous operation mode (do not stop on errors)\n"),
N_(" -d level set LDAP debugging level to `level'\n"), N_(" -d level set LDAP debugging level to `level'\n"),
N_(" -D binddn bind DN\n"), N_(" -D binddn bind DN\n"),
N_(" -e [!]<ext>[=<extparam>] general extensions (! indicates criticality)\n") N_(" -e [!]<ext>[=<extparam>] general extensions (! indicates criticality)\n")
N_(" [!]assert=<filter> (a RFC 4515 Filter string)\n") N_(" [!]assert=<filter> (RFC 4528; a RFC 4515 Filter string)\n")
N_(" [!]authzid=<authzid> (\"dn:<dn>\" or \"u:<user>\")\n") N_(" [!]authzid=<authzid> (RFC 4370; \"dn:<dn>\" or \"u:<user>\")\n")
#ifdef LDAP_CONTROL_OBSOLETE_PROXY_AUTHZ #ifdef LDAP_CONTROL_OBSOLETE_PROXY_AUTHZ
#if 0 #if 0
/* non-advertized support for proxyDN */ /* non-advertized support for proxyDN */
...@@ -257,13 +281,13 @@ N_(" [!]chaining[=<resolveBehavior>[/<continuationBehavior>]]\n") ...@@ -257,13 +281,13 @@ N_(" [!]chaining[=<resolveBehavior>[/<continuationBehavior>]]\n")
N_(" one of \"chainingPreferred\", \"chainingRequired\",\n") N_(" one of \"chainingPreferred\", \"chainingRequired\",\n")
N_(" \"referralsPreferred\", \"referralsRequired\"\n") N_(" \"referralsPreferred\", \"referralsRequired\"\n")
#endif /* LDAP_CONTROL_X_CHAINING_BEHAVIOR */ #endif /* LDAP_CONTROL_X_CHAINING_BEHAVIOR */
N_(" [!]manageDSAit\n") N_(" [!]manageDSAit (RFC 3296)\n")
N_(" [!]noop\n") N_(" [!]noop\n")
#ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST #ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST
N_(" ppolicy\n") N_(" ppolicy\n")
#endif #endif
N_(" [!]postread[=<attrs>] (a comma-separated attribute list)\n") N_(" [!]postread[=<attrs>] (RFC 4527; comma-separated attr list)\n")
N_(" [!]preread[=<attrs>] (a comma-separated attribute list)\n") N_(" [!]preread[=<attrs>] (RFC 4527; comma-separated attr list)\n")
N_(" [!]relax\n") N_(" [!]relax\n")
#ifdef LDAP_CONTROL_X_SESSION_TRACKING #ifdef LDAP_CONTROL_X_SESSION_TRACKING
N_(" [!]sessiontracking\n") N_(" [!]sessiontracking\n")
...@@ -277,6 +301,7 @@ N_(" -H URI LDAP Uniform Resource Identifier(s)\n"), ...@@ -277,6 +301,7 @@ N_(" -H URI LDAP Uniform Resource Identifier(s)\n"),
N_(" -I use SASL Interactive mode\n"), N_(" -I use SASL Interactive mode\n"),
N_(" -M enable Manage DSA IT control (-MM to make critical)\n"), N_(" -M enable Manage DSA IT control (-MM to make critical)\n"),
N_(" -n show what would be done but don't actually do it\n"), N_(" -n show what would be done but don't actually do it\n"),
N_(" -N do not use reverse DNS to canonicalize SASL host name\n"),
N_(" -O props SASL security properties\n"), N_(" -O props SASL security properties\n"),
N_(" -o <opt>[=<optparam] general options\n"), N_(" -o <opt>[=<optparam] general options\n"),
N_(" nettimeout=<timeout> (in seconds, or \"none\" or \"max\")\n"), N_(" nettimeout=<timeout> (in seconds, or \"none\" or \"max\")\n"),
...@@ -622,7 +647,7 @@ tool_args( int argc, char **argv ) ...@@ -622,7 +647,7 @@ tool_args( int argc, char **argv )
(unsigned char *)bv.bv_val, (unsigned char *)bv.bv_val,
bv.bv_len ); bv.bv_len );
if ( retcode == -1 || retcode > bv.bv_len ) { if ( retcode == -1 || (unsigned) retcode > bv.bv_len ) {
fprintf( stderr, "Unable to parse value of general control %s\n", fprintf( stderr, "Unable to parse value of general control %s\n",
control ); control );
usage(); usage();
...@@ -685,6 +710,9 @@ tool_args( int argc, char **argv ) ...@@ -685,6 +710,9 @@ tool_args( int argc, char **argv )
case 'n': /* print operations, don't actually do them */ case 'n': /* print operations, don't actually do them */
dont++; dont++;
break; break;
case 'N':
nocanon++;
break;
case 'o': case 'o':
control = ber_strdup( optarg ); control = ber_strdup( optarg );
if ( (cvalue = strchr( control, '=' )) != NULL ) { if ( (cvalue = strchr( control, '=' )) != NULL ) {
...@@ -978,7 +1006,11 @@ tool_args( int argc, char **argv ) ...@@ -978,7 +1006,11 @@ tool_args( int argc, char **argv )
if (authmethod == -1 && protocol > LDAP_VERSION2) { if (authmethod == -1 && protocol > LDAP_VERSION2) {
#ifdef HAVE_CYRUS_SASL #ifdef HAVE_CYRUS_SASL
authmethod = LDAP_AUTH_SASL; if ( binddn != NULL ) {
authmethod = LDAP_AUTH_SIMPLE;
} else {
authmethod = LDAP_AUTH_SASL;
}
#else #else
authmethod = LDAP_AUTH_SIMPLE; authmethod = LDAP_AUTH_SIMPLE;
#endif #endif
...@@ -1231,6 +1263,16 @@ dnssrv_free:; ...@@ -1231,6 +1263,16 @@ dnssrv_free:;
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
#ifdef HAVE_CYRUS_SASL
/* canon */
if( ldap_set_option( ld, LDAP_OPT_X_SASL_NOCANON,
nocanon ? LDAP_OPT_ON : LDAP_OPT_OFF ) != LDAP_OPT_SUCCESS )
{
fprintf( stderr, "Could not set LDAP_OPT_X_SASL_NOCANON %s\n",
nocanon ? "on" : "off" );
exit( EXIT_FAILURE );
}
#endif
if( ldap_set_option( ld, LDAP_OPT_PROTOCOL_VERSION, &protocol ) if( ldap_set_option( ld, LDAP_OPT_PROTOCOL_VERSION, &protocol )
!= LDAP_OPT_SUCCESS ) != LDAP_OPT_SUCCESS )
{ {
...@@ -1307,7 +1349,7 @@ tool_bind( LDAP *ld ) ...@@ -1307,7 +1349,7 @@ tool_bind( LDAP *ld )
sctrlsp = sctrls; sctrlsp = sctrls;
} }
assert( nsctrls < sizeof(sctrls)/sizeof(sctrls[0]) ); assert( nsctrls < (int) (sizeof(sctrls)/sizeof(sctrls[0])) );
if ( authmethod == LDAP_AUTH_SASL ) { if ( authmethod == LDAP_AUTH_SASL ) {
#ifdef HAVE_CYRUS_SASL #ifdef HAVE_CYRUS_SASL
...@@ -1485,29 +1527,18 @@ tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count ) ...@@ -1485,29 +1527,18 @@ tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count )
} }
if ( assertctl ) { if ( assertctl ) {
BerElementBuffer berbuf; if ( BER_BVISNULL( &assertionvalue ) ) {
BerElement *ber = (BerElement *)&berbuf; err = ldap_create_assertion_control_value( ld,
assertion, &assertionvalue );
if( assertion == NULL || *assertion == '\0' ) { if ( err ) {
fprintf( stderr, "Assertion=<empty>\n" ); fprintf( stderr,
exit( EXIT_FAILURE ); "Unable to create assertion value "
} "\"%s\" (%d)\n", assertion, err );
}
ber_init2( ber, NULL, LBER_USE_DER );
err = ldap_pvt_put_filter( ber, assertion );
if( err < 0 ) {
fprintf( stderr, "assertion encode failed (%d)\n", err );
exit( EXIT_FAILURE );
}
err = ber_flatten2( ber, &c[i].ldctl_value, 0 );
if( err < 0 ) {
fprintf( stderr, "assertion flatten failed (%d)\n", err );
exit( EXIT_FAILURE );
} }
c[i].ldctl_oid = LDAP_CONTROL_ASSERT; c[i].ldctl_oid = LDAP_CONTROL_ASSERT;
c[i].ldctl_value = assertionvalue;
c[i].ldctl_iscritical = assertctl > 1; c[i].ldctl_iscritical = assertctl > 1;
ctrls[i] = &c[i]; ctrls[i] = &c[i];
i++; i++;
...@@ -1531,7 +1562,7 @@ tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count ) ...@@ -1531,7 +1562,7 @@ tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count )
ber_init2( ber, NULL, LBER_USE_DER ); ber_init2( ber, NULL, LBER_USE_DER );
if ( ber_printf( ber, "s", proxydn ) == LBER_ERROR ) { if ( ber_printf( ber, "s", proxydn ) == -1 ) {
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} }
...@@ -1581,8 +1612,8 @@ tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count ) ...@@ -1581,8 +1612,8 @@ tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count )
#endif #endif
if ( preread ) { if ( preread ) {
char berbuf[LBER_ELEMENT_SIZEOF]; BerElementBuffer berbuf;
BerElement *ber = (BerElement *)berbuf; BerElement *ber = (BerElement *)&berbuf;
char **attrs = NULL; char **attrs = NULL;
if( preread_attrs ) { if( preread_attrs ) {
...@@ -1611,8 +1642,8 @@ tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count ) ...@@ -1611,8 +1642,8 @@ tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count )
} }
if ( postread ) { if ( postread ) {
char berbuf[LBER_ELEMENT_SIZEOF]; BerElementBuffer berbuf;
BerElement *ber = (BerElement *)berbuf; BerElement *ber = (BerElement *)&berbuf;
char **attrs = NULL; char **attrs = NULL;
if( postread_attrs ) { if( postread_attrs ) {
...@@ -1874,6 +1905,154 @@ print_paged_results( LDAP *ld, LDAPControl *ctrl ) ...@@ -1874,6 +1905,154 @@ print_paged_results( LDAP *ld, LDAPControl *ctrl )
return 0; return 0;
} }
static int
print_sss( LDAP *ld, LDAPControl *ctrl )
{
int rc;
ber_int_t err;
char *attr;
rc = ldap_parse_sortresponse_control( ld, ctrl, &err, &attr );
if ( rc == LDAP_SUCCESS ) {
char buf[ BUFSIZ ];
rc = snprintf( buf, sizeof(buf), "(%d) %s %s",
err, ldap_err2string(err), attr ? attr : "" );
tool_write_ldif( ldif ? LDIF_PUT_COMMENT : LDIF_PUT_VALUE,
"sortResult", buf, rc );
}
return rc;
}
#ifdef LDAP_CONTROL_X_DEREF
static int
print_deref( LDAP *ld, LDAPControl *ctrl )
{
LDAPDerefRes *drhead = NULL, *dr;
int rc;
rc = ldap_parse_derefresponse_control( ld, ctrl, &drhead );
if ( rc != LDAP_SUCCESS ) {
return rc;
}
for ( dr = drhead; dr != NULL; dr = dr->next ) {
LDAPDerefVal *dv;
ber_len_t len;
char *buf, *ptr;
len = strlen( dr->derefAttr ) + STRLENOF(": ");
for ( dv = dr->attrVals; dv != NULL; dv = dv->next ) {
if ( dv->vals != NULL ) {
int j;
ber_len_t tlen = strlen(dv->type);
for ( j = 0; dv->vals[ j ].bv_val != NULL; j++ ) {
len += STRLENOF("<:=>;") + tlen + 4*((dv->vals[ j ].bv_len - 1)/3 + 1);
}
}
}
len += dr->derefVal.bv_len + STRLENOF("\n");
buf = ldap_memalloc( len + 1 );
if ( buf == NULL ) {
rc = LDAP_NO_MEMORY;
goto done;
}
ptr = buf;
ptr = lutil_strcopy( ptr, dr->derefAttr );
*ptr++ = ':';
*ptr++ = ' ';
for ( dv = dr->attrVals; dv != NULL; dv = dv->next ) {
if ( dv->vals != NULL ) {
int j;
for ( j = 0; dv->vals[ j ].bv_val != NULL; j++ ) {
int k;
for ( k = 0; k < dv->vals[ j ].bv_len; k++ ) {
if ( !isprint( dv->vals[ j ].bv_val[k] ) ) {
k = -1;
break;
}
}
*ptr++ = '<';
ptr = lutil_strcopy( ptr, dv->type );
if ( k == -1 ) {
*ptr++ = ':';
}
*ptr++ = '=';
if ( k == -1 ) {
k = lutil_b64_ntop( dv->vals[ j ].bv_val, dv->vals[ j ].bv_len, ptr, buf + len - ptr );
assert( k >= 0 );
ptr += k;
} else {
ptr = lutil_memcopy( ptr, dv->vals[ j ].bv_val, dv->vals[ j ].bv_len );
}
*ptr++ = '>';
*ptr++ = ';';
}
}
}
ptr = lutil_strncopy( ptr, dr->derefVal.bv_val, dr->derefVal.bv_len );
*ptr++ = '\n';
*ptr++ = '\0';
assert( ptr <= buf + len );
tool_write_ldif( LDIF_PUT_COMMENT, NULL, buf, ptr - buf);
ldap_memfree( buf );
}
rc = LDAP_SUCCESS;
done:;
ldap_derefresponse_free( drhead );
return rc;
}
#endif
#ifdef LDAP_CONTROL_X_WHATFAILED
static int
print_whatfailed( LDAP *ld, LDAPControl *ctrl )
{
BerElement *ber;
ber_tag_t tag;
ber_len_t siz;
BerVarray bva = NULL;
/* Create a BerElement from the berval returned in the control. */
ber = ber_init( &ctrl->ldctl_value );
if ( ber == NULL ) {
return LDAP_NO_MEMORY;
}
siz = sizeof(struct berval);
tag = ber_scanf( ber, "[M]", &bva, &siz, 0 );
if ( tag != LBER_ERROR ) {
int i;
tool_write_ldif( LDIF_PUT_COMMENT, " what failed:", NULL, 0 );
for ( i = 0; bva[i].bv_val != NULL; i++ ) {
tool_write_ldif( LDIF_PUT_COMMENT, NULL, bva[i].bv_val, bva[i].bv_len );
}
ldap_memfree( bva );
}
ber_free( ber, 1 );
return 0;
}
#endif
#ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST #ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST
static int static int
print_ppolicy( LDAP *ld, LDAPControl *ctrl ) print_ppolicy( LDAP *ld, LDAPControl *ctrl )
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* $OpenLDAP$ */ /* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
* *
* Copyright 1998-2008 The OpenLDAP Foundation. * Copyright 1998-2009 The OpenLDAP Foundation.
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* $OpenLDAP$ */ /* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
* *
* Copyright 1998-2008 The OpenLDAP Foundation. * Copyright 1998-2009 The OpenLDAP Foundation.
* Portions Copyright 1998-2003 Kurt D. Zeilenga. * Portions Copyright 1998-2003 Kurt D. Zeilenga.
* Portions Copyright 1998-2001 Net Boolean Incorporated. * Portions Copyright 1998-2001 Net Boolean Incorporated.
* All rights reserved. * All rights reserved.
...@@ -102,7 +102,7 @@ static int docompare LDAP_P(( ...@@ -102,7 +102,7 @@ static int docompare LDAP_P((
const char options[] = "z" const char options[] = "z"
"Cd:D:e:h:H:IMnO:o:p:P:QR:U:vVw:WxX:y:Y:Z"; "Cd:D:e:h:H:IMnNO:o:p:P:QR:U:vVw:WxX:y:Y:Z";
#ifdef LDAP_CONTROL_DONTUSECOPY #ifdef LDAP_CONTROL_DONTUSECOPY
int dontUseCopy = 0; int dontUseCopy = 0;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* $OpenLDAP$ */ /* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
* *
* Copyright 1998-2008 The OpenLDAP Foundation. * Copyright 1998-2009 The OpenLDAP Foundation.
* Portions Copyright 1998-2003 Kurt D. Zeilenga. * Portions Copyright 1998-2003 Kurt D. Zeilenga.
* All rights reserved. * All rights reserved.
* *
...@@ -78,7 +78,7 @@ usage( void ) ...@@ -78,7 +78,7 @@ usage( void )
const char options[] = "r" const char options[] = "r"
"cd:D:e:f:h:H:IMnO:o:p:P:QR:U:vVw:WxX:y:Y:z:Z"; "cd:D:e:f:h:H:IMnNO:o:p:P:QR:U:vVw:WxX:y:Y:z:Z";
int int
handle_private_option( int i ) handle_private_option( int i )
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* $OpenLDAP$ */ /* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
* *
* Copyright 2005-2008 The OpenLDAP Foundation. * Copyright 2005-2009 The OpenLDAP Foundation.
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
...@@ -49,7 +49,7 @@ usage( void ) ...@@ -49,7 +49,7 @@ usage( void )
const char options[] = "" const char options[] = ""
"d:D:e:h:H:InO:o:p:QR:U:vVw:WxX:y:Y:Z"; "d:D:e:h:H:InNO:o:p:QR:U:vVw:WxX:y:Y:Z";
int int
handle_private_option( int i ) handle_private_option( int i )
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* $OpenLDAP$ */ /* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
* *
* Copyright 1998-2008 The OpenLDAP Foundation. * Copyright 1998-2009 The OpenLDAP Foundation.
* Portions Copyright 2006 Howard Chu. * Portions Copyright 2006 Howard Chu.
* Portions Copyright 1998-2003 Kurt D. Zeilenga. * Portions Copyright 1998-2003 Kurt D. Zeilenga.
* Portions Copyright 1998-2001 Net Boolean Incorporated. * Portions Copyright 1998-2001 Net Boolean Incorporated.
...@@ -95,8 +95,8 @@ static struct berval BV_NEWRDN = BER_BVC("newrdn"); ...@@ -95,8 +95,8 @@ static struct berval BV_NEWRDN = BER_BVC("newrdn");
static struct berval BV_DELETEOLDRDN = BER_BVC("deleteoldrdn"); static struct berval BV_DELETEOLDRDN = BER_BVC("deleteoldrdn");
static struct berval BV_NEWSUP = BER_BVC("newsuperior"); static struct berval BV_NEWSUP = BER_BVC("newsuperior");
#define BVICMP(a,b) ((a)->bv_len != (b)->bv_len ? \ #define BV_CASEMATCH(a, b) \
(a)->bv_len - (b)->bv_len : strcasecmp((a)->bv_val, (b)->bv_val)) ((a)->bv_len == (b)->bv_len && 0 == strcasecmp((a)->bv_val, (b)->bv_val))
static int process_ldif_rec LDAP_P(( char *rbuf, int lineno )); static int process_ldif_rec LDAP_P(( char *rbuf, int lineno ));
static int parse_ldif_control LDAP_P(( struct berval *val, LDAPControl ***pctrls )); static int parse_ldif_control LDAP_P(( struct berval *val, LDAPControl ***pctrls ));
...@@ -151,7 +151,7 @@ usage( void ) ...@@ -151,7 +151,7 @@ usage( void )
const char options[] = "aE:rS:" const char options[] = "aE:rS:"
"cd:D:e:f:h:H:IMnO:o:p:P:QR:U:vVw:WxX:y:Y:Z"; "cd:D:e:f:h:H:IMnNO:o:p:P:QR:U:vVw:WxX:y:Y:Z";
int int
handle_private_option( int i ) handle_private_option( int i )
...@@ -457,7 +457,7 @@ process_ldif_rec( char *rbuf, int linenum ) ...@@ -457,7 +457,7 @@ process_ldif_rec( char *rbuf, int linenum )
freeval[i] = freev; freeval[i] = freev;
if ( dn == NULL ) { if ( dn == NULL ) {
if ( linenum+i == 1 && !BVICMP( btype+i, &BV_VERSION )) { if ( linenum+i == 1 && BV_CASEMATCH( btype+i, &BV_VERSION )) {
int v; int v;
if( vals[i].bv_len == 0 || lutil_atoi( &v, vals[i].bv_val) != 0 || v != 1 ) { if( vals[i].bv_len == 0 || lutil_atoi( &v, vals[i].bv_val) != 0 || v != 1 ) {
fprintf( stderr, fprintf( stderr,
...@@ -466,7 +466,7 @@ process_ldif_rec( char *rbuf, int linenum ) ...@@ -466,7 +466,7 @@ process_ldif_rec( char *rbuf, int linenum )
} }
version++; version++;
} else if ( !BVICMP( btype+i, &BV_DN )) { } else if ( BV_CASEMATCH( btype+i, &BV_DN )) {
dn = vals[i].bv_val; dn = vals[i].bv_val;
idn = i; idn = i;
} }
...@@ -494,7 +494,7 @@ process_ldif_rec( char *rbuf, int linenum ) ...@@ -494,7 +494,7 @@ process_ldif_rec( char *rbuf, int linenum )
i = idn+1; i = idn+1;
/* Check for "control" tag after dn and before changetype. */ /* Check for "control" tag after dn and before changetype. */
if (!BVICMP( btype+i, &BV_CONTROL)) { if ( BV_CASEMATCH( btype+i, &BV_CONTROL )) {
/* Parse and add it to the list of controls */ /* Parse and add it to the list of controls */
rc = parse_ldif_control( vals+i, &pctrls ); rc = parse_ldif_control( vals+i, &pctrls );
if (rc != 0) { if (rc != 0) {
...@@ -515,7 +515,7 @@ short_input: ...@@ -515,7 +515,7 @@ short_input:
} }
/* Check for changetype */ /* Check for changetype */
if ( !BVICMP( btype+i, &BV_CHANGETYPE )) { if ( BV_CASEMATCH( btype+i, &BV_CHANGETYPE )) {
#ifdef LIBERAL_CHANGETYPE_MODOP #ifdef LIBERAL_CHANGETYPE_MODOP
/* trim trailing spaces (and log warning ...) */ /* trim trailing spaces (and log warning ...) */
int icnt; int icnt;
...@@ -533,20 +533,20 @@ short_input: ...@@ -533,20 +533,20 @@ short_input:
} }
#endif /* LIBERAL_CHANGETYPE_MODOP */ #endif /* LIBERAL_CHANGETYPE_MODOP */
if ( BVICMP( vals+i, &BV_MODIFYCT ) == 0 ) { if ( BV_CASEMATCH( vals+i, &BV_MODIFYCT )) {
new_entry = 0; new_entry = 0;
expect_modop = 1; expect_modop = 1;
} else if ( BVICMP( vals+i, &BV_ADDCT ) == 0 ) { } else if ( BV_CASEMATCH( vals+i, &BV_ADDCT )) {
new_entry = 1; new_entry = 1;
modop = LDAP_MOD_ADD; modop = LDAP_MOD_ADD;
} else if ( BVICMP( vals+i, &BV_MODRDNCT ) == 0 } else if ( BV_CASEMATCH( vals+i, &BV_MODRDNCT )
|| BVICMP( vals+i, &BV_MODDNCT ) == 0 || BV_CASEMATCH( vals+i, &BV_MODDNCT )
|| BVICMP( vals+i, &BV_RENAMECT ) == 0) || BV_CASEMATCH( vals+i, &BV_RENAMECT ))
{ {
i++; i++;
if ( i >= lines ) if ( i >= lines )
goto short_input; goto short_input;
if ( BVICMP( btype+i, &BV_NEWRDN )) { if ( !BV_CASEMATCH( btype+i, &BV_NEWRDN )) {
fprintf( stderr, _("%s: expecting \"%s:\" but saw" fprintf( stderr, _("%s: expecting \"%s:\" but saw"
" \"%s:\" (line %d, entry \"%s\")\n"), " \"%s:\" (line %d, entry \"%s\")\n"),
prog, BV_NEWRDN.bv_val, btype[i].bv_val, linenum+i, dn ); prog, BV_NEWRDN.bv_val, btype[i].bv_val, linenum+i, dn );
...@@ -557,7 +557,7 @@ short_input: ...@@ -557,7 +557,7 @@ short_input:
i++; i++;
if ( i >= lines ) if ( i >= lines )
goto short_input; goto short_input;
if ( BVICMP( btype+i, &BV_DELETEOLDRDN )) { if ( !BV_CASEMATCH( btype+i, &BV_DELETEOLDRDN )) {
fprintf( stderr, _("%s: expecting \"%s:\" but saw" fprintf( stderr, _("%s: expecting \"%s:\" but saw"
" \"%s:\" (line %d, entry \"%s\")\n"), " \"%s:\" (line %d, entry \"%s\")\n"),
prog, BV_DELETEOLDRDN.bv_val, btype[i].bv_val, linenum+i, dn ); prog, BV_DELETEOLDRDN.bv_val, btype[i].bv_val, linenum+i, dn );
...@@ -567,7 +567,7 @@ short_input: ...@@ -567,7 +567,7 @@ short_input:
deleteoldrdn = ( vals[i].bv_val[0] == '0' ) ? 0 : 1; deleteoldrdn = ( vals[i].bv_val[0] == '0' ) ? 0 : 1;
i++; i++;
if ( i < lines ) { if ( i < lines ) {
if ( BVICMP( btype+i, &BV_NEWSUP )) { if ( !BV_CASEMATCH( btype+i, &BV_NEWSUP )) {
fprintf( stderr, _("%s: expecting \"%s:\" but saw" fprintf( stderr, _("%s: expecting \"%s:\" but saw"
" \"%s:\" (line %d, entry \"%s\")\n"), " \"%s:\" (line %d, entry \"%s\")\n"),
prog, BV_NEWSUP.bv_val, btype[i].bv_val, linenum+i, dn ); prog, BV_NEWSUP.bv_val, btype[i].bv_val, linenum+i, dn );
...@@ -578,7 +578,7 @@ short_input: ...@@ -578,7 +578,7 @@ short_input:
i++; i++;
} }
got_all = 1; got_all = 1;
} else if ( BVICMP( vals+i, &BV_DELETECT ) == 0 ) { } else if ( BV_CASEMATCH( vals+i, &BV_DELETECT )) {
got_all = delete_entry = 1; got_all = delete_entry = 1;
} else { } else {
fprintf( stderr, fprintf( stderr,
...@@ -615,7 +615,7 @@ short_input: ...@@ -615,7 +615,7 @@ short_input:
/* Make sure all attributes with multiple values are contiguous */ /* Make sure all attributes with multiple values are contiguous */
for (; i<lines; i++) { for (; i<lines; i++) {
for (j=i+1; j<lines; j++) { for (j=i+1; j<lines; j++) {
if ( !BVICMP( btype+i, btype+j )) { if ( BV_CASEMATCH( btype+i, btype+j )) {
nmods--; nmods--;
/* out of order, move intervening attributes down */ /* out of order, move intervening attributes down */
if ( j != i+1 ) { if ( j != i+1 ) {
...@@ -649,13 +649,13 @@ short_input: ...@@ -649,13 +649,13 @@ short_input:
k = -1; k = -1;
BER_BVZERO(&bv); BER_BVZERO(&bv);
for (i=idn; i<lines; i++) { for (i=idn; i<lines; i++) {
if ( !BVICMP( btype+i, &BV_DN )) { if ( BV_CASEMATCH( btype+i, &BV_DN )) {
fprintf( stderr, _("%s: attributeDescription \"%s\":" fprintf( stderr, _("%s: attributeDescription \"%s\":"
" (possible missing newline" " (possible missing newline"
" after line %d, entry \"%s\"?)\n"), " after line %d, entry \"%s\"?)\n"),
prog, btype[i].bv_val, linenum+i - 1, dn ); prog, btype[i].bv_val, linenum+i - 1, dn );
} }
if ( BVICMP(btype+i,&bv)) { if ( !BV_CASEMATCH( btype+i, &bv )) {
bvl[k++] = NULL; bvl[k++] = NULL;
bv = btype[i]; bv = btype[i];
lm[j].mod_op = LDAP_MOD_ADD | LDAP_MOD_BVALUES; lm[j].mod_op = LDAP_MOD_ADD | LDAP_MOD_BVALUES;
...@@ -694,11 +694,11 @@ short_input: ...@@ -694,11 +694,11 @@ short_input:
expect_modop = 0; expect_modop = 0;
expect_sep = 1; expect_sep = 1;
if ( BVICMP( btype+i, &BV_MODOPADD ) == 0 ) { if ( BV_CASEMATCH( btype+i, &BV_MODOPADD )) {
modop = LDAP_MOD_ADD; modop = LDAP_MOD_ADD;
mops[i] = M_SEP; mops[i] = M_SEP;
nmods--; nmods--;
} else if ( BVICMP( btype+i, &BV_MODOPREPLACE ) == 0 ) { } else if ( BV_CASEMATCH( btype+i, &BV_MODOPREPLACE )) {
/* defer handling these since they might have no values. /* defer handling these since they might have no values.
* Use the BVALUES flag to signal that these were * Use the BVALUES flag to signal that these were
* deferred. If values are provided later, this * deferred. If values are provided later, this
...@@ -707,11 +707,11 @@ short_input: ...@@ -707,11 +707,11 @@ short_input:
modop = LDAP_MOD_REPLACE; modop = LDAP_MOD_REPLACE;
mops[i] = modop | LDAP_MOD_BVALUES; mops[i] = modop | LDAP_MOD_BVALUES;
btype[i] = vals[i]; btype[i] = vals[i];
} else if ( BVICMP( btype+i, &BV_MODOPDELETE ) == 0 ) { } else if ( BV_CASEMATCH( btype+i, &BV_MODOPDELETE )) {
modop = LDAP_MOD_DELETE; modop = LDAP_MOD_DELETE;
mops[i] = modop | LDAP_MOD_BVALUES; mops[i] = modop | LDAP_MOD_BVALUES;
btype[i] = vals[i]; btype[i] = vals[i];
} else if ( BVICMP( btype+i, &BV_MODOPINCREMENT ) == 0 ) { } else if ( BV_CASEMATCH( btype+i, &BV_MODOPINCREMENT )) {
modop = LDAP_MOD_INCREMENT; modop = LDAP_MOD_INCREMENT;
mops[i] = M_SEP; mops[i] = M_SEP;
nmods--; nmods--;
...@@ -729,7 +729,7 @@ short_input: ...@@ -729,7 +729,7 @@ short_input:
expect_modop = 1; expect_modop = 1;
nmods--; nmods--;
} else { } else {
if ( BVICMP( btype+i, &bv )) { if ( !BV_CASEMATCH( btype+i, &bv )) {
fprintf( stderr, _("%s: wrong attributeType at" fprintf( stderr, _("%s: wrong attributeType at"
" line %d, entry \"%s\"\n"), " line %d, entry \"%s\"\n"),
prog, linenum+i, dn ); prog, linenum+i, dn );
...@@ -740,8 +740,9 @@ short_input: ...@@ -740,8 +740,9 @@ short_input:
/* If prev op was deferred and matches this type, /* If prev op was deferred and matches this type,
* clear the flag * clear the flag
*/ */
if ( (mops[i-1]&LDAP_MOD_BVALUES) && !BVICMP(btype+i, if ( (mops[i-1] & LDAP_MOD_BVALUES)
btype+i-1)) { && BV_CASEMATCH( btype+i, btype+i-1 ))
{
mops[i-1] = M_SEP; mops[i-1] = M_SEP;
nmods--; nmods--;
} }
...@@ -756,7 +757,7 @@ short_input: ...@@ -756,7 +757,7 @@ short_input:
for (j=i+1; j<lines; j++) { for (j=i+1; j<lines; j++) {
if ( mops[j] == M_SEP || mops[i] != mops[j] ) if ( mops[j] == M_SEP || mops[i] != mops[j] )
continue; continue;
if ( !BVICMP( btype+i, btype+j )) { if ( BV_CASEMATCH( btype+i, btype+j )) {
nmods--; nmods--;
/* out of order, move intervening attributes down */ /* out of order, move intervening attributes down */
if ( j != i+1 ) { if ( j != i+1 ) {
...@@ -802,7 +803,7 @@ short_input: ...@@ -802,7 +803,7 @@ short_input:
for (i=idn; i<lines; i++) { for (i=idn; i<lines; i++) {
if ( mops[i] == M_SEP ) if ( mops[i] == M_SEP )
continue; continue;
if ( mops[i] != mops[i-1] || BVICMP(btype+i,&bv)) { if ( mops[i] != mops[i-1] || !BV_CASEMATCH( btype+i, &bv )) {
bvl[k++] = NULL; bvl[k++] = NULL;
bv = btype[i]; bv = btype[i];
lm[j].mod_op = mops[i] | LDAP_MOD_BVALUES; lm[j].mod_op = mops[i] | LDAP_MOD_BVALUES;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* $OpenLDAP$ */ /* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
* *
* Copyright 1998-2008 The OpenLDAP Foundation. * Copyright 1998-2009 The OpenLDAP Foundation.
* Portions Copyright 1998-2003 Kurt D. Zeilenga. * Portions Copyright 1998-2003 Kurt D. Zeilenga.
* Portions Copyright 1998-2001 Net Boolean Incorporated. * Portions Copyright 1998-2001 Net Boolean Incorporated.
* Portions Copyright 2001-2003 IBM Corporation. * Portions Copyright 2001-2003 IBM Corporation.
...@@ -91,7 +91,7 @@ usage( void ) ...@@ -91,7 +91,7 @@ usage( void )
const char options[] = "rs:" const char options[] = "rs:"
"cd:D:e:f:h:H:IMnO:o:p:P:QR:U:vVw:WxX:y:Y:Z"; "cd:D:e:f:h:H:IMnNO:o:p:P:QR:U:vVw:WxX:y:Y:Z";
int int
handle_private_option( int i ) handle_private_option( int i )
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* $OpenLDAP$ */ /* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
* *
* Copyright 1998-2008 The OpenLDAP Foundation. * Copyright 1998-2009 The OpenLDAP Foundation.
* Portions Copyright 1998-2003 Kurt D. Zeilenga. * Portions Copyright 1998-2003 Kurt D. Zeilenga.
* Portions Copyright 1998-2001 Net Boolean Incorporated. * Portions Copyright 1998-2001 Net Boolean Incorporated.
* Portions Copyright 2001-2003 IBM Corporation. * Portions Copyright 2001-2003 IBM Corporation.
...@@ -81,7 +81,7 @@ usage( void ) ...@@ -81,7 +81,7 @@ usage( void )
const char options[] = "a:As:St:T:" const char options[] = "a:As:St:T:"
"d:D:e:h:H:InO:o:p:QR:U:vVw:WxX:y:Y:Z"; "d:D:e:h:H:InNO:o:p:QR:U:vVw:WxX:y:Y:Z";
int int
handle_private_option( int i ) handle_private_option( int i )
...@@ -389,7 +389,6 @@ main( int argc, char *argv[] ) ...@@ -389,7 +389,6 @@ main( int argc, char *argv[] )
" new password expected", NULL, NULL, NULL ); " new password expected", NULL, NULL, NULL );
} }
skip:
if( verbose || code != LDAP_SUCCESS || if( verbose || code != LDAP_SUCCESS ||
matcheddn || text || refs || ctrls ) matcheddn || text || refs || ctrls )
{ {
......