[asterisk-bugs] [JIRA] (ASTERISK-29614) app_agent_pool: XML Doc: unterminated entity reference

Alexander Traud (JIRA) noreply at issues.asterisk.org
Wed Sep 1 11:40:34 CDT 2021


    [ https://issues.asterisk.org/jira/browse/ASTERISK-29614?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=256125#comment-256125 ] 

Alexander Traud commented on ASTERISK-29614:
--------------------------------------------

Some modules use {{\[general\]}}, some {{\[global\]}}, some {{\[globals\]}} with an s for the generic part (yet, a fourth name for that section). One of those three alternatives. And, yes, in {{app_agent_pool}}, that section is called ‘generic’. However, the help works only for ‘global’ although I expect it to be ‘generic’. And, yes, the help text was and is confusing: It mentions ‘global’ at the start and then shows that escaped style about ‘generic’ – was that Regular Expression before? So, yes, that is what I am referring to. I have no idea what was and is intended (by the original code).

bq. it is able to augment that documentation at runtime.

Got that. But I wonder, what exactly is expected to be shown to the user and what should be in the XML DOM.

bq. I do not see a call to xmlNodeSetContent in xmldoc_update_config_type()

{{xmldoc_update_config_type}} calls {{ast_xml_set_text(tmp, category)}} and that is just a wrapper for {{xmlNodeSetContent}}. That was the place in code which gave me the error, at least the error, I saw.

bq. other questions can be determined just by looking at

Puh. I am working with XML and XPath now exactly twenty years. I do not get it. Probably, because I do not get the high level idea what this code is about. Why does it need to update that documentation at runtime? Or asked differently: That variable {{category}} in {{ast_xml_set_text(.)}} should be just plain text. Nothing special, no further XPath pointer, no Regular Expression. Just text, to be shown to the user. Right? Previously, it was a C array. Therefore, the confusion. Then it was no memory corruption but just a wrong type of data in that XML string. And my initial analysis was incorrect. Was it?

> app_agent_pool: XML Doc: unterminated entity reference
> ------------------------------------------------------
>
>                 Key: ASTERISK-29614
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-29614
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Applications/app_agent_pool, Applications/app_skel, Documentation
>    Affects Versions: 13.38.3, 16.20.0, 18.6.0, 19.0.0
>         Environment: Ubuntu 18.04 LTS
> ./configure --enable-xmldoc, which is the default
> make all or make full, does not matter
>            Reporter: Alexander Traud
>            Assignee: Unassigned
>            Severity: Major
>
> This issue seems not to be of constant occurrence. Furthermore, I was not able to find any reports about this except several failed builds in Gerrit. Perhaps those are related but I did not investigated those further, yet. 
> Currently, I am able to replicate it quite constant and was able to investigate a bit with GDB. However, I am reporting early in my analysis, perhaps somebody sees the culprit faster.
> *My symptom*:
> {code} Loading app_agent_pool.so.
>   == Manager registered action Agents
>   == Manager registered action AgentLogoff
>   == Registered custom function 'AGENT'
>   == Registered application 'AgentLogin'
>   == Registered application 'AgentRequest'
> error : unterminated entity reference            ���
>   == app_agent_pool.so => (Call center agent pool applications){code}*My call stack*:
> apps/app_agent_pool.c
> ⤷ load_module
>    ⤷ load_config
>       ⤷ aco_info_init
>          ⤷ type = agent_type (the second type from {{app_agent_pool}}, the one after the {{general_type}})
>             ⤷ xmldoc_update_config_type in file main/xml.c
>                ⤷ ast_xml_set_text
>                   ⤷ xmlNodeSetContent
> That error is not printed, when I remove _all_ categories except the terminating NULL, in the file {{apps/app_agent_pool.c}}, in the string array {{agent_type_blacklist}}. That error is not printed, when I comment/disable at least four of the eight {{aco_option_register}} in {{load_config}}.
> This looks like a memory corruption, because even when that error is not printed, on the command-line interface (CLI), I am not able to issue {{xmldoc dump <file>}} when the module {{app_agent_pool}} is loaded. I get errors like {{output error : string is not in UTF-8}} or {{xmlEscapeEntities : char out of range}}.
> *Workarounds*:
> a) {{./configure --disable-xmldoc}} or
> b) disable the module {{app_agent_pool}} via {{make menuselect}} or
> c) noload the module {{app_agent_pool}} via the configuration file {{modules.conf}} or
> d) change the string array {{agent_type_blacklist}} to contain just the terminating {{NULL}} value



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list