Index: modules/aaa/mod_authn_core.c =================================================================== --- modules/aaa/mod_authn_core.c (revision 404763) +++ modules/aaa/mod_authn_core.c (working copy) @@ -88,8 +88,7 @@ /* Create this conf by duplicating the base, replacing elements * (or creating copies for merging) where new-> values exist. */ - conf = (authn_core_dir_conf *)apr_palloc(a, sizeof(authn_core_dir_conf)); - memcpy(conf, base, sizeof(authn_core_dir_conf)); + conf = (authn_core_dir_conf *)apr_pmemdup(a, base, sizeof(authn_core_dir_conf)); if (new->ap_auth_type) { conf->ap_auth_type = new->ap_auth_type; Index: modules/ssl/ssl_scache_dbm.c =================================================================== --- modules/ssl/ssl_scache_dbm.c (revision 404763) +++ modules/ssl/ssl_scache_dbm.c (working copy) @@ -370,8 +370,7 @@ bDelete = TRUE; } if (bDelete) { - if ((keylist[keyidx].dptr = apr_palloc(p, dbmkey.dsize)) != NULL) { - memcpy(keylist[keyidx].dptr, dbmkey.dptr, dbmkey.dsize); + if ((keylist[keyidx].dptr = apr_pmemdup(p, dbmkey.dptr, dbmkey.dsize)) != NULL) { keylist[keyidx].dsize = dbmkey.dsize; keyidx++; if (keyidx == KEYMAX) Index: modules/filters/mod_include.c =================================================================== --- modules/filters/mod_include.c (revision 404763) +++ modules/filters/mod_include.c (working copy) @@ -3225,9 +3225,8 @@ /* check if we mismatched earlier and have to release some chars */ if (release && (ctx->flags & SSI_FLAG_PRINTING)) { - char *to_release = apr_palloc(ctx->pool, release); + char *to_release = apr_pmemdup(ctx->pool, intern->start_seq, release); - memcpy(to_release, intern->start_seq, release); newb = apr_bucket_pool_create(to_release, release, ctx->pool, f->c->bucket_alloc); APR_BRIGADE_INSERT_TAIL(pass_bb, newb); @@ -3414,9 +3413,9 @@ if (intern->seen_eos) { if (PARSE_HEAD == intern->state) { if (ctx->flags & SSI_FLAG_PRINTING) { - char *to_release = apr_palloc(ctx->pool, intern->parse_pos); + char *to_release = apr_pmemdup(ctx->pool, intern->start_seq, + intern->parse_pos); - memcpy(to_release, intern->start_seq, intern->parse_pos); APR_BRIGADE_INSERT_TAIL(pass_bb, apr_bucket_pool_create(to_release, intern->parse_pos, ctx->pool, Index: server/core.c =================================================================== --- server/core.c (revision 404763) +++ server/core.c (working copy) @@ -222,8 +222,7 @@ /* Create this conf by duplicating the base, replacing elements * (or creating copies for merging) where new-> values exist. */ - conf = (core_dir_config *)apr_palloc(a, sizeof(core_dir_config)); - memcpy(conf, base, sizeof(core_dir_config)); + conf = (core_dir_config *)apr_pmemdup(a, base, sizeof(core_dir_config)); conf->d = new->d; conf->d_is_fnmatch = new->d_is_fnmatch; @@ -269,10 +268,9 @@ else if (new->response_code_strings != NULL) { /* If we merge, the merge-result must have it's own array */ - conf->response_code_strings = apr_palloc(a, + conf->response_code_strings = apr_pmemdup(a, + base->response_code_strings, sizeof(*conf->response_code_strings) * RESPONSE_CODES); - memcpy(conf->response_code_strings, base->response_code_strings, - sizeof(*conf->response_code_strings) * RESPONSE_CODES); for (i = 0; i < RESPONSE_CODES; ++i) { if (new->response_code_strings[i] != NULL) { @@ -470,8 +468,7 @@ core_server_config *virt = (core_server_config *)virtv; core_server_config *conf; - conf = (core_server_config *)apr_palloc(p, sizeof(core_server_config)); - memcpy(conf, virt, sizeof(core_server_config)); + conf = (core_server_config *)apr_pmemdup(p, virt, sizeof(core_server_config)); if (!conf->access_name) { conf->access_name = base->access_name; Index: modules/http/mod_mime.c =================================================================== --- modules/http/mod_mime.c (revision 404763) +++ modules/http/mod_mime.c (working copy) @@ -140,11 +140,10 @@ const void *base_val, const void *data) { - extension_info *new_info = apr_palloc(p, sizeof(extension_info)); const extension_info *overlay_info = (const extension_info *)overlay_val; const extension_info *base_info = (const extension_info *)base_val; + extension_info *new_info = apr_pmemdup(p, base_info, sizeof(extension_info)); - memcpy(new_info, base_info, sizeof(extension_info)); if (overlay_info->forced_type) { new_info->forced_type = overlay_info->forced_type; } Index: modules/aaa/mod_authz_core.c =================================================================== --- modules/aaa/mod_authz_core.c (revision 404763) +++ modules/aaa/mod_authz_core.c (working copy) @@ -130,8 +130,7 @@ /* Create this conf by duplicating the base, replacing elements * (or creating copies for merging) where new-> values exist. */ - conf = (authz_core_dir_conf *)apr_palloc(a, sizeof(authz_core_dir_conf)); - memcpy(conf, new, sizeof(authz_core_dir_conf)); + conf = (authz_core_dir_conf *)apr_pmemdup(a, new, sizeof(authz_core_dir_conf)); conf->some_authz = base->some_authz == -1 ? 0:base->some_authz == 0 ? 0:new->some_authz; Index: modules/dav/fs/lock.c =================================================================== --- modules/dav/fs/lock.c (revision 404763) +++ modules/dav/fs/lock.c (working copy) @@ -600,8 +600,7 @@ dp = apr_pcalloc(p, sizeof(*dp)); memcpy(dp, val.dptr + offset, sizeof(dp->f)); offset += sizeof(dp->f); - dp->locktoken = apr_palloc(p, sizeof(*dp->locktoken)); - memcpy(dp->locktoken, val.dptr + offset, sizeof(*dp->locktoken)); + dp->locktoken = apr_pmemdup(p, val.dptr + offset, sizeof(*dp->locktoken)); offset += sizeof(*dp->locktoken); if (*(val.dptr + offset) == '\0') { ++offset; @@ -648,15 +647,13 @@ /* Create and fill a dav_lock_indirect structure */ ip = apr_pcalloc(p, sizeof(*ip)); - ip->locktoken = apr_palloc(p, sizeof(*ip->locktoken)); - memcpy(ip->locktoken, val.dptr + offset, sizeof(*ip->locktoken)); + ip->locktoken = apr_pmemdup(p, val.dptr + offset, sizeof(*ip->locktoken)); offset += sizeof(*ip->locktoken); memcpy(&ip->timeout, val.dptr + offset, sizeof(ip->timeout)); offset += sizeof(ip->timeout); memcpy(&ip->key.dsize, val.dptr + offset, sizeof(ip->key.dsize)); /* length of datum */ offset += sizeof(ip->key.dsize); - ip->key.dptr = apr_palloc(p, ip->key.dsize); - memcpy(ip->key.dptr, val.dptr + offset, ip->key.dsize); + ip->key.dptr = apr_pmemdup(p, val.dptr + offset, ip->key.dsize); offset += ip->key.dsize; if (!dav_fs_lock_expired(ip->timeout)) { Index: modules/dav/lock/locks.c =================================================================== --- modules/dav/lock/locks.c (revision 404763) +++ modules/dav/lock/locks.c (working copy) @@ -603,8 +603,7 @@ offset += sizeof(dp->f); /* Copy the lock token. */ - dp->locktoken = apr_palloc(p, sizeof(*dp->locktoken)); - memcpy(dp->locktoken, val.dptr + offset, sizeof(*dp->locktoken)); + dp->locktoken = apr_pmemdup(p, val.dptr + offset, sizeof(*dp->locktoken)); offset += sizeof(*dp->locktoken); /* Do we have an owner field? */ @@ -639,16 +638,14 @@ /* Create and fill a dav_lock_indirect structure */ ip = apr_pcalloc(p, sizeof(*ip)); - ip->locktoken = apr_palloc(p, sizeof(*ip->locktoken)); - memcpy(ip->locktoken, val.dptr + offset, sizeof(*ip->locktoken)); + ip->locktoken = apr_pmemdup(p, val.dptr + offset, sizeof(*ip->locktoken)); offset += sizeof(*ip->locktoken); memcpy(&ip->timeout, val.dptr + offset, sizeof(ip->timeout)); offset += sizeof(ip->timeout); /* length of datum */ ip->key.dsize = *((int *) (val.dptr + offset)); offset += sizeof(ip->key.dsize); - ip->key.dptr = apr_palloc(p, ip->key.dsize); - memcpy(ip->key.dptr, val.dptr + offset, ip->key.dsize); + ip->key.dptr = apr_pmemdup(p, val.dptr + offset, ip->key.dsize); offset += ip->key.dsize; if (!dav_generic_lock_expired(ip->timeout)) {