Hi David,

Thank you for taking a look at the patch and providing such thorough feedback 
so quickly.  I have done everything that you asked:

* Changed printf() calls to use msg().  The prints are not actually used right 
now, but they are a part of the debug code that I wrote for testing the 
certificate reading functions.  They were actually tested in a separate 
application, but I thought I should keep them with the rest of the code in case 
the certificate lookup functionality needs to be debugged inside of openvpn at 
a later date.

* Changed malloc calls to the gc_arena api.

* Removed the XCode project and updated configure.ac and Makefile.am to 
properly build the changes.  I was well aware that this is what needed to be 
done, I only included the XCode project in the first patch in the hopes that 
someone with XCode and Automake knowledge would take a look at it and give me 
some pointers.  You were correct, though, it was not as bad as I thought it was 
going to be.  The information you provided was very useful.  

* Removed the dummy1() function from keychain.c.  Keychain.c/.h are based on 
cryptoapi.c/.h in the openvpn source tree.  When editing the original file to 
work with the Keychain services libraries instead of the Windows Crypto API, I 
decided to change as little as possible, the theory being that what was there 
was approved and accepted.  You will see a static dummy() function defined at 
the bottom of that file as well.  I had no idea what it was there for, but I 
figured there was a reason for it so I left it alone.  I think I tacked on the 
1 to the end without thinking too hard because I was being very defensive and 
trying to prevent a scope problem, which was silly of me because the function 
is static and you would never compile Windows-only and Mac-only code at the 
same time.  If you grep for "dummy" in the source tree, you will see a number 
of places where this paradigm is used.  Perhaps because some compilers will not 
compile a file that has had all of its code ifdef'd out?  I tested this theory 
on my mac and no error occurred, so I went ahead and removed the function per 
your request.  I should also point out that cryptoapi.c makes calls to calloc, 
which you may want to change at some point if you are trying to standardize on 
the gc_arena API.

Please let me know if you have any questions or if more changes are required.

Thanks,
Brian Raderman


Attachment: osxkeychain.patch
Description: Binary data


On Apr 28, 2010, at 2:53 AM, David Sommerseth wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hi Brian,
> 
> Thanks a lot for your patch!  This is indeed a neat feature we want to
> really consider for inclusion!  But there are of course a few things I
> spotted which I'd like to see being improved.
> 
> I am not familiar with OSX details at all, but I hope someone else with
> better OSX understanding can review those parts more thoroughly.  My
> comments will be of the more generic type.
> 
> * usage of printf()
> Please use the msg() function instead.  Don't print things to console
> directly via {f,}printf() directly.  There are plenty of places in the
> code where you can see msg() being used for a lot of logging.
> 
> * malloc()
> You use malloc() several places.  If possible try to make use of the
> gc_arena API instead.  This API is also used a lot of places in the
> code, so you'll most likely find some good examples there as well.
> 
> * static void dummy1() function
> In osx/keychain.c you define a rather silly function, which is not used
> anywhere.  Please take this one out.
> 
> * xcode files and migration to autotools
> Even though Xcode is probably a very good tool on OSX, it's not what we
> can base OpenVPN on.  I would like to see this migrated over to
> autotools.  It's not as hard and difficult as you might think
> immediately, but there are several traps on the way.  Some traps more
> visible than others.
> 
> First of all, it's a pretty good autotools tutorial [1] which is worth
> going through to understand the concept and how to get started.
> 
> Then you'll need to modify configure.ac and Makefile.am.  And that's
> basically it.  Have a look for SOCKS in configure.ac to get an idea.
> Further, you'll also need to add the source files of our osx/ C and H
> files to openvpn_SOURCES.  But! These files should probably be depending
> on if this OSX feature is enabled or not.  There's probably several ways
> how to solve this, and I'm not sure what's the best solution right now.
> But digging into automake docs[2] might be the proper place to start.
> 
> When you think you're done, ./configure works and it seems to compile
> flawlessly by running 'make', try runnning 'make distcheck' to be sure
> it will package itself properly, that the test compilation and test run
> works as expected as well.
> 
> 
> That's basically all I had to comment so far.  But thanks again for your
> patch!  Looking forward to hear from you again with further updates as well.
> 
> 
> kind regards,
> 
> David Sommerseth
> 
> 
> [1] <http://www.lrde.epita.fr/~adl/autotools.html>
> [2] <http://sources.redhat.com/automake/automake.html>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/
> 
> iEYEARECAAYFAkvX23gACgkQDC186MBRfroWXgCfeZUA1pFrSsu55MMk3gg9TIcJ
> M0EAoKO/OYi2v5YMNDankep5vqMEX7hC
> =sXAB
> -----END PGP SIGNATURE-----

Reply via email to