Description
axiom_node_create_from_buffer modifies the buffer. Running this code
char * xml = strdup("<foo>T1 & T2</foo>");
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "before: %s", xml);
axiom_node_create_from_buffer(env, xml);
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "after: %s", xml);
produces this output:
before: <foo>T1 & T2</foo>
after: <foo>T1 & T2; T2</foo>
In some environments, if the strdup is omitted, a SEGV results, presumably on attempting to modify the string literal.