[xmlsec] some changes for NSS support, some more pending

Tejkumar Arora tej at netscape.com
Tue Jul 15 08:59:13 PDT 2003


Hi Aleksey,
Thanks for the code review.... I'll fix these issues
and send you another patch, which will include some
more changes... (pkcs12...).

-Tej

Aleksey Sanin wrote:

 > Hi, Tej!
 >
 > I did a first pass thru your code and you can find my comments bellow. I
 > created
 > a new branch "XMLSEC_NSS_030714" and checked in this patch along with
 > my changes. I would suggest to use this branch till we clear all the
 > legal and technical
 > issues with xmlsec-nss.
 >
 > BTW, have you tried "make memcheck" (you need valgrind installed)? It
 > seems like
 > there might be some memory leaks in this code.
 >
 > Aleksey
 >
 > 0) General comments on style:
 >     - Please check the warnings! For example, you did not have "#include
 > <xmlsec/nss/pkikeys.h>"
 >     in src/nss/pkikeys.c and "#include <xmlsec/nss/bignum.h>" in
 > src/nss/bignum.c
 >     This might create problems for some platforms. In best case, you
 > should have zero
 >     warnings during compilation with "--enable-pedantic" configurure.in
 > option.
 >     I cleared some of the warnings but there are a lot more to do.
 >     - Please put explicit != NULL, != 0, etc. This makes code more easy
 > to read.
 >     - Please put figure brackets {} even if you have only one operator.
 >     For example
 >           if(aaa)
 >                 xmlFree(aaa);
 >     should be
 >           if(aaa != NULL) {
 >                 xmlFree(aaa);
 >           }
 >     - Please put round brackets for "return" like "return(0)"
 >     - Please round brackets in conditions like:
 >           if(privkey == NULL || pubkey == NULL)
 >       should be
 >           if((privkey == NULL) || (pubkey == NULL))
 >
 >
 > 1) GetFileContents() (src/nss/app.c) should probably be renamed to
 > something
 >   like xmlSecNssAppReadSECItem()
 > 2) xmlSecNssAppKeyLoad(src/nss/app.c)
 >        - xmlSecKeyDataPtr data; is not initialized and you do if(data)
 > after goto;
 >        probably it's better to add "= NULL".
 >        - "memset(&filecontent, 0, sizeof(SECItem));" IMHO, it's better
 > to use variable
 >        name in this case: memset(&filecontent, 0, sizeof(filecontent));
 >        - use "done" instead of "out" goto label
 > 3) xmlSecNSSPKIKeyDataCtxDup() (src/nss/pkikeys.c):
 >     - Don't use xmlSecAssert() to check result of copy operation; it's
 > an error
 >     if copy returns NULL, not an assert
 > 4) xmlSecNssKeyDataDsaXmlRead() and xmlSecNssKeyDataRsaXmlRead()
 > (src/nss/pkikeys.c):
 >     - "data" might be used w/o initialization
 >     - The following code looks wrong to me:
 >     if (ret == 0) {
 >         return ret;
 >     }
 >     if (pubkey != NULL) {
 >         SECKEY_DestroyPublicKey(pubkey);
 >     }
 >     if (data != NULL) {
 >         xmlSecKeyDataDestroy(data);
 >     }
 >     return (ret);
 >
 >     We either should always destroy "pubkey" (if it's not a part of
 > "data") or we should never
 >     destroy it (if it's a part of "data").
 >
 >     It would also great if you can avoid doing such "double returns".
 > This is very difficult to read
 >     and I bet that next time someone touch this code there would be an
 > error because of missed
 >     first return.
 >
 > 5) xmlSecNssX509FindCert() (src/nss/x509vfy.c):
 >        - I really don't like the code structure here: several goto
 > labels, etc. May be it would be better
 >     to split it in separate functions?
 > 6) xmlSecNssNodeSetBigNumValue() (src/nss/bignum.c):
 >        - The "size" variable was used uninitialized, you actually don't
 > need it there.
 >
 >
 >
 >
 >
 >
 >
 > _______________________________________________
 > xmlsec mailing list
 > xmlsec at aleksey.com
 > http://www.aleksey.com/mailman/listinfo/xmlsec





More information about the xmlsec mailing list