mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-03-05 18:13:27 +00:00
Fixed json validation.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10868 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
988c34b019
commit
8b85295652
@ -106,6 +106,7 @@ SWITCH_STANDARD_API(http_api_main)
|
|||||||
struct json_object *json_http_headers;
|
struct json_object *json_http_headers;
|
||||||
char *key;
|
char *key;
|
||||||
struct json_object *val;
|
struct json_object *val;
|
||||||
|
enum json_type jsontype;
|
||||||
struct lh_entry *entry;
|
struct lh_entry *entry;
|
||||||
int i;
|
int i;
|
||||||
int j;
|
int j;
|
||||||
@ -133,7 +134,7 @@ SWITCH_STANDARD_API(http_api_main)
|
|||||||
|
|
||||||
if(argc != HTTP_PARAMS && argc != (HTTP_PARAMS - 1)){
|
if(argc != HTTP_PARAMS && argc != (HTTP_PARAMS - 1)){
|
||||||
switch_safe_free(ccmd);
|
switch_safe_free(ccmd);
|
||||||
stream->write_function(stream, "-ERR\n1\n");
|
stream->write_function(stream, "-ERR\n");
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,7 +155,7 @@ SWITCH_STANDARD_API(http_api_main)
|
|||||||
body = (char *)malloc(1 * sizeof(char));
|
body = (char *)malloc(1 * sizeof(char));
|
||||||
if(body == NULL){
|
if(body == NULL){
|
||||||
switch_safe_free(ccmd);
|
switch_safe_free(ccmd);
|
||||||
stream->write_function(stream, "-ERR\n2\n");
|
stream->write_function(stream, "-ERR\n");
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
body[0] = '\0';
|
body[0] = '\0';
|
||||||
@ -164,7 +165,7 @@ SWITCH_STANDARD_API(http_api_main)
|
|||||||
buf = (char *)malloc(HTTP_BUFFER_SIZE * sizeof(char));
|
buf = (char *)malloc(HTTP_BUFFER_SIZE * sizeof(char));
|
||||||
if(buf == NULL){
|
if(buf == NULL){
|
||||||
switch_safe_free(ccmd);
|
switch_safe_free(ccmd);
|
||||||
stream->write_function(stream, "-ERR\n3\n");
|
stream->write_function(stream, "-ERR\n");
|
||||||
GARBAGE_CLEANUP();
|
GARBAGE_CLEANUP();
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -176,7 +177,7 @@ SWITCH_STANDARD_API(http_api_main)
|
|||||||
request.url = (char *)malloc((l + 1) * sizeof(char));
|
request.url = (char *)malloc((l + 1) * sizeof(char));
|
||||||
if(request.url == NULL){
|
if(request.url == NULL){
|
||||||
switch_safe_free(ccmd);
|
switch_safe_free(ccmd);
|
||||||
stream->write_function(stream, "-ERR\n4\n");
|
stream->write_function(stream, "-ERR\n");
|
||||||
GARBAGE_CLEANUP();
|
GARBAGE_CLEANUP();
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -193,11 +194,18 @@ SWITCH_STANDARD_API(http_api_main)
|
|||||||
json_http_headers = json_tokener_parse(headers_dec);
|
json_http_headers = json_tokener_parse(headers_dec);
|
||||||
if(is_error(json_http_headers)){
|
if(is_error(json_http_headers)){
|
||||||
switch_safe_free(ccmd);
|
switch_safe_free(ccmd);
|
||||||
stream->write_function(stream, "-ERR\n5\n");
|
stream->write_function(stream, "-ERR\n");
|
||||||
GARBAGE_CLEANUP();
|
GARBAGE_CLEANUP();
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
jsontype = json_object_get_type(json_http_headers);
|
||||||
|
if(jsontype != json_type_object){
|
||||||
|
switch_safe_free(ccmd);
|
||||||
|
stream->write_function(stream, "-ERR\n");
|
||||||
|
GARBAGE_CLEANUP();
|
||||||
|
return SWITCH_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
json_object_object_foreach(json_http_headers, key, val){
|
json_object_object_foreach(json_http_headers, key, val){
|
||||||
@ -216,7 +224,7 @@ SWITCH_STANDARD_API(http_api_main)
|
|||||||
request.headers[i].field_name = (char *)malloc((l + 1) * sizeof(char));
|
request.headers[i].field_name = (char *)malloc((l + 1) * sizeof(char));
|
||||||
if(request.headers[i].field_name == NULL){
|
if(request.headers[i].field_name == NULL){
|
||||||
switch_safe_free(ccmd);
|
switch_safe_free(ccmd);
|
||||||
stream->write_function(stream, "-ERR\n6\n");
|
stream->write_function(stream, "-ERR\n");
|
||||||
GARBAGE_CLEANUP();
|
GARBAGE_CLEANUP();
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -226,13 +234,21 @@ SWITCH_STANDARD_API(http_api_main)
|
|||||||
strcpy(request.headers[i].field_name, key);
|
strcpy(request.headers[i].field_name, key);
|
||||||
a += strlen(key);
|
a += strlen(key);
|
||||||
|
|
||||||
|
jsontype = json_object_get_type(val);
|
||||||
|
if(jsontype != json_type_string){
|
||||||
|
switch_safe_free(ccmd);
|
||||||
|
stream->write_function(stream, "-ERR\n");
|
||||||
|
GARBAGE_CLEANUP();
|
||||||
|
return SWITCH_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
value = json_object_get_string(val);
|
value = json_object_get_string(val);
|
||||||
/* value = json_object_to_json_string(val); */
|
/* value = json_object_to_json_string(val); */
|
||||||
l = strlen(value);
|
l = strlen(value);
|
||||||
request.headers[i].value = (char *)malloc((l + 1) * sizeof(char));
|
request.headers[i].value = (char *)malloc((l + 1) * sizeof(char));
|
||||||
if(request.headers[i].value == NULL){
|
if(request.headers[i].value == NULL){
|
||||||
switch_safe_free(ccmd);
|
switch_safe_free(ccmd);
|
||||||
stream->write_function(stream, "-ERR\n7\n");
|
stream->write_function(stream, "-ERR\n");
|
||||||
GARBAGE_CLEANUP();
|
GARBAGE_CLEANUP();
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -265,7 +281,7 @@ SWITCH_STANDARD_API(http_api_main)
|
|||||||
|
|
||||||
if(ret == ERROR){
|
if(ret == ERROR){
|
||||||
switch_safe_free(ccmd);
|
switch_safe_free(ccmd);
|
||||||
stream->write_function(stream, "-ERR\n8\n");
|
stream->write_function(stream, "-ERR\n");
|
||||||
GARBAGE_CLEANUP();
|
GARBAGE_CLEANUP();
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -285,7 +301,7 @@ SWITCH_STANDARD_API(http_api_main)
|
|||||||
json_response = (char *)malloc(l * sizeof(char));
|
json_response = (char *)malloc(l * sizeof(char));
|
||||||
if(json_response == NULL){
|
if(json_response == NULL){
|
||||||
switch_safe_free(ccmd);
|
switch_safe_free(ccmd);
|
||||||
stream->write_function(stream, "-ERR\n9\n");
|
stream->write_function(stream, "-ERR\n");
|
||||||
GARBAGE_CLEANUP();
|
GARBAGE_CLEANUP();
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -295,7 +311,7 @@ SWITCH_STANDARD_API(http_api_main)
|
|||||||
t = (char *)malloc((response.body_len + 1) * sizeof(char));
|
t = (char *)malloc((response.body_len + 1) * sizeof(char));
|
||||||
if(t == NULL){
|
if(t == NULL){
|
||||||
switch_safe_free(ccmd);
|
switch_safe_free(ccmd);
|
||||||
stream->write_function(stream, "-ERR\n10\n");
|
stream->write_function(stream, "-ERR\n");
|
||||||
GARBAGE_CLEANUP();
|
GARBAGE_CLEANUP();
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user