/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * 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
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 );
{
int i;
- assert( must_b64_encode );
+ assert( must_b64_encode != NULL );
if ( must_b64_encode == default_must_b64_encode ) {
return;
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 );
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;
}
}
LDIFFP *
ldif_open(
- char *file,
- char *mode
+ LDAP_CONST char *file,
+ LDAP_CONST char *mode
)
{
FILE *fp = fopen( file, mode );
}
}
+#define LDIF_MAXLINE 4096
+
/*
* ldif_read_record - read an ldif record. Return 1 for success, 0 for EOF.
*/
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;
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;
}
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 ));
+ if ( lnew == NULL ) {
+ fclose( fp2 );
+ return 0;
+ }
lnew->prev = lfp->prev;
lnew->fp = lfp->fp;
lfp->prev = lnew;
/* We failed to open the file, this should
* be reported as an error somehow.
*/
- break;
+ ber_pvt_log_printf( LDAP_DEBUG_ANY, ldif_debug,
+ _("ldif_read_record: include %s failed\n"), ptr );
+ return 0;
}
}
}
}
if ( *buflenp - lcur <= len ) {
- *buflenp += len + BUFSIZ;
+ *buflenp += len + LDIF_MAXLINE;
nbufp = ber_memrealloc( *bufp, *buflenp );
if( nbufp == NULL ) {
return 0;