From: Howard Chu Date: Tue, 8 Oct 2013 17:40:51 +0000 (-0700) Subject: ITS#7720 don't do ptr arithmetic on void *s X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=c82dcab9bdc90e0d68fd27acd520e02a6ab12b75;p=openldap ITS#7720 don't do ptr arithmetic on void *s --- diff --git a/servers/slapd/back-mdb/dn2id.c b/servers/slapd/back-mdb/dn2id.c index d630741ef1..9a64d76cf6 100644 --- a/servers/slapd/back-mdb/dn2id.c +++ b/servers/slapd/back-mdb/dn2id.c @@ -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)); diff --git a/servers/slapd/back-mdb/tools.c b/servers/slapd/back-mdb/tools.c index 2ad65fb57c..34849bda9e 100644 --- a/servers/slapd/back-mdb/tools.c +++ b/servers/slapd/back-mdb/tools.c @@ -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);