Fix probable crashes

This commit is contained in:
suvendhu 2023-04-12 11:18:15 +05:30
parent 468b6803cd
commit c5cf3cd6e3
4 changed files with 2 additions and 67 deletions

1
http.c
View file

@ -28,7 +28,6 @@
#define HTTP_GET_HDR_LEN 512 #define HTTP_GET_HDR_LEN 512
static struct http_client http_c; static struct http_client http_c;
static CURL *curl = NULL; static CURL *curl = NULL;
static bool curl_glob_init = false; static bool curl_glob_init = false;
char *fc_cookies = "/tmp/icwmp_cookies"; char *fc_cookies = "/tmp/icwmp_cookies";

View file

@ -21,7 +21,6 @@ int xml_prepare_msg_out(struct session *session);
int xml_prepare_lwnotification_message(char **msg_out); int xml_prepare_lwnotification_message(char **msg_out);
int xml_set_cwmp_id_rpc_cpe(struct session *session); int xml_set_cwmp_id_rpc_cpe(struct session *session);
int xml_recreate_namespace(mxml_node_t *tree); int xml_recreate_namespace(mxml_node_t *tree);
const char *whitespace_cb(mxml_node_t *node, int where);
int xml_set_cwmp_id(struct session *session); int xml_set_cwmp_id(struct session *session);
int xml_send_message(struct cwmp *cwmp, struct session *session, struct rpc *rpc); int xml_send_message(struct cwmp *cwmp, struct session *session, struct rpc *rpc);
mxml_node_t *mxmlFindElementOpaque(mxml_node_t *node, mxml_node_t *top, const char *text, int descend); mxml_node_t *mxmlFindElementOpaque(mxml_node_t *node, mxml_node_t *top, const char *text, int descend);

View file

@ -68,6 +68,7 @@ function print_tag_value()
tag=$2 tag=$2
output=$(sed -n "/<"$rpc_method">/,/<\/"$rpc_method">/p" $icwmp_log_file) output=$(sed -n "/<"$rpc_method">/,/<\/"$rpc_method">/p" $icwmp_log_file)
xml_data=$(echo $output | grep -o "<"$rpc_method">.*<\/"$rpc_method">") xml_data=$(echo $output | grep -o "<"$rpc_method">.*<\/"$rpc_method">")
tag_value=`grep -oPm1 "(?<=<$tag>)[^<]+" <<< "$xml_data"` tag_value=`grep -oPm1 "(?<=<$tag>)[^<]+" <<< "$xml_data"`
echo $tag_value echo $tag_value
} }

66
xml.c
View file

@ -316,70 +316,6 @@ int xml_set_cwmp_id_rpc_cpe(struct session *session)
return 0; return 0;
} }
const char *get_node_tab_space(mxml_node_t *node)
{
CWMP_LOG(INFO, "#### %s start %d ####", __FUNCTION__, __LINE__);
static char tab_space[10 * sizeof(CWMP_MXML_TAB_SPACE) + 1];
int count = 0;
memset(tab_space, 0, sizeof(tab_space));
while ((node = mxmlGetParent(node))) {
count = count + 1;
}
if (count) {
snprintf(tab_space, sizeof(tab_space), "%*s", (int)(count * sizeof(CWMP_MXML_TAB_SPACE)), "");
}
CWMP_LOG(INFO, "#### %s exit %d count %d ####", __FUNCTION__, __LINE__, count);
return tab_space;
}
const char *whitespace_cb(mxml_node_t *node, int where)
{
CWMP_LOG(INFO, "#### %s start ####", __FUNCTION__);
if (node == NULL) {
CWMP_LOG(INFO, "#### %s exit %d ####", __FUNCTION__, __LINE__);
return NULL;
}
if (mxmlGetType(node) != MXML_ELEMENT) {
CWMP_LOG(INFO, "#### %s exit %d ####", __FUNCTION__, __LINE__);
return NULL;
}
switch (where) {
case MXML_WS_BEFORE_CLOSE:
if (mxmlGetFirstChild(node) && mxmlGetType(mxmlGetFirstChild(node)) != MXML_ELEMENT) {
CWMP_LOG(INFO, "#### %s exit %d ####", __FUNCTION__, __LINE__);
return NULL;
}
CWMP_LOG(INFO, "#### %s exit %d ####", __FUNCTION__, __LINE__);
return get_node_tab_space(node);
case MXML_WS_BEFORE_OPEN:
if (where == MXML_WS_BEFORE_CLOSE && mxmlGetFirstChild(node) && mxmlGetType(mxmlGetFirstChild(node)) != MXML_ELEMENT) {
CWMP_LOG(INFO, "#### %s exit %d ####", __FUNCTION__, __LINE__);
return NULL;
}
CWMP_LOG(INFO, "#### %s exit %d ####", __FUNCTION__, __LINE__);
return get_node_tab_space(node);
case MXML_WS_AFTER_OPEN:
CWMP_LOG(INFO, "#### %s exit %d ####", __FUNCTION__, __LINE__);
return ((mxmlGetFirstChild(node) == NULL || mxmlGetType(mxmlGetFirstChild(node)) == MXML_ELEMENT) ? "\n" : NULL);
case MXML_WS_AFTER_CLOSE:
CWMP_LOG(INFO, "#### %s exit %d ####", __FUNCTION__, __LINE__);
return "\n";
default:
CWMP_LOG(INFO, "#### %s exit %d ####", __FUNCTION__, __LINE__);
return NULL;
}
CWMP_LOG(INFO, "#### %s exit %d ####", __FUNCTION__, __LINE__);
return NULL;
}
char *xml_get_cwmp_version(int version) char *xml_get_cwmp_version(int version)
{ {
static char versions[60]; static char versions[60];
@ -441,7 +377,7 @@ int xml_prepare_lwnotification_message(char **msg_out)
if (!lw_tree) if (!lw_tree)
goto error; goto error;
*msg_out = mxmlSaveAllocString(lw_tree, whitespace_cb); *msg_out = mxmlSaveAllocString(lw_tree, MXML_NO_CALLBACK);
mxmlDelete(lw_tree); mxmlDelete(lw_tree);
return 0; return 0;