The function apreq_param_make() will return NULL on failure. However
NULL check are forgetten before derenference, which could lead to
NULL pointer dereference.
Adding NULL check to all use of apreq_param_make().
Submitted by: Zhou Qingyang <zhou1615@umn.edu>
Github: closes #303
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@
1908981 13f79535-47bb-0310-9956-
ffa450edef68
if (val == NULL)
val = "";
p = apreq_param_make(handle->pool, name, strlen(name), val, strlen(val));
+ if (p == NULL)
+ return APR_ENOMEM;
apreq_param_tainted_on(p);
apreq_value_table_add(&p->v, req->args);
val = p->v.data;
if (val == NULL)
return NULL;
p = apreq_param_make(handle->pool, name, strlen(name), val, strlen(val));
+ if (p == NULL)
+ return NULL;
apreq_param_tainted_on(p);
apreq_value_table_add(&p->v, req->args);
val = p->v.data;
if (val == NULL)
val = "";
p = apreq_param_make(handle->pool, name, strlen(name), val, strlen(val));
+ if (p == NULL)
+ return APR_ENOMEM;
apreq_param_tainted_on(p);
apreq_value_table_add(&p->v, req->body);
val = p->v.data;
if (val == NULL)
return NULL;
p = apreq_param_make(handle->pool, name, strlen(name), val, strlen(val));
+ if (p == NULL)
+ return NULL;
apreq_param_tainted_on(p);
apreq_value_table_add(&p->v, req->body);
val = p->v.data;
ctx->status = GEN_INCOMPLETE;
ctx->param = apreq_param_make(pool,
"_dummy_", strlen("_dummy_"), "", 0);
+ if (ctx->param == NULL)
+ return APR_ENOMEM;
ctx->param->upload = apr_brigade_create(pool, parser->bucket_alloc);
ctx->param->info = apr_table_make(pool, APREQ_DEFAULT_NELTS);
}
int i, eol = 0;
param = apreq_param_make(pool, NULL, nlen, NULL, vlen);
+ if (param == NULL)
+ return APR_ENOMEM;
*(const apreq_value_t **)&v = ¶m->v;
arr.pool = pool;
param = apreq_param_make(pool, name, nlen,
filename, flen);
+ if (param == NULL)
+ return APR_ENOMEM;
apreq_param_tainted_on(param);
param->info = ctx->info;
param->upload
nlen = strlen(name);
param = apreq_param_make(pool, name, nlen,
filename, flen);
+ if (param == NULL)
+ return APR_ENOMEM;
apreq_param_tainted_on(param);
param->info = ctx->info;
param->upload = apr_brigade_create(pool,
flen = 0;
param = apreq_param_make(pool, name, nlen,
filename, flen);
+ if (param == NULL)
+ return APR_ENOMEM;
apreq_param_tainted_on(param);
param->info = ctx->info;
param->upload = apr_brigade_create(pool,
param = apreq_param_make(pool, ctx->param_name,
strlen(ctx->param_name),
NULL, len);
+ if (param == NULL)
+ return APR_ENOMEM;
apreq_param_tainted_on(param);
param->info = ctx->info;
return APR_EBADARG;
param = apreq_param_make(pool, NULL, nlen, NULL, vlen);
+ if (param == NULL)
+ return APR_ENOMEM;
*(const apreq_value_t **)&v = ¶m->v;
arr.pool = pool;