[
https://issues.apache.org/jira/browse/AXIS2C-944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12564444#action_12564444
]
Bill Mitchell commented on AXIS2C-944:
--------------------------------------
Looking at the code in more detail, I see that guththila_xml_writer examines
the namespace 7 times from the outermost to the innermost, and twice the
correct way from the innermost to the outermost. All two times that
guththila_xml_parser.c examines the namespace stack, it does it from the
outermost to the innermost, i.e., in the wrong order.
guththila_get_namespace_prefix_by_number(),
guththila_get_namespace_uri_by_number() makes the use of the number visible to
the caller. These are used by the guththila_main sample program, and
interestingly use 1-origin indexing.
guththila_get_attribute_XXX_by_number() uses the same stack routines, so the
stack construct is not used just for namespaces. As with the
guththila_get_namespace_XXX_by_number() routines, these are used by the
guththila_main sample program and use 1-origin indexing.
Given the additional interface routines that make the numbering scheme visible
publicly, the right solution appears to be to fix the offending loops in
guththila_xml_parser.c and guththila_xml_writer.c to examine the stack from the
higher index down to zero. Not the "clever" solution to number the stack from
the top of the stack backwards.
> guththila parser ignores XML scope rules on namespace declarations with the
> same prefix
> ---------------------------------------------------------------------------------------
>
> Key: AXIS2C-944
> URL: https://issues.apache.org/jira/browse/AXIS2C-944
> Project: Axis2-C
> Issue Type: Bug
> Components: guththila
> Affects Versions: Current (Nightly)
> Environment: Windows XP, Visual Studio 2005, guththila, libcurl
> Reporter: Bill Mitchell
>
> The guththila parser looks for a match on the namespace prefix/URI from the
> outermost element inwards. This violates the scope rules for XML namespaces,
> see http://www.w3.org/TR/REC-xml-names/. This problem holds for both
> incoming messages in guththila_xml_parser.c and outgoing messages in
> guththila_xml_writer.c. Essentially every loop involving
> guththila_stack_get_by_index() is suspect, and either needs to start at
> (stack_size - 1) and go backwards, or fetch the namespace at the (stack_size
> - 1 - i) index.
> I uncovered this by inspection, not by testing, so there is some chance that
> my understanding is incorrect. But I looked at guththila_stack.c and indeed
> for index 0 it returns the outermost/first element pushed, so there is no
> tricky logic there to get the stack in the other order. Of course, one could
> indeed fix this problem by changing guththila_stack_get_by_index() to return
> the elements from the innermost/most recently pushed back out to the
> outermost. This would be the easiest fix to make, and the safest in that it
> would not change the logic in any of the existing loops, although it would
> seem less clear to the casual reader.
> In other words, the current logic:
> guththila_stack_get_by_index(
> guththila_stack_t * stack,
> int index,
> const axutil_env_t * env)
> {
> return index < stack->top ? stack->data[index] : NULL;
> }
> could be changed to read:
> {
> return index < stack->top ? stack->data[stack->top - index - 1] : NULL;
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]