[Freeipa-devel] [PATCH] 186 Use XML routines in ra plugin

Pavel Zuna pzuna at redhat.com
Thu Apr 23 15:39:29 UTC 2009


Rob Crittenden wrote:
> Some of the data coming back from dogtag is a horrific javascript 
> jumble, some of it is valid XML. In the case of XML lets use xml parsing 
> functions instead.
> 
> Also strip any CR/LF off stored passwords. Leaving them in will cause 
> NSS certdb authentication issues.
> 
> rob
I don't know much about dogtag, but after playing a bit with xml.dom.minidom, I 
think some of the checks in this patch need to be changed.

doc = xml.dom.minidom.parseString(stdout)

item_node = doc.getElementByTagName('Status')
# if there's no Status tag, item_node is empty, item_node[0] raises IndexError
# if the value is empty ('<Status></Status>') item_node[0].childNodes is empty, 
item_node.childNodes[0] raises IndexError
status = item_node[0].childNodes[0].data
# I think that status will never be None at this point
if status is not None:
#...

Something like this would probably make more sense:

item_node = doc.getElementsByTagName('Status')
try:
     status = item_node[0].childNodes[0].data
except (IndexError, AttributeError):
     pass
else:
     response['status'] = status

Other than that, it looks fine.

As I said I know almost nothing about dogtag, so maybe I'm wrong. I'm just 
commenting on what I can read from the code alone.

Pavel




More information about the Freeipa-devel mailing list