From 932edf8f43f32c82a47b92cdc4588d826fd16d69 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Mon, 3 Dec 2018 03:26:18 -0800 Subject: [PATCH] Use base64 to input DirSync cookie --- clients/tools/ldapsearch.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/clients/tools/ldapsearch.c b/clients/tools/ldapsearch.c index f0c062292a..7d8ab86b02 100644 --- a/clients/tools/ldapsearch.c +++ b/clients/tools/ldapsearch.c @@ -679,10 +679,24 @@ handle_private_option( int i ) *maxattrp++ = '\0'; cookiep = strchr( maxattrp, '/' ); if ( cookiep != NULL ) { - *cookiep++ = '\0'; - if ( *cookiep != '\0' ) { - ber_str2bv( cookiep, 0, 0, &dirSyncCookie ); + if ( cookiep[1] != '\0' ) { + struct berval type; + int freeval; + char save1, save2; + + /* dummy type "x" + * to use ldif_parse_line2() */ + save1 = cookiep[ -1 ]; + save2 = cookiep[ -2 ]; + cookiep[ -2 ] = 'x'; + cookiep[ -1 ] = ':'; + cookiep[ 0 ] = ':'; + ldif_parse_line2( &cookiep[ -2 ], &type, + &dirSyncCookie, &freeval ); + cookiep[ -1 ] = save1; + cookiep[ -2 ] = save2; } + *cookiep = '\0'; } num = sscanf( cvalue, "%d", &tmp ); if ( num != 1 ) { -- 2.47.2