SourceFiles.org - Use the Source, Luke
Home | Register | News | Forums | Guide | MyLinks | Bookmark

Related Sites

Latest News
  General News
  Reviews
  Press Releases
  Software
  Hardware
  Security
  Tutorials
  Off Topic


Back to files

This directory tree contains the source code that is used to build Fortify for Netscape on its many platforms, plus the source code for 'md5', a program that calculates md5 checksums on an input file. The source code for 'md5' is partially derived from the code of the same name in the SSLeay distribution (version 0.6.3 was used as the reference).

Differences against the SSLeay version include fixes for two minor problems in the Win32 environment, plus code to accept and process a range specification, so that an md5 value can optionally be calculated on a sub-part of the input file.

As a normal matter of course, the Fortify source code is (and always has been) distributed as part of every release.

This is primarily done to allow you - if you wish - to audit the code and verify that Fortify does nothing secret or devious or while it is running. Naturally, you are also free to bend, twist and prod it to your heart's content (within the constraints of the Copyright). If you wish to make some improvements or additions to the code, such as adding your favourite GUI interface, then you are also encouraged to submit your contributions for possible inclusion in future Fortify releases.

The Fortify source code is divided into subparts, as follows:

  • 'common'

    The largest subpart. This is the core cross-platform code, written entirely in ANSI-C. It contains no human interface code. It can be thought of as an aggregate that exposes a set of high level entry points and user-interface callbacks.

  • 'cmdline'

    A command line interface to the 'common' routines, also written in ANSI-C. This is currently the primary interface on OS/2 and all Unix platforms. The command line code is deprecated on Windows 95/98/NT and MacOS.

  • 'mfc'

    A native Microsoft Windows GUI interface to the 'common' routines. This is written in C++ and built upon the MFC class library. It is a dialog based application, with interfaces to the registry, and the operating system, so it is platform specific. The code to interface with the Windows process table, and the code to draw the splash panel graphics have been based upon contributions from the CodeGuru web site (www.codeguru.com).

  • 'os2'

    A build area for the OS/2 port.

  • 'cw'

    A Metrowerks CodeWarrior GUI interface to the 'common' routines. This is written in C++ and based upon the PowerPlant class library. It is a dialog based application, with interfaces to the standard MacOS APIs, so it is platform specific.

Some brief build notes:

  • Unix

    Gcc is used on all Unix platforms to build the 'common' and 'cmdline' code. Both of these subdirectories contain Makefiles which you will need to check and configure before you attempt a make. Making in 'common' yields a library, libffy.a. Running a make in 'cmdline' compiles the two executables 'fortify' and 'md5', and links these programs against ../common/libffy.a.

  • Windows 95/98/NT

    Microsoft Visual C++ (v5) is used to compile the 'common' and 'mfc' code. The Fortify workspace and project control files are included to assist you with this. Note that you will also need a Windows port of the Unix Yacc and Lex tools in order to compile common/gram.y and common/lex.l. The Cygnus GnuWin32 distribution contains a complete suite of Unix development tools, including Yacc and Lex.

  • MacOS

    Metrowerks Code Warrior v4 is used to compile the 'common' and 'cw' code (in the past it has also been used to compile the 'cmdline' code). The 'cw' program is compiled without debugging and with no global optimizations. Global optimization has been observed to cause run-time errors in the compiled program.

        A note concerning gram.y and lex.l:  You will need a MacOS port of
        the Unix Yacc and Lex tools if you wish to compile common/gram.y and
        common/lex.l.  Pre-compiled versions - gram.tab.c and lex.c - are
        included in the 'common' directory to avoid this need.  A suitable
        Yacc compiler (Bison) plug-in can be downloaded from the Metrowerks
        web site.  When compiling gram.y, Yacc will report that the file
        contains "Shift-reduce" errors.  This message can be safely ignored.
  • OS/2

    Under OS/2, the Watcom v10 C compiler is used to build Fortify, in combination with the Emx ports of Yacc and Lex. If necessary, gram.c and lex.c can be created from gram.y and lex.l as follows:

    yacc gram.y yacc -d gram.y move y_tab.c gram.c flex -l lex.l move lexyy.c lex.c The full build is performed from within the 'os2' subdirectory. For some mysterious reason, the Watcom compiler can successfully complete the build only if a copy of ..\common\misc.h is placed in in the 'os2' subdirectory. The Watcom compiler also does not handle long file names.


Other Sites

Discussion Groups
  Beginners
  Distributions
  Networking / Security
  Software
  PDAs

About | FAQ | Privacy | Awards | Contact
Comments to the webmaster are welcome.
Copyright 2006 Sourcefiles.org All rights reserved.