[ 
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]

Reply via email to