[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: (ITS#5005) test017 fails
dieter@dkluenter.de wrote:
The problem is in slap_parse_sync_cookie(); when no cookie is passed, a
string containing "rid=001" is parsed. The parser expects it to end
with a comma. If passing "rid=001" is correct, the fix is trivial:
instead of checking for (*next != ','), check for (*next && *next != ',').
Index: servers/slapd/ldapsync.c
===================================================================
RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/ldapsync.c,v
retrieving revision 1.42
diff -u -r1.42 ldapsync.c
--- servers/slapd/ldapsync.c 18 May 2007 12:46:52 -0000 1.42
+++ servers/slapd/ldapsync.c 9 Jun 2007 09:42:24 -0000
@@ -180,7 +180,10 @@
if ( !strncmp( next, "rid=", STRLENOF("rid=") )) {
rid_ptr = next;
cookie->rid = strtoul( &rid_ptr[ STRLENOF(
"rid=" ) ], &next, 10 );
- if ( next == rid_ptr || next > end || *next !=
',' ) {
+ if ( next == rid_ptr
+ || next > end
+ || ( *next && *next != ',' ) )
+ {
return -1;
}
if ( *next == ',' ) {
@@ -194,7 +197,10 @@
if ( !strncmp( next, "sid=", STRLENOF("sid=") )) {
rid_ptr = next;
cookie->sid = strtoul( &rid_ptr[ STRLENOF(
"sid=" ) ], &next, 16 );
- if ( next == rid_ptr || next > end || *next !=
',' ) {
+ if ( next == rid_ptr
+ || next > end
+ || ( *next && *next != ',' ) )
+ {
return -1;
}
if ( *next == ',' ) {
I'm not committing this fix because I'm not sure it doesn't break
anything else.
p.
Ing. Pierangelo Masarati
OpenLDAP Core Team
SysNet s.r.l.
via Dossi, 8 - 27100 Pavia - ITALIA
http://www.sys-net.it
---------------------------------------
Office: +39 02 23998309
Mobile: +39 333 4963172
Email: pierangelo.masarati@sys-net.it
---------------------------------------