X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Fliblutil%2Fldif.c;h=2af75fb73236caec40a64534769da10db1b26c6e;hb=c3e28a5488a8011ef0352f48fca85c48679205ba;hp=01ac9dbf5b403d85377deaa6b0d9be4bf06f60de;hpb=54adc170e577adc9bd90c445b6293a6f0ff04036;p=openldap diff --git a/libraries/liblutil/ldif.c b/libraries/liblutil/ldif.c index 01ac9dbf5b..2af75fb732 100644 --- a/libraries/liblutil/ldif.c +++ b/libraries/liblutil/ldif.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2005 The OpenLDAP Foundation. + * Copyright 1998-2007 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -389,9 +389,9 @@ ldif_must_b64_encode_register( LDAP_CONST char *name, LDAP_CONST char *oid ) int i; ber_len_t len; - assert( must_b64_encode ); - assert( name ); - assert( oid ); + assert( must_b64_encode != NULL ); + assert( name != NULL ); + assert( oid != NULL ); len = strlen( name ); @@ -444,7 +444,7 @@ ldif_must_b64_encode_release( void ) { int i; - assert( must_b64_encode ); + assert( must_b64_encode != NULL ); if ( must_b64_encode == default_must_b64_encode ) { return; @@ -470,8 +470,8 @@ ldif_must_b64_encode( LDAP_CONST char *s ) int i; struct berval bv; - assert( must_b64_encode ); - assert( s ); + assert( must_b64_encode != NULL ); + assert( s != NULL ); ber_str2bv( s, 0, 0, &bv ); @@ -734,7 +734,7 @@ int ldif_is_not_printable( ber_len_t i; for ( i = 0; val[i]; i++ ) { - if ( !isascii( val[i] ) || !isprint( val[i] ) ) { + if ( !isascii( val[i] ) || !isprint( (unsigned char) val[i] ) ) { return 1; } } @@ -747,8 +747,8 @@ int ldif_is_not_printable( LDIFFP * ldif_open( - char *file, - char *mode + LDAP_CONST char *file, + LDAP_CONST char *mode ) { FILE *fp = fopen( file, mode ); @@ -777,6 +777,8 @@ ldif_close( } } +#define LDIF_MAXLINE 4096 + /* * ldif_read_record - read an ldif record. Return 1 for success, 0 for EOF. */ @@ -787,7 +789,7 @@ ldif_read_record( char **bufp, /* ptr to malloced output buffer */ int *buflenp ) /* ptr to length of *bufp */ { - char linebuf[BUFSIZ], *line, *nbufp; + char linebuf[LDIF_MAXLINE], *line, *nbufp; ber_len_t lcur = 0, len, linesize; int last_ch = '\n', found_entry = 0, stop, top_comment = 0; @@ -822,7 +824,8 @@ ldif_read_record( if ( last_ch == '\n' ) { (*lno)++; - if ( line[0] == '\n' ) { + if ( line[0] == '\n' || + ( line[0] == '\r' && line[1] == '\n' )) { if ( !found_entry ) { lcur = 0; top_comment = 0; @@ -858,7 +861,7 @@ ldif_read_record( } ptr = line + STRLENOF("include:"); - while (isspace(*ptr)) ptr++; + while (isspace((unsigned char) *ptr)) ptr++; fp2 = ldif_open_url( ptr ); if ( fp2 ) { LDIFFP *lnew = ber_memalloc( sizeof( LDIFFP )); @@ -881,7 +884,7 @@ ldif_read_record( } if ( *buflenp - lcur <= len ) { - *buflenp += len + BUFSIZ; + *buflenp += len + LDIF_MAXLINE; nbufp = ber_memrealloc( *bufp, *buflenp ); if( nbufp == NULL ) { return 0;