]> git.sur5r.net Git - openldap/commitdiff
ITS#7720 don't do ptr arithmetic on void *s
authorHoward Chu <hyc@openldap.org>
Tue, 8 Oct 2013 17:40:51 +0000 (10:40 -0700)
committerHoward Chu <hyc@openldap.org>
Tue, 8 Oct 2013 17:40:51 +0000 (10:40 -0700)
servers/slapd/back-mdb/dn2id.c
servers/slapd/back-mdb/tools.c

index d630741ef1ac78f88c42a70f23e786063f58f18b..9a64d76cf60272254d49b88dd99502f41216645b 100644 (file)
@@ -165,7 +165,7 @@ mdb_dn2id_add(
                        rc = mdb_cursor_get( mcp, &key, &data, MDB_SET );
                        if ( !rc ) {
                                char *p2;
-                               ptr = data.mv_data + data.mv_size - sizeof( ID );
+                               ptr = (char *)data.mv_data + data.mv_size - sizeof( ID );
                                memcpy( &nid, ptr, sizeof( ID ));
                                /* Get parent's node under grandparent */
                                d = data.mv_data;
@@ -178,7 +178,7 @@ mdb_dn2id_add(
                                op->o_tmpfree( p2, op->o_tmpmemctx );
                                if ( !rc ) {
                                        /* Get parent's subtree count */
-                                       ptr = data.mv_data + data.mv_size - sizeof( ID );
+                                       ptr = (char *)data.mv_data + data.mv_size - sizeof( ID );
                                        memcpy( &subs, ptr, sizeof( ID ));
                                        subs += nsubs;
                                        p2 = op->o_tmpalloc( data.mv_size, op->o_tmpmemctx );
@@ -246,7 +246,7 @@ mdb_dn2id_delete(
                                char *p2;
                                diskNode *d;
                                int rlen;
-                               ptr = data.mv_data + data.mv_size - sizeof( ID );
+                               ptr = (char *)data.mv_data + data.mv_size - sizeof( ID );
                                memcpy( &nid, ptr, sizeof( ID ));
                                /* Get parent's node under grandparent */
                                d = data.mv_data;
@@ -259,7 +259,7 @@ mdb_dn2id_delete(
                                op->o_tmpfree( p2, op->o_tmpmemctx );
                                if ( !rc ) {
                                        /* Get parent's subtree count */
-                                       ptr = data.mv_data + data.mv_size - sizeof( ID );
+                                       ptr = (char *)data.mv_data + data.mv_size - sizeof( ID );
                                        memcpy( &subs, ptr, sizeof( ID ));
                                        subs -= nsubs;
                                        p2 = op->o_tmpalloc( data.mv_size, op->o_tmpmemctx );
@@ -399,7 +399,7 @@ mdb_dn2id(
        *id = nid; 
        /* return subtree count if requested */
        if ( !rc && nsubs ) {
-               ptr = data.mv_data + data.mv_size - sizeof(ID);
+               ptr = (char *)data.mv_data + data.mv_size - sizeof(ID);
                memcpy( nsubs, ptr, sizeof( ID ));
        }
        if ( !mc )
@@ -795,7 +795,7 @@ mdb_dn2id_walk(
                /* Get next sibling */
                rc = mdb_cursor_get( isc->mc, &key, &data, MDB_NEXT_DUP );
                if ( !rc ) {
-                       ptr = data.mv_data + data.mv_size - 2*sizeof(ID);
+                       ptr = (char *)data.mv_data + data.mv_size - 2*sizeof(ID);
                        d = data.mv_data;
                        memcpy( &isc->id, ptr, sizeof(ID));
 
index 2ad65fb57c265444f494caaa2246f3e063043ca5..34849bda9e18091aa0e670ae3ccd4d080f34c5a2 100644 (file)
@@ -1421,7 +1421,7 @@ mdb_dn2id_upgrade( BackendDB *be ) {
                if (dkids > 1) {
                        rc = mdb_cursor_get(mc, &key, &data, MDB_NEXT_DUP);
 down:
-                       ptr = data.mv_data + data.mv_size - sizeof(ID);
+                       ptr = (unsigned char *)data.mv_data + data.mv_size - sizeof(ID);
                        memcpy(&id, ptr, sizeof(ID));
                        depth++;
                        memcpy(stack[depth].rdn, data.mv_data, data.mv_size);
@@ -1447,7 +1447,7 @@ pop:
                        goto leave;
                }
                data.mv_data = stack[depth].rdn;
-               ptr = data.mv_data + data.mv_size;
+               ptr = (unsigned char *)data.mv_data + data.mv_size;
                memcpy(ptr, &num[depth], sizeof(ID));
                data.mv_size += sizeof(ID);
                rc = mdb_cursor_del(mc, 0);