Loading CHANGES +3 −0 Changes for CHANGES: 3 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -2,6 +2,9 @@ Changes with Apache 2.3.11 *) core: new util function: ap_parse_form_data(). Previously, this capability was tucked away in mod_request. [Jim Jagielski] *) core: new hook: ap_run_pre_read_request. [Jim Jagielski] *) mod_cache: When a request other than GET or HEAD arrives, we must Loading include/ap_mmn.h +2 −1 Changes for include/ap_mmn.h: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -300,7 +300,8 @@ * 20110117.1 (2.3.11-dev) Add ap_pstr2_alnum() and ap_str2_alnum() * 20110203.0 (2.3.11-dev) Raise DYNAMIC_MODULE_LIMIT to 256 * 20110203.1 (2.3.11-dev) Add ap_state_query() * 20110203.2 (2.3.11-dev) Add ap_run_pre_read_request() hook * 20110203.2 (2.3.11-dev) Add ap_run_pre_read_request() hook and * ap_parse_form_data() util */ #define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */ Loading include/httpd.h +27 −0 Changes for include/httpd.h: 27 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -1853,6 +1853,33 @@ AP_DECLARE(apr_status_t) ap_pstr2_alnum(apr_pool_t *p, const char *src, */ AP_DECLARE(apr_status_t) ap_str2_alnum(const char *src, char *dest); /** * Structure to store the contents of an HTTP form of the type * application/x-www-form-urlencoded. * * Currently it contains the name as a char* of maximum length * HUGE_STRING_LEN, and a value in the form of a bucket brigade * of arbitrary length. */ typedef struct { const char *name; apr_bucket_brigade *value; } ap_form_pair_t; /** * Read the body and parse any form found, which must be of the * type application/x-www-form-urlencoded. * @param r request containing POSTed form data * @param f filter * @param ptr returned array of ap_form_pair_t * @param num max num of params or -1 for unlimited * @param size max size allowed for parsed data * @return OK or HTTP error */ AP_DECLARE(int) ap_parse_form_data(request_rec *r, struct ap_filter_t *f, apr_array_header_t **ptr, apr_size_t num, apr_size_t size); /* Misc system hackery */ /** * Given the name of an object in the file system determine if it is a directory Loading include/mod_request.h +0 −50 Changes for include/mod_request.h: 0 added lines, 50 removed lines. Original line number Diff line number Diff line Loading @@ -52,56 +52,6 @@ typedef struct { int keep_body_set; } request_dir_conf; /** * Structure to store the contents of an HTTP form of the type * application/x-www-form-urlencoded. * * Currently it contains the name as a char* of maximum length * HUGE_STRING_LEN, and a value in the form of a bucket brigade * of arbitrary length. */ typedef struct { const char *name; apr_bucket_brigade *value; } ap_form_pair_t; /** * Read the body and parse any form found, which must be of the * type application/x-www-form-urlencoded. * * Name/value pairs are returned in an array, with the names as * strings with a maximum length of HUGE_STRING_LEN, and the * values as bucket brigades. This allows values to be arbitrarily * large. * * All url-encoding is removed from both the names and the values * on the fly. The names are interpreted as strings, while the * values are interpreted as blocks of binary data, that may * contain the 0 character. * * In order to ensure that resource limits are not exceeded, a * maximum size must be provided. If the sum of the lengths of * the names and the values exceed this size, this function * will return HTTP_REQUEST_ENTITY_TOO_LARGE. * * An optional number of parameters can be provided, if the number * of parameters provided exceeds this amount, this function will * return HTTP_REQUEST_ENTITY_TOO_LARGE. If this value is negative, * no limit is imposed, and the number of parameters is in turn * constrained by the size parameter above. * * This function honours any kept_body configuration, and the * original raw request body will be saved to the kept_body brigade * if so configured, just as ap_discard_request_body does. * * NOTE: File upload is not yet supported, but can be without change * to the function call. */ APR_DECLARE_OPTIONAL_FN(int, ap_parse_request_form, (request_rec * r, ap_filter_t * f, apr_array_header_t ** ptr, apr_size_t num, apr_size_t size)); APR_DECLARE_OPTIONAL_FN(void, ap_request_insert_filter, (request_rec * r)); APR_DECLARE_OPTIONAL_FN(void, ap_request_remove_filter, (request_rec * r)); Loading modules/aaa/mod_auth_form.c +3 −7 Changes for modules/aaa/mod_auth_form.c: 3 added lines, 7 removed lines. Original line number Diff line number Diff line Loading @@ -46,9 +46,6 @@ static void (*ap_session_get_fn) (request_rec * r, session_rec * z, const char *key, const char **value) = NULL; static void (*ap_session_set_fn) (request_rec * r, session_rec * z, const char *key, const char *value) = NULL; static int (*ap_parse_request_form_fn) (request_rec * r, ap_filter_t *f, apr_array_header_t ** ptr, apr_size_t num, apr_size_t size) = NULL; static void (*ap_request_insert_filter_fn) (request_rec * r) = NULL; static void (*ap_request_remove_filter_fn) (request_rec * r) = NULL; Loading Loading @@ -187,11 +184,10 @@ static const char *add_authn_provider(cmd_parms * cmd, void *config, } } if (!ap_parse_request_form_fn || !ap_request_insert_filter_fn || !ap_request_remove_filter_fn) { ap_parse_request_form_fn = APR_RETRIEVE_OPTIONAL_FN(ap_parse_request_form); if (!ap_request_insert_filter_fn || !ap_request_remove_filter_fn) { ap_request_insert_filter_fn = APR_RETRIEVE_OPTIONAL_FN(ap_request_insert_filter); ap_request_remove_filter_fn = APR_RETRIEVE_OPTIONAL_FN(ap_request_remove_filter); if (!ap_parse_request_form_fn || !ap_request_insert_filter_fn || !ap_request_remove_filter_fn) { if (!ap_request_insert_filter_fn || !ap_request_remove_filter_fn) { return "You must load mod_request to enable the mod_auth_form " "functions"; } Loading Loading @@ -607,7 +603,7 @@ static int get_form_auth(request_rec * r, return OK; } res = ap_parse_request_form_fn(r, NULL, &pairs, -1, conf->form_size); res = ap_parse_form_data(r, NULL, &pairs, -1, conf->form_size); if (res != OK) { return res; } Loading Loading
CHANGES +3 −0 Changes for CHANGES: 3 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -2,6 +2,9 @@ Changes with Apache 2.3.11 *) core: new util function: ap_parse_form_data(). Previously, this capability was tucked away in mod_request. [Jim Jagielski] *) core: new hook: ap_run_pre_read_request. [Jim Jagielski] *) mod_cache: When a request other than GET or HEAD arrives, we must Loading
include/ap_mmn.h +2 −1 Changes for include/ap_mmn.h: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -300,7 +300,8 @@ * 20110117.1 (2.3.11-dev) Add ap_pstr2_alnum() and ap_str2_alnum() * 20110203.0 (2.3.11-dev) Raise DYNAMIC_MODULE_LIMIT to 256 * 20110203.1 (2.3.11-dev) Add ap_state_query() * 20110203.2 (2.3.11-dev) Add ap_run_pre_read_request() hook * 20110203.2 (2.3.11-dev) Add ap_run_pre_read_request() hook and * ap_parse_form_data() util */ #define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */ Loading
include/httpd.h +27 −0 Changes for include/httpd.h: 27 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -1853,6 +1853,33 @@ AP_DECLARE(apr_status_t) ap_pstr2_alnum(apr_pool_t *p, const char *src, */ AP_DECLARE(apr_status_t) ap_str2_alnum(const char *src, char *dest); /** * Structure to store the contents of an HTTP form of the type * application/x-www-form-urlencoded. * * Currently it contains the name as a char* of maximum length * HUGE_STRING_LEN, and a value in the form of a bucket brigade * of arbitrary length. */ typedef struct { const char *name; apr_bucket_brigade *value; } ap_form_pair_t; /** * Read the body and parse any form found, which must be of the * type application/x-www-form-urlencoded. * @param r request containing POSTed form data * @param f filter * @param ptr returned array of ap_form_pair_t * @param num max num of params or -1 for unlimited * @param size max size allowed for parsed data * @return OK or HTTP error */ AP_DECLARE(int) ap_parse_form_data(request_rec *r, struct ap_filter_t *f, apr_array_header_t **ptr, apr_size_t num, apr_size_t size); /* Misc system hackery */ /** * Given the name of an object in the file system determine if it is a directory Loading
include/mod_request.h +0 −50 Changes for include/mod_request.h: 0 added lines, 50 removed lines. Original line number Diff line number Diff line Loading @@ -52,56 +52,6 @@ typedef struct { int keep_body_set; } request_dir_conf; /** * Structure to store the contents of an HTTP form of the type * application/x-www-form-urlencoded. * * Currently it contains the name as a char* of maximum length * HUGE_STRING_LEN, and a value in the form of a bucket brigade * of arbitrary length. */ typedef struct { const char *name; apr_bucket_brigade *value; } ap_form_pair_t; /** * Read the body and parse any form found, which must be of the * type application/x-www-form-urlencoded. * * Name/value pairs are returned in an array, with the names as * strings with a maximum length of HUGE_STRING_LEN, and the * values as bucket brigades. This allows values to be arbitrarily * large. * * All url-encoding is removed from both the names and the values * on the fly. The names are interpreted as strings, while the * values are interpreted as blocks of binary data, that may * contain the 0 character. * * In order to ensure that resource limits are not exceeded, a * maximum size must be provided. If the sum of the lengths of * the names and the values exceed this size, this function * will return HTTP_REQUEST_ENTITY_TOO_LARGE. * * An optional number of parameters can be provided, if the number * of parameters provided exceeds this amount, this function will * return HTTP_REQUEST_ENTITY_TOO_LARGE. If this value is negative, * no limit is imposed, and the number of parameters is in turn * constrained by the size parameter above. * * This function honours any kept_body configuration, and the * original raw request body will be saved to the kept_body brigade * if so configured, just as ap_discard_request_body does. * * NOTE: File upload is not yet supported, but can be without change * to the function call. */ APR_DECLARE_OPTIONAL_FN(int, ap_parse_request_form, (request_rec * r, ap_filter_t * f, apr_array_header_t ** ptr, apr_size_t num, apr_size_t size)); APR_DECLARE_OPTIONAL_FN(void, ap_request_insert_filter, (request_rec * r)); APR_DECLARE_OPTIONAL_FN(void, ap_request_remove_filter, (request_rec * r)); Loading
modules/aaa/mod_auth_form.c +3 −7 Changes for modules/aaa/mod_auth_form.c: 3 added lines, 7 removed lines. Original line number Diff line number Diff line Loading @@ -46,9 +46,6 @@ static void (*ap_session_get_fn) (request_rec * r, session_rec * z, const char *key, const char **value) = NULL; static void (*ap_session_set_fn) (request_rec * r, session_rec * z, const char *key, const char *value) = NULL; static int (*ap_parse_request_form_fn) (request_rec * r, ap_filter_t *f, apr_array_header_t ** ptr, apr_size_t num, apr_size_t size) = NULL; static void (*ap_request_insert_filter_fn) (request_rec * r) = NULL; static void (*ap_request_remove_filter_fn) (request_rec * r) = NULL; Loading Loading @@ -187,11 +184,10 @@ static const char *add_authn_provider(cmd_parms * cmd, void *config, } } if (!ap_parse_request_form_fn || !ap_request_insert_filter_fn || !ap_request_remove_filter_fn) { ap_parse_request_form_fn = APR_RETRIEVE_OPTIONAL_FN(ap_parse_request_form); if (!ap_request_insert_filter_fn || !ap_request_remove_filter_fn) { ap_request_insert_filter_fn = APR_RETRIEVE_OPTIONAL_FN(ap_request_insert_filter); ap_request_remove_filter_fn = APR_RETRIEVE_OPTIONAL_FN(ap_request_remove_filter); if (!ap_parse_request_form_fn || !ap_request_insert_filter_fn || !ap_request_remove_filter_fn) { if (!ap_request_insert_filter_fn || !ap_request_remove_filter_fn) { return "You must load mod_request to enable the mod_auth_form " "functions"; } Loading Loading @@ -607,7 +603,7 @@ static int get_form_auth(request_rec * r, return OK; } res = ap_parse_request_form_fn(r, NULL, &pairs, -1, conf->form_size); res = ap_parse_form_data(r, NULL, &pairs, -1, conf->form_size); if (res != OK) { return res; } Loading