#ifdef LDAP_DEBUG
if ( ldap_debug & LDAP_DEBUG_ARGS ) {
- char buf[ BUFSIZ ] = { ' ', '*', '\0' };
+ char buf[ BUFSIZ ], *ptr = " *";
if ( attrs != NULL ) {
- char *ptr;
- int i;
-
- for ( ptr = buf, i = 0;
- attrs[ i ] != NULL && ptr < &buf[ sizeof( buf ) ];
- i++ )
- {
- ptr += snprintf( ptr, sizeof( buf ) - ( ptr - buf ),
- " %s", attrs[ i ] );
+ int i, len, rest = sizeof( buf );
+
+ for ( i = 0; attrs[ i ] != NULL && rest > 0; i++ ) {
+ ptr = &buf[ sizeof( buf ) - rest ];
+ len = snprintf( ptr, rest, " %s", attrs[ i ] );
+ rest -= (len >= 0 ? len : (int) sizeof( buf ));
}
- if ( ptr >= &buf[ sizeof( buf ) ] ) {
+ if ( rest <= 0 ) {
AC_MEMCPY( &buf[ sizeof( buf ) - STRLENOF( "...(truncated)" ) - 1 ],
"...(truncated)", STRLENOF( "...(truncated)" ) + 1 );
}
+ ptr = buf;
}
- Debug( LDAP_DEBUG_ARGS, "ldap_build_search_req ATTRS:%s\n", buf, 0, 0 );
+ Debug( LDAP_DEBUG_ARGS, "ldap_build_search_req ATTRS:%s\n", ptr, 0,0 );
}
#endif /* LDAP_DEBUG */