]> git.sur5r.net Git - openldap/blobdiff - libraries/liblutil/ldif.c
Fix typo in dec to bin conversion
[openldap] / libraries / liblutil / ldif.c
index 01ac9dbf5b403d85377deaa6b0d9be4bf06f60de..bb5ab7e1a1da65cce3f9708ab4d44417f143571b 100644 (file)
@@ -2,7 +2,7 @@
 /* $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
@@ -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,10 +861,14 @@ 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 ));
+                                                       if ( lnew == NULL ) {
+                                                               fclose( fp2 );
+                                                               return 0;
+                                                       }
                                                        lnew->prev = lfp->prev;
                                                        lnew->fp = lfp->fp;
                                                        lfp->prev = lnew;
@@ -873,7 +880,9 @@ ldif_read_record(
                                                        /* 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;
                                                }
                                        }
                                }
@@ -881,7 +890,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;