[openldap/f13/master] startup error after converting to slapd-config

jvcelak jvcelak at fedoraproject.org
Thu Sep 16 12:08:16 UTC 2010


commit 4a68a7bc53df730f4ab6af185abfb4b41558719d
Author: Jan Vcelak <jvcelak at redhat.com>
Date:   Thu Sep 16 13:26:06 2010 +0200

    startup error after converting to slapd-config
    
    Resolves: #628726
    Upstream ITS: #6465

 openldap-2.4.21-config_emtpy_uri.patch |   55 +++++++++++++++++++++++++++++
 openldap-2.4.22-config_emtpy_uri.patch |   59 ++++++++++++++++++++++++++++++++
 openldap.spec                          |    7 +++-
 3 files changed, 120 insertions(+), 1 deletions(-)
---
diff --git a/openldap-2.4.21-config_emtpy_uri.patch b/openldap-2.4.21-config_emtpy_uri.patch
new file mode 100644
index 0000000..ffeb8a8
--- /dev/null
+++ b/openldap-2.4.21-config_emtpy_uri.patch
@@ -0,0 +1,55 @@
+Don't unparse empty uri string.
+
+Resolves: #628726
+Upstream ITS: #6465 (http://www.openldap.org/its/index.cgi/Software%20Bugs?id=6465)
+
+diff -urpNP openldap-2.4.21/servers/slapd/config.c openldap-2.4.21.new/servers/slapd/config.c
+--- openldap-2.4.21/servers/slapd/config.c	2009-12-12 07:18:52.000000000 +0100
++++ openldap-2.4.21.new/servers/slapd/config.c	2010-09-16 13:44:43.574647921 +0200
+@@ -1458,23 +1458,31 @@ slap_cf_aux_table_unparse( void *src, st
+ 			break;
+ 
+ 		case 'x':
+-			*ptr++ = ' ';
+-			ptr = lutil_strcopy( ptr, tab->key.bv_val );
+-			if ( tab->quote ) *ptr++ = '"';
+-			if ( tab->aux != NULL ) {
+-				struct berval value;
+-				slap_cf_aux_table_parse_x *func = (slap_cf_aux_table_parse_x *)tab->aux;
+-				int rc;
+-
+-				value.bv_val = ptr;
+-				value.bv_len = buf + sizeof( buf ) - ptr;
+-
+-				rc = func( &value, (void *)((char *)src + tab->off), tab, "(unparse)", 1 );
+-				if ( rc == 0 ) {
+-					ptr += value.bv_len;
++			{
++				char *saveptr=ptr;
++				*ptr++ = ' ';
++				ptr = lutil_strcopy( ptr, tab->key.bv_val );
++				if ( tab->quote ) *ptr++ = '"';
++				if ( tab->aux != NULL ) {
++					struct berval value;
++					slap_cf_aux_table_parse_x *func = (slap_cf_aux_table_parse_x *)tab->aux;
++					int rc;
++
++					value.bv_val = ptr;
++					value.bv_len = buf + sizeof( buf ) - ptr;
++
++					rc = func( &value, (void *)((char *)src + tab->off), tab, "(unparse)", 1 );
++					if ( rc == 0 ) {
++						if (value.bv_len) {
++							ptr += value.bv_len;
++						} else {
++							ptr = saveptr;
++							break;
++						}
++					}
+ 				}
++				if ( tab->quote ) *ptr++ = '"';
+ 			}
+-			if ( tab->quote ) *ptr++ = '"';
+ 			break;
+ 
+ 		default:
diff --git a/openldap-2.4.22-config_emtpy_uri.patch b/openldap-2.4.22-config_emtpy_uri.patch
new file mode 100644
index 0000000..a291e5e
--- /dev/null
+++ b/openldap-2.4.22-config_emtpy_uri.patch
@@ -0,0 +1,59 @@
+Don't unparse empty uri string.
+
+Resolves: #628726
+Upstream ITS: #6465 (http://www.openldap.org/its/index.cgi/Software%20Bugs?id=6465)
+
+--- config.c	2010-09-16 12:52:26.595773834 +0200
++++ config.c	2010-09-16 12:51:30.492649769 +0200
+@@ -1,5 +1,5 @@
+ /* config.c - configuration file handling routines */
+-/* $OpenLDAP: old/servers/slapd/config.c,v 1.512 2009/12/18 18:07:16 ando Exp $ */
++/* $OpenLDAP: new/servers/slapd/config.c,v 1.513 2010/02/02 13:43:21 ralf Exp $ */
+ /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+  *
+  * Copyright 1998-2009 The OpenLDAP Foundation.
+@@ -1545,23 +1545,31 @@
+ 			break;
+ 
+ 		case 'x':
+-			*ptr++ = ' ';
+-			ptr = lutil_strcopy( ptr, tab->key.bv_val );
+-			if ( tab->quote ) *ptr++ = '"';
+-			if ( tab->aux != NULL ) {
+-				struct berval value;
+-				slap_cf_aux_table_parse_x *func = (slap_cf_aux_table_parse_x *)tab->aux;
+-				int rc;
++			{
++				char *saveptr=ptr;
++				*ptr++ = ' ';
++				ptr = lutil_strcopy( ptr, tab->key.bv_val );
++				if ( tab->quote ) *ptr++ = '"';
++				if ( tab->aux != NULL ) {
++					struct berval value;
++					slap_cf_aux_table_parse_x *func = (slap_cf_aux_table_parse_x *)tab->aux;
++					int rc;
+ 
+-				value.bv_val = ptr;
+-				value.bv_len = buf + sizeof( buf ) - ptr;
++					value.bv_val = ptr;
++					value.bv_len = buf + sizeof( buf ) - ptr;
+ 
+-				rc = func( &value, (void *)((char *)src + tab->off), tab, "(unparse)", 1 );
+-				if ( rc == 0 ) {
+-					ptr += value.bv_len;
++					rc = func( &value, (void *)((char *)src + tab->off), tab, "(unparse)", 1 );
++					if ( rc == 0 ) {
++						if (value.bv_len) {
++							ptr += value.bv_len;
++						} else {
++							ptr = saveptr;
++							break;
++						}
++					}
+ 				}
++				if ( tab->quote ) *ptr++ = '"';
+ 			}
+-			if ( tab->quote ) *ptr++ = '"';
+ 			break;
+ 
+ 		default:
diff --git a/openldap.spec b/openldap.spec
index 2401847..648a5c8 100644
--- a/openldap.spec
+++ b/openldap.spec
@@ -11,7 +11,7 @@
 Summary: LDAP support libraries
 Name: openldap
 Version: %{version}
-Release: 10%{?dist}
+Release: 11%{?dist}
 License: OpenLDAP
 Group: System Environment/Daemons
 Source0: ftp://ftp.OpenLDAP.org/pub/OpenLDAP/openldap-release/openldap-%{version}.tgz
@@ -37,6 +37,7 @@ Patch10: openldap-2.4.6-multilib.patch
 Patch11: openldap-2.4.16-doc-cacertdir.patch
 Patch12: openldap-2.4.21-dn2id-segfault.patch
 Patch13: openldap-2.4.21-modrdn-segfault.patch
+Patch14: openldap-2.4.21-config_emtpy_uri.patch
 
 # Patches for the evolution library
 Patch200: openldap-2.4.6-evolution-ntlm.patch
@@ -134,6 +135,7 @@ pushd openldap-%{version}
 %patch11 -p1 -b .cacertdir
 %patch12 -p1 -b .segfault
 %patch13 -p1 -b .modrdn-segfault
+%patch14 -p1 -b .config-emtpy-uri
 
 cp %{_datadir}/libtool/config/config.{sub,guess} build/
 popd
@@ -651,6 +653,9 @@ fi
 %attr(0644,root,root)      %{evolution_connector_libdir}/*.a
 
 %changelog
+* Thu Sep 16 2010 Jan Vcelak <jvcelak at redhat.com> 2.4.21-11
+- fix: startup error after converting to slapd-config (#628726)
+
 * Tue Jul 20 2010 Jan Vcelak <jvcelak at redhat.com> - 2.4.21-10
 - CVE-2010-0211 openldap: modrdn processing uninitialized pointer free (#605448)
 - CVE-2010-0212 openldap: modrdn processing IA5StringNormalize NULL pointer dereference (#605452)


More information about the scm-commits mailing list