]> git.sur5r.net Git - openldap/commitdiff
Add memctx to lutil_str2bin()
authorHoward Chu <hyc@openldap.org>
Sun, 2 Dec 2007 19:11:41 +0000 (19:11 +0000)
committerHoward Chu <hyc@openldap.org>
Sun, 2 Dec 2007 19:11:41 +0000 (19:11 +0000)
include/lutil.h
libraries/liblutil/utils.c
servers/slapd/schema_init.c

index 2400624159d060fb1d1e5d55eb430e884e1d3496..6c0b2f158034b968caaec189712a76025385b3e9 100644 (file)
@@ -305,7 +305,7 @@ lutil_atoulx( unsigned long *v, const char *s, int x );
 #define lutil_atoul(v, s)      lutil_atoulx((v), (s), 10)
 
 LDAP_LUTIL_F (int)
-lutil_str2bin( struct berval *in, struct berval *out );
+lutil_str2bin( struct berval *in, struct berval *out, void *ctx );
 
 /* Parse and unparse time intervals */
 LDAP_LUTIL_F (int)
index f14e6c877de679b20fdf96d2b4c1dd3f6212e26c..62db930f4437f7e75e5b818e2c8f88f356bdf701 100644 (file)
@@ -35,6 +35,7 @@
 #include "lutil.h"
 #include "ldap_defaults.h"
 #include "ldap_pvt.h"
+#include "lber_pvt.h"
 
 #ifdef HAVE_EBCDIC
 int _trans_argv = 1;
@@ -671,7 +672,7 @@ scale( int new, lutil_int_decnum *prev, unsigned char *tmp )
  * any hex input.
  */
 int
-lutil_str2bin( struct berval *in, struct berval *out )
+lutil_str2bin( struct berval *in, struct berval *out, void *ctx )
 {
        char *pin, *pout, ctmp;
        char *end;
@@ -747,7 +748,7 @@ lutil_str2bin( struct berval *in, struct berval *out )
 
                /* tmp must be at least as large as outbuf */
                if ( out->bv_len > sizeof(tmpbuf)) {
-                       tmp = ber_memalloc( out->bv_len );
+                       tmp = ber_memalloc_x( out->bv_len, ctx );
                } else {
                        tmp = tmpbuf;
                }
@@ -795,7 +796,7 @@ lutil_str2bin( struct berval *in, struct berval *out )
                out->bv_len = num.len;
 decfail:
                if ( tmp != tmpbuf ) {
-                       ber_memfree( tmp );
+                       ber_memfree_x( tmp, ctx );
                }
        }
        return rc;
index f40d91f749d5bf9560f0f4cb20973095ac89eb30..03c47918b8b3b49fb05fdfd2124dc0ef5a5c53b2 100644 (file)
@@ -2120,7 +2120,8 @@ static int
 integerVal2Key(
        struct berval val,
        struct berval *key,
-       struct berval itmp
+       struct berval itmp,
+       void *ctx
 )
 {
        /* index format:
@@ -2150,7 +2151,7 @@ integerVal2Key(
                }
        }
 
-       if ( lutil_str2bin( &val, &itmp )) {
+       if ( lutil_str2bin( &val, &itmp, ctx )) {
                return LDAP_INVALID_SYNTAX;
        }
 
@@ -2238,7 +2239,7 @@ integerIndexer(
                        else if ( itmp.bv_len > maxstrlen )
                                itmp.bv_len = maxstrlen;
                }
-               rc = integerVal2Key( values[i], &keys[i], itmp );
+               rc = integerVal2Key( values[i], &keys[i], itmp, ctx );
                if ( rc )
                        goto leave;
        }
@@ -2284,7 +2285,7 @@ integerFilter(
                iv.bv_len = sizeof(ibuf);
        }
 
-       rc = integerVal2Key( *value, keys, iv );
+       rc = integerVal2Key( *value, keys, iv, ctx );
        if ( rc == 0 )
                *keysp = keys;
 
@@ -3141,7 +3142,7 @@ serialNumberAndIssuerNormalize(
        }
        sn2.bv_val = stmp;
        sn2.bv_len = sn.bv_len;
-       if ( lutil_str2bin( &sn, &sn2 )) {
+       if ( lutil_str2bin( &sn, &sn2, ctx )) {
                rc = LDAP_INVALID_SYNTAX;
                goto leave;
        }