]> git.sur5r.net Git - openldap/blobdiff - libraries/liblber/etest.c
check for overflows
[openldap] / libraries / liblber / etest.c
index 21d13d4a2519035e8e0fbf3a29103f2d24ef28c6..f71627b270719fe6ddfe23c3b8645eaf74b14b9f 100644 (file)
@@ -1,12 +1,31 @@
-/* test.c - lber encoding test program */
+/* etest.c - lber encoding test program */
 /* $OpenLDAP$ */
-/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2008 The OpenLDAP Foundation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
  */
-/* Portions
- * Copyright (c) 1990 Regents of the University of Michigan.
+/* Portions Copyright (c) 1990 Regents of the University of Michigan.
  * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that this notice is preserved and that due credit is given
+ * to the University of Michigan at Ann Arbor. The name of the University
+ * may not be used to endorse or promote products derived from this
+ * software without specific prior written permission. This software
+ * is provided ``as is'' without express or implied warranty.
+ */
+/* ACKNOWLEDGEMENTS:
+ * This work was originally developed by the University of Michigan
+ * (as part of U-MICH LDAP).
  */
 
 #include "portable.h"
@@ -34,11 +53,9 @@ static char* getbuf( void ) {
        char *p;
        static char buf[1024];
 
-       if ( fgets( buf, sizeof(buf), stdin ) == NULL )
-               return NULL;
+       if ( fgets( buf, sizeof(buf), stdin ) == NULL ) return NULL;
 
-       if ( (p = strchr( buf, '\n' )) != NULL )
-               *p = '\0';
+       if ( (p = strchr( buf, '\n' )) != NULL ) *p = '\0';
 
        return buf;
 }
@@ -47,6 +64,7 @@ int
 main( int argc, char **argv )
 {
        char    *s;
+       int tag;
 
        int                     fd, rc;
        BerElement      *ber;
@@ -126,10 +144,14 @@ main( int argc, char **argv )
                        break;
 
                case 's':       /* string */
-               case 't':       /* tag for the next element */
                        buf = getbuf();
                        rc = ber_printf( ber, fmt, buf );
                        break;
+               case 't':       /* tag for the next element */
+                       buf = getbuf();
+                       tag = atoi(buf);
+                       rc = ber_printf( ber, fmt, tag );
+                       break;
 
                default:
                        fprintf( stderr, "encode: unknown fmt %c\n", *fmt );
@@ -149,8 +171,8 @@ main( int argc, char **argv )
                return( EXIT_FAILURE );
        }
 
-       if ( ber_flush( sb, ber, 1 ) == -1 ) {
-               perror( "ber_flush" );
+       if ( ber_flush2( sb, ber, LBER_FLUSH_FREE_ALWAYS ) == -1 ) {
+               perror( "ber_flush2" );
                return( EXIT_FAILURE );
        }