On Tue, Jan 04, 2011 at 02:32:45PM +0100, Stefan Götz wrote: > >> - connection->original.hip_tuple = malloc(sizeof(struct > >> hip_tuple)); > >> - memset(connection->original.hip_tuple, 0, sizeof(struct hip_tuple)); > >> - connection->original.hip_tuple->tuple = &connection->original; > >> - connection->original.hip_tuple->data = malloc(sizeof(struct > >> hip_data)); > >> - memset(connection->original.hip_tuple->data, 0, sizeof(struct > >> hip_data)); > >> - memcpy(&connection->original.hip_tuple->data->src_hit, > >> &data->src_hit, sizeof(struct in6_addr)); > >> - memcpy(&connection->original.hip_tuple->data->dst_hit, > >> &data->dst_hit, sizeof(struct in6_addr)); > >> - connection->original.hip_tuple->data->src_hi = NULL; > >> - connection->original.hip_tuple->data->verify = NULL; > >> + connection->original.hip_tuple = malloc(sizeof(struct > >> hip_tuple)); > >> + connection->original.hip_tuple->tuple = &connection->original; > >> + connection->original.hip_tuple->data = calloc(1, > >> sizeof(struct hip_data)); > >> + connection->original.hip_tuple->data->src_hit = data->src_hit; > >> + connection->original.hip_tuple->data->dst_hit = data->dst_hit; > > > > AFAICT connection->original.hip_tuple is no longer zeroed. What am I > > missing? > > Your observation is correct, but zeroing connection->original.hip_tuple seems > superfluous as struct hip_tuple has exactly two members: tuple and data. Both > members are set by the subsequent code so it appeared unnecessary to me to set > them to 0 before setting them to some other value. Applied. Diego