Revision: 863 http://trac.macosforge.org/projects/darwinbuild/changeset/863 Author: wsiegrist@apple.com Date: 2010-08-10 17:32:06 -0700 (Tue, 10 Aug 2010) Log Message: ----------- Merge PR-8279204 (again) Modified Paths: -------------- trunk/archs.sh trunk/darwinbuild/darwinbuild.common trunk/darwinbuild/darwinbuild.in trunk/darwinbuild/manifest.c trunk/darwinbuild.xcodeproj/project.pbxproj trunk/darwinup/DB.cpp trunk/darwinup/Digest.cpp trunk/darwinup/Digest.h trunk/darwinxref/plugins/c_plugins.xcconfig trunk/darwinxref/plugins/register.c Added Paths: ----------- trunk/darwinbuild/digest.c Removed Paths: ------------- trunk/darwinbuild/Makefile trunk/darwinup/Makefile trunk/darwinxref/Makefile Property Changed: ---------------- trunk/ Property changes on: trunk ___________________________________________________________________ Modified: svn:mergeinfo - /branches/PR-4841388:399-419 /branches/PR-6358021:442-443 /branches/PR-6392966:423-427 /branches/PR-6398060:433-434 /branches/PR-6493844:460-461 /branches/PR-6497694:466-468,471 /branches/PR-6634286:632-650 /branches/PR-6688645:479-490 /branches/PR-6722857:495-499 /branches/PR-6729491:655-664 /branches/PR-6973110:804-813 /branches/PR-7250612:635-650 /branches/PR-7341154:682-694 /branches/PR-7431723:660-664 /branches/PR-7461534:650-664 /branches/PR-7482850:670-671 /branches/PR-7489777:676-731 /branches/PR-7529688:692-694 /branches/PR-7593824:739-772 /branches/PR-7598640:703-731 /branches/PR-7748469:777-785 /branches/PR-7765119:790-791 /branches/PR-7798586:796-799 /branches/PR-7872907:830-840 /branches/PR-7935095:819-821 /branches/PR-8116613:849 /branches/PR-8279204:861 + /branches/PR-4841388:399-419 /branches/PR-6358021:442-443 /branches/PR-6392966:423-427 /branches/PR-6398060:433-434 /branches/PR-6493844:460-461 /branches/PR-6497694:466-468,471 /branches/PR-6634286:632-650 /branches/PR-6688645:479-490 /branches/PR-6722857:495-499 /branches/PR-6729491:655-664 /branches/PR-6973110:804-813 /branches/PR-7250612:635-650 /branches/PR-7341154:682-694 /branches/PR-7431723:660-664 /branches/PR-7461534:650-664 /branches/PR-7482850:670-671 /branches/PR-7489777:676-731 /branches/PR-7529688:692-694 /branches/PR-7593824:739-772 /branches/PR-7598640:703-731 /branches/PR-7748469:777-785 /branches/PR-7765119:790-791 /branches/PR-7798586:796-799 /branches/PR-7872907:830-840 /branches/PR-7935095:819-821 /branches/PR-8116613:849 /branches/PR-8279204:854-862 Modified: trunk/archs.sh =================================================================== --- trunk/archs.sh 2010-08-11 00:30:59 UTC (rev 862) +++ trunk/archs.sh 2010-08-11 00:32:06 UTC (rev 863) @@ -4,7 +4,6 @@ # Detect which arches we should build for # -CRYPTO_ARCHS=`lipo -info /usr/lib/libcrypto.dylib | cut -d : -f 3` SQLITE_ARCHS=`lipo -info /usr/lib/libsqlite3.dylib | cut -d : -f 3` TCL_ARCHS=`lipo -info /usr/lib/libtcl.dylib | cut -d : -f 3` SYSTEM_ARCHS=`lipo -info /usr/lib/libSystem.dylib | cut -d : -f 3` @@ -15,7 +14,7 @@ for ARCH in $SYSTEM_ARCHS; do # crosscheck against the remaining sets... - for ALIST in "$CRYPTO_ARCHS" "$SQLITE_ARCHS" "$TCL_ARCHS"; + for ALIST in "$SQLITE_ARCHS" "$TCL_ARCHS"; do # see if ARCH is not in ALIST if [[ ${ALIST/$ARCH} == $ALIST ]]; Deleted: trunk/darwinbuild/Makefile =================================================================== --- trunk/darwinbuild/Makefile 2010-08-11 00:30:59 UTC (rev 862) +++ trunk/darwinbuild/Makefile 2010-08-11 00:32:06 UTC (rev 863) @@ -1,75 +0,0 @@ -include ../common.mk - -### -### Variables for the 'install' phase -### -DATDIR:=$(DATDIR)/darwinbuild - -PrefixReplacements = darwinbuild \ - darwinmaster.sh \ - packageRoots.sh \ - thinPackages.sh \ - installXcode \ - installXcode32 - -all: manifest prefixes - -manifest: manifest.c - cc $(CFLAGS) -Wall -Werror -o $(OBJROOT)/$@ -lcrypto $^ - -prefixes: $(PrefixReplacements) - -$(PrefixReplacements): % : %.in - $(SED) -e 's,%%PREFIX%%,$(PREFIX),' $@.in > $@ ; - -install: all - [ -d $(BINDIR) ] || $(INSTALL) -d $(INSTALL_DIR_FLAGS) $(BINDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) darwinbuild $(BINDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) darwinmaster $(BINDIR) - - [ -d $(DATDIR) ] || $(INSTALL) -d $(INSTALL_DIR_FLAGS) $(DATDIR) - $(INSTALL) $(INSTALL_DOC_FLAGS) darwinbuild.common $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) installXcode $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) installXcode2 $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) installXcode3 $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) installXcode31 $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) installXcode32 $(DATDIR) - $(INSTALL) $(INSTALL_DOC_FLAGS) Info.plist $(DATDIR) - $(INSTALL) $(INSTALL_DOC_FLAGS) SDKSettings.plist $(DATDIR) - - $(INSTALL) $(INSTALL_EXE_FLAGS) createChroot $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) $(OBJROOT)/manifest $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) ditto $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) buildlist $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) buildorder $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) packageRoots $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) synthfat $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) thinFile $(DATDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) thinPackages $(DATDIR) - -uninstall: - rm -f $(BINDIR)/darwinbuild - rm -f $(BINDIR)/darwinmaster - rm -f $(DATDIR)/darwinbuild.common - rm -f $(DATDIR)/installXcode - rm -f $(DATDIR)/installXcode2 - rm -f $(DATDIR)/installXcode3 - rm -f $(DATDIR)/installXcode31 - rm -f $(DATDIR)/installXcode32 - rm -f $(DATDIR)/Info.plist - rm -f $(DATDIR)/SDKSettings.plist - rm -f $(DATDIR)/createChroot - rm -f $(DATDIR)/manifest - rm -f $(DATDIR)/ditto - rm -f $(DATDIR)/buildlist - rm -f $(DATDIR)/buildorder - rm -f $(DATDIR)/packageRoots - rm -f $(DATDIR)/synthfat - rm -f $(DATDIR)/thinFile - rm -f $(DATDIR)/thinPackages - - -clean: - rm -f manifest - @$(foreach SCRIPT,$(PrefixReplacements), \ - rm -f $(SCRIPT) ; ) Modified: trunk/darwinbuild/darwinbuild.common =================================================================== --- trunk/darwinbuild/darwinbuild.common 2010-08-11 00:30:59 UTC (rev 862) +++ trunk/darwinbuild/darwinbuild.common 2010-08-11 00:32:06 UTC (rev 863) @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (c) 2005, Apple Computer, Inc. All rights reserved. +# Copyright (c) 2005-2010, Apple Computer, Inc. All rights reserved. # # @APPLE_BSD_LICENSE_HEADER_START@ # @@ -533,10 +533,10 @@ echo "ERROR: Could not access $HashSource" 1>&2 exit 1 fi - Hash=$(openssl dgst -sha1 < "$HashSource") + Hash=$($DIGEST < "$HashSource") echo "# Hash of $HashSource" >> "$TmpFile" else - Hash=$(openssl dgst -sha1 < "$TmpFile") + Hash=$($DIGEST < "$TmpFile") fi cp "$TmpFile" "$receipts/$Hash" Modified: trunk/darwinbuild/darwinbuild.in =================================================================== --- trunk/darwinbuild/darwinbuild.in 2010-08-11 00:30:59 UTC (rev 862) +++ trunk/darwinbuild/darwinbuild.in 2010-08-11 00:32:06 UTC (rev 863) @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (c) 2004-2005, Apple Computer, Inc. All rights reserved. +# Copyright (c) 2004-2010, Apple Computer, Inc. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -81,6 +81,7 @@ NFSDIR=.build/buildroot.nfs DARWINXREF=$PREFIX/bin/darwinxref DATADIR=$PREFIX/share/darwinbuild +DIGEST=$DATADIR/digest COMMONFILE=$DATADIR/darwinbuild.common DARWINTRACE=$DATADIR/darwintrace.dylib DITTO=$DATADIR/ditto @@ -993,7 +994,7 @@ ### Output the manifest MANIFEST="/tmp/$projnam.$$" "$DARWINXREF" register "$projnam" "$REAL_DSTROOT" | tee "$MANIFEST" - SHA1=$(cat "$MANIFEST" | openssl dgst -sha1) + SHA1=$(cat "$MANIFEST" | $DIGEST) mkdir -p "$REAL_DSTROOT/usr/local/darwinbuild/receipts" cp "$MANIFEST" "$REAL_DSTROOT/usr/local/darwinbuild/receipts/$SHA1" ln -s "$SHA1" "$REAL_DSTROOT/usr/local/darwinbuild/receipts/$projnam.hdrs" @@ -1007,7 +1008,7 @@ ### in the receipts directory after registration. MANIFEST="/tmp/$projnam.$$" "$DARWINXREF" register "$projnam" "$REAL_DSTROOT" | tee "$MANIFEST" - SHA1=$(cat "$MANIFEST" | openssl dgst -sha1) + SHA1=$(cat "$MANIFEST" | $DIGEST) mkdir -p "$REAL_DSTROOT/usr/local/darwinbuild/receipts" cp "$MANIFEST" "$REAL_DSTROOT/usr/local/darwinbuild/receipts/$SHA1" ln -s "$SHA1" "$REAL_DSTROOT/usr/local/darwinbuild/receipts/$projnam" Copied: trunk/darwinbuild/digest.c (from rev 860, branches/PR-8279204/darwinbuild/digest.c) =================================================================== --- trunk/darwinbuild/digest.c (rev 0) +++ trunk/darwinbuild/digest.c 2010-08-11 00:32:06 UTC (rev 863) @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2010 Apple Computer, Inc. All rights reserved. + * + * @APPLE_BSD_LICENSE_HEADER_START@ + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @APPLE_BSD_LICENSE_HEADER_END@ + */ + +#include <sys/types.h> +#include <errno.h> +#include <unistd.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <CommonCrypto/CommonDigest.h> + + +void print_usage() { + fprintf(stdout, "digest [-1] \n"); + fprintf(stdout, " Print digest hash of stdin to stdout. \n"); + fprintf(stdout, " \n"); + fprintf(stdout, " -1 Use SHA1 hash (default) \n"); + fprintf(stdout, " \n"); +} + +char* format_digest(const unsigned char* m) { + char* result = NULL; + // SHA-1 + asprintf(&result, + "%02x%02x%02x%02x" + "%02x%02x%02x%02x" + "%02x%02x%02x%02x" + "%02x%02x%02x%02x" + "%02x%02x%02x%02x", + m[0], m[1], m[2], m[3], + m[4], m[5], m[6], m[7], + m[8], m[9], m[10], m[11], + m[12], m[13], m[14], m[15], + m[16], m[17], m[18], m[19] + ); + return result; +} + +char* calculate_digest(int fd) { + unsigned char md[CC_SHA1_DIGEST_LENGTH]; + CC_SHA1_CTX c; + CC_SHA1_Init(&c); + + memset(md, 0, CC_SHA1_DIGEST_LENGTH); + + ssize_t len; + const unsigned int blocklen = 8192; + unsigned char* block = (unsigned char*)malloc(blocklen); + if (!block) { + errno = ENOMEM; + return NULL; + } + while(1) { + len = read(fd, block, blocklen); + if (len == 0) { close(fd); break; } + if ((len < 0) && (errno == EINTR)) continue; + if (len < 0) { close(fd); return NULL; } + CC_SHA1_Update(&c, block, (size_t)len); + } + + CC_SHA1_Final(md, &c); + free(block); + return format_digest(md); +} + + +int main(int argc, char* argv[]) { + + int digest = 1; // default to SHA1 + + int ch; + while ((ch = getopt(argc, argv, "1")) != -1) { + switch (ch) { + case '1': + digest = 1; + break; + case '?': + default: + print_usage(); + exit(1); + } + } + argc -= optind; + argv += optind; + + fprintf(stdout, "%s\n", calculate_digest(fileno(stdin))); + + return 0; +} Modified: trunk/darwinbuild/manifest.c =================================================================== --- trunk/darwinbuild/manifest.c 2010-08-11 00:30:59 UTC (rev 862) +++ trunk/darwinbuild/manifest.c 2010-08-11 00:32:06 UTC (rev 863) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2005-2010 Apple Computer, Inc. All rights reserved. * * @APPLE_BSD_LICENSE_HEADER_START@ * @@ -40,7 +40,8 @@ #include <stdio.h> #include <unistd.h> #include <string.h> -#include <openssl/evp.h> +#include <stdlib.h> +#include <CommonCrypto/CommonDigest.h> static char* format_digest(const unsigned char* m) { @@ -62,21 +63,12 @@ } static char* calculate_digest(int fd) { - unsigned char digstr[EVP_MAX_MD_SIZE]; - memset(digstr, 0, sizeof(digstr)); + unsigned char md[CC_SHA1_DIGEST_LENGTH]; + CC_SHA1_CTX c; + CC_SHA1_Init(&c); - EVP_MD_CTX ctx; - static const EVP_MD* md; + memset(md, 0, CC_SHA1_DIGEST_LENGTH); - if (md == NULL) { - EVP_MD_CTX_init(&ctx); - OpenSSL_add_all_digests(); - md = EVP_get_digestbyname("sha1"); - if (md == NULL) return NULL; - } - - EVP_DigestInit(&ctx, md); - ssize_t len; const unsigned int blocklen = 8192; static unsigned char* block = NULL; @@ -88,11 +80,11 @@ if (len == 0) { close(fd); break; } if ((len < 0) && (errno == EINTR)) continue; if (len < 0) { close(fd); return NULL; } - EVP_DigestUpdate(&ctx, block, (size_t)len); + CC_SHA1_Update(&c, block, (size_t)len); } - - EVP_DigestFinal(&ctx, digstr, NULL); - return format_digest(digstr); + + CC_SHA1_Final(md, &c); + return format_digest(md); } static int compare(const FTSENT **a, const FTSENT **b) { Modified: trunk/darwinbuild.xcodeproj/project.pbxproj =================================================================== --- trunk/darwinbuild.xcodeproj/project.pbxproj 2010-08-11 00:30:59 UTC (rev 862) +++ trunk/darwinbuild.xcodeproj/project.pbxproj 2010-08-11 00:32:06 UTC (rev 863) @@ -25,6 +25,7 @@ 7227AD1B109A053900BE33D7 /* CopyFiles */, ); dependencies = ( + 720BE2F6120C90E500B3C4A5 /* PBXTargetDependency */, 7227AC421098DC6A00BE33D7 /* PBXTargetDependency */, 7227AC401098DC6A00BE33D7 /* PBXTargetDependency */, 7227AC3E1098DC6A00BE33D7 /* PBXTargetDependency */, @@ -101,6 +102,7 @@ /* Begin PBXBuildFile section */ 61E0A6BD10A8DCC700DA7EBC /* exportIndex.c in Sources */ = {isa = PBXBuildFile; fileRef = 72C86BFF10965EEA00C66E90 /* exportIndex.c */; }; + 720BE2F4120C90C500B3C4A5 /* digest.c in Sources */ = {isa = PBXBuildFile; fileRef = 720BE2E9120C909E00B3C4A5 /* digest.c */; }; 7227AB41109897D500BE33D7 /* binary_sites.tcl in CopyFiles */ = {isa = PBXBuildFile; fileRef = 72C86BF310965EEA00C66E90 /* binary_sites.tcl */; }; 7227AB42109897D500BE33D7 /* branch.tcl in CopyFiles */ = {isa = PBXBuildFile; fileRef = 72C86BF410965EEA00C66E90 /* branch.tcl */; }; 7227AB43109897D500BE33D7 /* currentBuild.tcl in CopyFiles */ = {isa = PBXBuildFile; fileRef = 72C86BF610965EEA00C66E90 /* currentBuild.tcl */; }; @@ -109,7 +111,6 @@ 7227AB46109897D500BE33D7 /* macosx.tcl in CopyFiles */ = {isa = PBXBuildFile; fileRef = 72C86C0710965EEA00C66E90 /* macosx.tcl */; }; 7227AB67109899A600BE33D7 /* cfutils.h in Headers */ = {isa = PBXBuildFile; fileRef = 72C86BE910965E7500C66E90 /* cfutils.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7227AB68109899A600BE33D7 /* DBPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 72C86BED10965E7500C66E90 /* DBPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7227AB7210989AAF00BE33D7 /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72C86CE110974CC700C66E90 /* libcrypto.dylib */; }; 7227AB7510989F8D00BE33D7 /* manifest.c in Sources */ = {isa = PBXBuildFile; fileRef = 72C86C2E1096600B00C66E90 /* manifest.c */; }; 7227ACA01098FCAA00BE33D7 /* libredo_prebinding.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72C86CDD10974C3A00C66E90 /* libredo_prebinding.a */; }; 7227AD1C109A05FA00BE33D7 /* buildlist in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7227AB871098A7BF00BE33D7 /* buildlist */; }; @@ -162,7 +163,6 @@ 72C86C9D109745BC00C66E90 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 72C86BE210965E4F00C66E90 /* main.cpp */; }; 72C86C9E109745BC00C66E90 /* SerialSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 72C86BE410965E4F00C66E90 /* SerialSet.cpp */; }; 72C86C9F109745BC00C66E90 /* Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 72C86BE610965E4F00C66E90 /* Utils.cpp */; }; - 72C86CE210974CC800C66E90 /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72C86CE110974CC700C66E90 /* libcrypto.dylib */; }; 72C86CE410974CC800C66E90 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72C86CE310974CC800C66E90 /* libsqlite3.dylib */; }; 72D05CB811D2680500B33EDD /* query.c in Sources */ = {isa = PBXBuildFile; fileRef = 72D05CA911D2678F00B33EDD /* query.c */; }; DF12E2821119E2B0007587C1 /* DB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF12E2811119E2B0007587C1 /* DB.cpp */; }; @@ -173,6 +173,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 720BE2F5120C90E500B3C4A5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 726DD14910965C5700D5AEAB /* Project object */; + proxyType = 1; + remoteGlobalIDString = 720BE2EA120C90A700B3C4A5; + remoteInfo = digest; + }; 7227AB0F1097BBA900BE33D7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 726DD14910965C5700D5AEAB /* Project object */; @@ -597,7 +604,7 @@ isa = PBXContainerItemProxy; containerPortal = 726DD14910965C5700D5AEAB /* Project object */; proxyType = 1; - remoteGlobalIDString = 72D05CAD11D267C400B33EDD /* query */; + remoteGlobalIDString = 72D05CAD11D267C400B33EDD; remoteInfo = query; }; DFCB82D9109A2F9A00D2DB2F /* PBXContainerItemProxy */ = { @@ -660,6 +667,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 720BE2E9120C909E00B3C4A5 /* digest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = digest.c; path = darwinbuild/digest.c; sourceTree = "<group>"; }; + 720BE2F2120C90A700B3C4A5 /* digest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = digest; sourceTree = BUILT_PRODUCTS_DIR; }; 7227AB6D10989A9900BE33D7 /* manifest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = manifest; sourceTree = BUILT_PRODUCTS_DIR; }; 7227AB871098A7BF00BE33D7 /* buildlist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = buildlist; path = darwinbuild/buildlist; sourceTree = "<group>"; }; 7227AB881098A7BF00BE33D7 /* buildorder */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = buildorder; path = darwinbuild/buildorder; sourceTree = "<group>"; }; @@ -771,10 +780,9 @@ 72C86C481096609500C66E90 /* darwinup */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = darwinup; sourceTree = BUILT_PRODUCTS_DIR; }; 72C86C52109660CA00C66E90 /* darwintrace.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = darwintrace.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; 72C86CDD10974C3A00C66E90 /* libredo_prebinding.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libredo_prebinding.a; path = /usr/local/lib/libredo_prebinding.a; sourceTree = "<absolute>"; }; - 72C86CE110974CC700C66E90 /* libcrypto.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcrypto.dylib; path = /usr/lib/libcrypto.dylib; sourceTree = "<absolute>"; }; 72C86CE310974CC800C66E90 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = /usr/lib/libsqlite3.dylib; sourceTree = "<absolute>"; }; 72D05CA911D2678F00B33EDD /* query.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = query.c; sourceTree = "<group>"; }; - 72D05CB711D267C400B33EDD /* register copy.so */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.objfile"; includeInIndex = 0; path = "register copy.so"; sourceTree = BUILT_PRODUCTS_DIR; }; + 72D05CB711D267C400B33EDD /* query.so */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.objfile"; includeInIndex = 0; path = query.so; sourceTree = BUILT_PRODUCTS_DIR; }; DF12E2801119E2B0007587C1 /* DB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DB.h; path = darwinup/DB.h; sourceTree = "<group>"; }; DF12E2811119E2B0007587C1 /* DB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DB.cpp; path = darwinup/DB.cpp; sourceTree = "<group>"; }; DFC9772711138F9400CAE084 /* Column.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Column.cpp; path = darwinup/Column.cpp; sourceTree = "<group>"; }; @@ -787,11 +795,17 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 720BE2ED120C90A700B3C4A5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 7227AB6B10989A9900BE33D7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7227AB7210989AAF00BE33D7 /* libcrypto.dylib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -970,7 +984,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 72C86CE210974CC800C66E90 /* libcrypto.dylib in Frameworks */, 72C86CE410974CC800C66E90 /* libsqlite3.dylib in Frameworks */, 7227ACA01098FCAA00BE33D7 /* libredo_prebinding.a in Frameworks */, ); @@ -1002,7 +1015,6 @@ 72C86BD510965DC900C66E90 /* darwinbuild */, 72C86C391096607900C66E90 /* Products */, 72C86CDD10974C3A00C66E90 /* libredo_prebinding.a */, - 72C86CE110974CC700C66E90 /* libcrypto.dylib */, 72C86CE310974CC800C66E90 /* libsqlite3.dylib */, 72574A0F10977F7A00B13BC3 /* CoreFoundation.framework */, 72574A1410977FAD00B13BC3 /* libtcl.dylib */, @@ -1013,6 +1025,7 @@ 72C86BD510965DC900C66E90 /* darwinbuild */ = { isa = PBXGroup; children = ( + 720BE2E9120C909E00B3C4A5 /* digest.c */, 7227AB871098A7BF00BE33D7 /* buildlist */, 7227AB881098A7BF00BE33D7 /* buildorder */, 7227AB891098A7BF00BE33D7 /* ditto */, @@ -1167,7 +1180,8 @@ 7227AC1C1098D8DB00BE33D7 /* thinPackages */, 7227AC251098DB9200BE33D7 /* installXcode */, 7227AC2E1098DBDF00BE33D7 /* installXcode32 */, - 72D05CB711D267C400B33EDD /* register copy.so */, + 72D05CB711D267C400B33EDD /* query.so */, + 720BE2F2120C90A700B3C4A5 /* digest */, ); name = Products; sourceTree = "<group>"; @@ -1194,6 +1208,22 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + 720BE2EA120C90A700B3C4A5 /* digest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 720BE2EE120C90A700B3C4A5 /* Build configuration list for PBXNativeTarget "digest" */; + buildPhases = ( + 720BE2EB120C90A700B3C4A5 /* Sources */, + 720BE2ED120C90A700B3C4A5 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = digest; + productName = digest; + productReference = 720BE2F2120C90A700B3C4A5 /* digest */; + productType = "com.apple.product-type.tool"; + }; 7227AB6C10989A9900BE33D7 /* manifest */ = { isa = PBXNativeTarget; buildConfigurationList = 7227AB7310989ACD00BE33D7 /* Build configuration list for PBXNativeTarget "manifest" */; @@ -1763,7 +1793,7 @@ ); name = query; productName = configuration; - productReference = 72D05CB711D267C400B33EDD /* register copy.so */; + productReference = 72D05CB711D267C400B33EDD /* query.so */; productType = "com.apple.product-type.objfile"; }; /* End PBXNativeTarget section */ @@ -1822,6 +1852,7 @@ 7227AC1E1098DB9200BE33D7 /* installXcode */, 7227AC271098DBDF00BE33D7 /* installXcode32 */, 7227AC7E1098EF6400BE33D7 /* libredo_prebinding.a */, + 720BE2EA120C90A700B3C4A5 /* digest */, ); }; /* End PBXProject section */ @@ -2023,6 +2054,14 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 720BE2EB120C90A700B3C4A5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 720BE2F4120C90C500B3C4A5 /* digest.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 7227AB6A10989A9900BE33D7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2264,6 +2303,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 720BE2F6120C90E500B3C4A5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 720BE2EA120C90A700B3C4A5 /* digest */; + targetProxy = 720BE2F5120C90E500B3C4A5 /* PBXContainerItemProxy */; + }; 7227AB101097BBA900BE33D7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 725740981097B051008AD4D7 /* darwinxref_plugins */; @@ -2577,6 +2621,33 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 720BE2EF120C90A700B3C4A5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7227AB9C1098AAE100BE33D7 /* prefix.xcconfig */; + buildSettings = { + INSTALL_PATH = "$(DATDIR)/darwinbuild"; + PRODUCT_NAME = digest; + }; + name = Debug; + }; + 720BE2F0120C90A700B3C4A5 /* Public */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7227AB9C1098AAE100BE33D7 /* prefix.xcconfig */; + buildSettings = { + INSTALL_PATH = "$(DATDIR)/darwinbuild"; + PRODUCT_NAME = digest; + }; + name = Public; + }; + 720BE2F1120C90A700B3C4A5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7227AB9C1098AAE100BE33D7 /* prefix.xcconfig */; + buildSettings = { + INSTALL_PATH = "$(DATDIR)/darwinbuild"; + PRODUCT_NAME = digest; + }; + name = Release; + }; 7227AB3E1098977D00BE33D7 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7227AB9C1098AAE100BE33D7 /* prefix.xcconfig */; @@ -3605,6 +3676,16 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 720BE2EE120C90A700B3C4A5 /* Build configuration list for PBXNativeTarget "digest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 720BE2EF120C90A700B3C4A5 /* Debug */, + 720BE2F0120C90A700B3C4A5 /* Public */, + 720BE2F1120C90A700B3C4A5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Public; + }; 7227AB4A109897E500BE33D7 /* Build configuration list for PBXAggregateTarget "tcl_plugins" */ = { isa = XCConfigurationList; buildConfigurations = ( Modified: trunk/darwinup/DB.cpp =================================================================== --- trunk/darwinup/DB.cpp 2010-08-11 00:30:59 UTC (rev 862) +++ trunk/darwinup/DB.cpp 2010-08-11 00:32:06 UTC (rev 863) @@ -155,13 +155,13 @@ uint64_t size; memcpy(&size, &data[this->file_offset(6)], sizeof(uint64_t)); - Digest* digest = NULL; + SHA1Digest* digest = NULL; uint8_t* dp; memcpy(&dp, &data[this->file_offset(7)], sizeof(uint8_t*)); if (dp) { - digest = new Digest(); - digest->m_size = 20; // size of SHA1 hash - memcpy(digest->m_data, dp, 20); + digest = new SHA1Digest(); + digest->m_size = CC_SHA1_DIGEST_LENGTH; + memcpy(digest->m_data, dp, CC_SHA1_DIGEST_LENGTH); } char* path; Modified: trunk/darwinup/Digest.cpp =================================================================== --- trunk/darwinup/Digest.cpp 2010-08-11 00:30:59 UTC (rev 862) +++ trunk/darwinup/Digest.cpp 2010-08-11 00:32:06 UTC (rev 863) @@ -49,50 +49,6 @@ #include "redo_prebinding.h" } -Digest::Digest() { - memset(m_data, 0, sizeof(m_data)); - m_size = 0; -} - -Digest::Digest(const EVP_MD* md, int fd) { - digest(md, fd); -} - -void Digest::digest(const EVP_MD* md, int fd) { - EVP_MD_CTX ctx; - EVP_MD_CTX_init(&ctx); - EVP_DigestInit(&ctx, md); - - int len; - const unsigned int blocklen = 8192; - static uint8_t* block = NULL; - if (block == NULL) { - block = (uint8_t*)malloc(blocklen); - } - while(1) { - len = read(fd, block, blocklen); - if (len == 0) { close(fd); break; } - if ((len < 0) && (errno == EINTR)) continue; - if (len < 0) { close(fd); return; } - EVP_DigestUpdate(&ctx, block, len); - } - if (len >= 0) { - EVP_DigestFinal(&ctx, m_data, &m_size); - } -} - -Digest::Digest(const EVP_MD* md, uint8_t* data, uint32_t size) { - digest(md, data, size); -} - -void Digest::digest(const EVP_MD* md, uint8_t* data, uint32_t size) { - EVP_MD_CTX ctx; - EVP_MD_CTX_init(&ctx); - EVP_DigestInit(&ctx, md); - EVP_DigestUpdate(&ctx, data, size); - EVP_DigestFinal(&ctx, m_data, &m_size); -} - uint8_t* Digest::data() { return m_data; } uint32_t Digest::size() { return m_size; } @@ -121,45 +77,51 @@ return (memcmp(a->data(), b->data(), a_size) == 0); } - -const EVP_MD* SHA1Digest::m_md; - SHA1Digest::SHA1Digest() { - if (m_md == NULL) { - OpenSSL_add_all_digests(); - m_md = EVP_get_digestbyname("sha1"); - assert(m_md != NULL); - } + m_size = CC_SHA1_DIGEST_LENGTH; } SHA1Digest::SHA1Digest(int fd) { - if (m_md == NULL) { - OpenSSL_add_all_digests(); - m_md = EVP_get_digestbyname("sha1"); - assert(m_md != NULL); - } - digest(m_md, fd); + m_size = CC_SHA1_DIGEST_LENGTH; + digest(m_data, fd); } SHA1Digest::SHA1Digest(const char* filename) { + m_size = CC_SHA1_DIGEST_LENGTH; int fd = open(filename, O_RDONLY); - if (m_md == NULL) { - OpenSSL_add_all_digests(); - m_md = EVP_get_digestbyname("sha1"); - assert(m_md != NULL); - } - digest(m_md, fd); + digest(m_data, fd); } SHA1Digest::SHA1Digest(uint8_t* data, uint32_t size) { - if (m_md == NULL) { - OpenSSL_add_all_digests(); - m_md = EVP_get_digestbyname("sha1"); - assert(m_md != NULL); + m_size = CC_SHA1_DIGEST_LENGTH; + digest(m_data, data, size); +} + +void SHA1Digest::digest(unsigned char* md, int fd) { + CC_SHA1_CTX c; + CC_SHA1_Init(&c); + + int len; + const unsigned int blocklen = 8192; + static uint8_t* block = NULL; + if (block == NULL) { + block = (uint8_t*)malloc(blocklen); } - digest(m_md, data, size); + while(1) { + len = read(fd, block, blocklen); + if (len == 0) { close(fd); break; } + if ((len < 0) && (errno == EINTR)) continue; + if (len < 0) { close(fd); return; } + CC_SHA1_Update(&c, block, (size_t)len); + } + if (len >= 0) { + CC_SHA1_Final(md, &c); + } } +void SHA1Digest::digest(unsigned char* md, uint8_t* data, uint32_t size) { + CC_SHA1((const void*)data, (CC_LONG)size, md); +} SHA1DigestMachO::SHA1DigestMachO(const char* filename) { char* error = NULL; @@ -182,11 +144,11 @@ &block, &blocklen); if (ret == REDO_PREBINDING_SUCCESS && block != NULL) { - digest(SHA1Digest::m_md, (uint8_t*)block, blocklen); + digest(m_data, (uint8_t*)block, blocklen); } else { //fprintf(stderr, "%s:%d: unexpected unprebind result: %s: %s (%d)\n", __FILE__, __LINE__, filename, error, ret); int fd = open(filename, O_RDONLY); - digest(SHA1Digest::m_md, fd); + digest(m_data, fd); close(fd); } if (block != NULL) { @@ -195,7 +157,7 @@ } } else { int fd = open(filename, O_RDONLY); - digest(SHA1Digest::m_md, fd); + digest(m_data, fd); close(fd); } } @@ -206,6 +168,6 @@ if (res == -1) { fprintf(stderr, "%s:%d: readlink: %s: %s (%d)\n", __FILE__, __LINE__, filename, strerror(errno), errno); } else { - digest(SHA1Digest::m_md, (uint8_t*)link, res); + digest(m_data, (uint8_t*)link, res); } } Modified: trunk/darwinup/Digest.h =================================================================== --- trunk/darwinup/Digest.h 2010-08-11 00:30:59 UTC (rev 862) +++ trunk/darwinup/Digest.h 2010-08-11 00:32:06 UTC (rev 863) @@ -35,34 +35,25 @@ #include <sys/types.h> #include <stdint.h> -#include <openssl/evp.h> +#include <CommonCrypto/CommonDigest.h> #include "Utils.h" //// // Digest // -// Digest is the root class for all message digest algorithms -// supported by darwinup. +// Digest is the abstract root class for all message digest algorithms +// supported by darwinup. Subclasses must implement the constructors +// and digest() APIs. // -// Conceptually it's an abstract class, although that -// hasn't been formalized. -// // SHA1Digest is the only concrete subclass. There are two // subclasses of SHA1Digest which add convenience functions // for digesting a canonicalized Mach-O binary, and the // target of a symlink obtained by readlink(2). // -// NOTE: It might be more appropriate to use the CommonCrypto -// implementation of these algorithms rather than the OpenSSL -// implementation. However, CommonCrypto is only available on -// Tiger. //// struct Digest { - Digest(); - Digest(const EVP_MD* md, int fd); - Digest(const EVP_MD* md, uint8_t* data, uint32_t size); //// // Accessor functions @@ -74,7 +65,7 @@ // Returns the size of the raw digest. virtual uint32_t size(); - // Returns the digest as an ASCIZ string, represented in hexidecimal. + // Returns the digest as an ASCII string, represented in hexidecimal. virtual char* string(); //// @@ -88,11 +79,11 @@ protected: - virtual void digest(const EVP_MD* md, int fd); - virtual void digest(const EVP_MD* md, uint8_t* data, uint32_t size); + virtual void digest(unsigned char* md, int fd) = 0; + virtual void digest(unsigned char* md, uint8_t* data, uint32_t size) = 0; - uint8_t m_data[EVP_MAX_MD_SIZE]; - uint32_t m_size; + unsigned char m_data[CC_SHA512_DIGEST_LENGTH]; // support up to 64 bytes + uint32_t m_size; friend struct Depot; friend struct DarwinupDatabase; @@ -102,8 +93,6 @@ // SHA1Digest //// struct SHA1Digest : Digest { - static const EVP_MD* m_md; - // Creates an empty digest. SHA1Digest(); @@ -115,6 +104,10 @@ // Computes the SHA-1 digest of the block of memory. SHA1Digest(uint8_t* data, uint32_t size); + + void digest(unsigned char* md, int fd); + void digest(unsigned char* md, uint8_t* data, uint32_t size); + }; //// Deleted: trunk/darwinup/Makefile =================================================================== --- trunk/darwinup/Makefile 2010-08-11 00:30:59 UTC (rev 862) +++ trunk/darwinup/Makefile 2010-08-11 00:32:06 UTC (rev 863) @@ -1,30 +0,0 @@ -include ../common.mk - -CXXFLAGS=-g -Wall -Werror -Wno-non-virtual-dtor $(CFLAGS) -# libredo.o is generated from cctools_ofiles -REDO=$(shell if [ -f /usr/local/lib/libredo_prebinding.a ]; then \ - echo /usr/local/lib/libredo_prebinding.a ; else \ - echo libredo.o ; fi) - -all: darwinup - -darwinup: Archive.o Depot.o Digest.o File.o SerialSet.o Utils.o main.o \ - $(REDO) - g++ $(CXXFLAGS) -lcrypto -lsqlite3 -o $@ $^ - -Archive.o: Archive.cpp Archive.h Depot.h File.h Utils.h -Depot.o: Depot.cpp Archive.h Depot.h File.h Utils.h -Digest.o: Digest.cpp Digest.h -File.o: File.cpp Archive.h Digest.h File.h Utils.h -Utils.o: Utils.h -main.o: main.cpp Depot.h Utils.h - -install: all - [ -d $(BINDIR) ] || $(INSTALL) -d $(INSTALL_DIR_FLAGS) $(BINDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) darwinup $(BINDIR) - -uninstall: - rm -f $(BINDIR)/darwinup - -clean: - rm -f darwinup Archive.o Depot.o Digest.o File.o SerialSet.o Utils.o main.o Deleted: trunk/darwinxref/Makefile =================================================================== --- trunk/darwinxref/Makefile 2010-08-11 00:30:59 UTC (rev 862) +++ trunk/darwinxref/Makefile 2010-08-11 00:32:06 UTC (rev 863) @@ -1,108 +0,0 @@ -include ../common.mk - -### -### Variables for the 'install' phase -### -DATDIR:=$(DATDIR)/darwinxref -INCDIR:=$(INCDIR)/darwinbuild - -SOURCES= \ - DBDataStore.c \ - DBPlugin.c \ - DBTclPlugin.c \ - cfutils.c \ - main.c - -PLUGIN_SOURCES=$(wildcard plugins/*.c) -PLUGIN_OBJECTS=$(PLUGIN_SOURCES:.c=.so) $(wildcard plugins/*.tcl) - -### todo: --with-plugin-path configuration -CFLAGS+= \ - -DDEFAULT_DB_FILE=\".build/xref.db\" \ - -DDEFAULT_PLUGIN_PATH=\"$(subst $(DESTDIR),,$(DATDIR))/plugins\" \ - -### todo: --with-tcl-plugins configuration -TCL_CFLAGS=-DHAVE_TCL_PLUGINS=1 -TCL_LDFLAGS=-ltcl - -CFLAGS+=-g -Wall -Werror $(TCL_CFLAGS) $(SQLITEINC) -LDFLAGS+=-framework CoreFoundation $(TCL_LDFLAGS) -PLUGIN_CFLAGS=$(CFLAGS) -I. -PLUGIN_LDFLAGS=$(LDFLAGS) -bundle -bundle_loader $(SYMROOT)/darwinxref - -CC = cc -DSYMUTIL = dsymutil - -all: \ - darwinxref \ - $(PLUGIN_SOURCES:.c=.so) \ - upgrade_plist \ - apple_plugins - -install: all install_apple_plugins - [ -d $(BINDIR) ] || \ - $(INSTALL) -d $(INSTALL_DIR_FLAGS) $(BINDIR) - $(INSTALL) $(INSTALL_EXE_FLAGS) $(SYMROOT)/darwinxref $(BINDIR) - - [ -d $(DATDIR)/plugins ] || \ - $(INSTALL) -d $(INSTALL_DIR_FLAGS) $(DATDIR)/plugins - $(INSTALL) $(INSTALL_DOC_FLAGS) $(OBJROOT)/plugins/*.so plugins/*.tcl $(DATDIR)/plugins - - [ -d $(INCDIR) ] || \ - $(INSTALL) -d $(INSTALL_DIR_FLAGS) $(INCDIR) - $(INSTALL) $(INSTALL_DOC_FLAGS) DBPlugin.h cfutils.h $(INCDIR) - -uninstall: - rm -f $(BINDIR)/darwinxref - [ ! -d $(DATDIR) ] || ( cd $(DATDIR) && rm -f $(PLUGIN_OBJECTS) ) - -rmdir $(DATDIR)/plugins - -rmdir $(DATDIR) - - rm -f $(INCDIR)/DBPlugin.h - rm -f $(INCDIR)/cfutils.h - -rmdir $(INCDIR) - -clean: - rm -f darwinxref - rm -rf darwinxref.dSYM - rm -f $(SOURCES:.c=.o) - rm -f $(PLUGIN_SOURCES:.c=.so) - rm -rf $(PLUGIN_SOURCES:.c=.so.dSYM) - rm -f upgrade_plist - rm -rf upgrade_plist.dSYM - -darwinxref: $(SOURCES) - @for CFILE in $(SOURCES); do \ - OFILE=$$(echo $$(basename $${CFILE}) | sed -e 's,\.[^.]*$$,.o,') ; \ - CMD="$(CC) $(CFLAGS) -c -o $(OBJROOT)/$${OFILE} $${CFILE}"; \ - echo $$CMD ; $$CMD || exit 1 ; \ - done - $(CC) $(LDFLAGS) $(CFLAGS) -o $(SYMROOT)/darwinxref \ - $(SQLITELIB) \ - $(foreach OFILE, $(SOURCES:.c=.o), $(OBJROOT)/$(notdir $(OFILE))) - $(DSYMUTIL) --out $(SYMROOT)/darwinxref.dSYM $(SYMROOT)/darwinxref || true - -plugins/register.so: plugins/register.c DBPlugin.h darwinxref - @mkdir -p $(OBJROOT)/plugins - cc $(CFLAGS) -o $(OBJROOT)/$@ $(PLUGIN_CFLAGS) $(PLUGIN_LDFLAGS) $(SQLITEINC) $(SQLITELIB) -lcrypto $< - -plugins/%.so: plugins/%.c DBPlugin.h darwinxref - @mkdir -p $(OBJROOT)/plugins - cc $(CFLAGS) -o $(OBJROOT)/$@ $(PLUGIN_CFLAGS) $(PLUGIN_LDFLAGS) $< - -plugins-darwinports/%.so: plugins-darwinports/%.c DBPlugin.h darwinxref - cc $(CFLAGS) -o $(OBJROOT)/$@ $(PLUGIN_CFLAGS) $(PLUGIN_LDFLAGS) $< - -apple_plugins: - @if [ -d plugins-apple ]; then \ - make -C plugins-apple; \ - fi - -install_apple_plugins: - @if [ -d plugins-apple ]; then \ - make -C plugins-apple install; \ - fi - -upgrade_plist: upgrade_plist.c cfutils.c - cc $(CFLAGS) -o $(OBJROOT)/$@ $(CFLAGS) $(LDFLAGS) $^ - Modified: trunk/darwinxref/plugins/c_plugins.xcconfig =================================================================== --- trunk/darwinxref/plugins/c_plugins.xcconfig 2010-08-11 00:30:59 UTC (rev 862) +++ trunk/darwinxref/plugins/c_plugins.xcconfig 2010-08-11 00:32:06 UTC (rev 863) @@ -41,7 +41,7 @@ GCC_WARN_UNUSED_VALUE = YES GCC_WARN_UNUSED_VARIABLE = YES OTHER_CFLAGS = -OTHER_LDFLAGS = -framework CoreFoundation -ltcl -lcrypto -lsqlite3 +OTHER_LDFLAGS = -framework CoreFoundation -ltcl -lsqlite3 PRODUCT_NAME = $(TARGET_NAME) WARNING_CFLAGS = -Werror -Wall PREFIX = /usr/local Modified: trunk/darwinxref/plugins/register.c =================================================================== --- trunk/darwinxref/plugins/register.c 2010-08-11 00:30:59 UTC (rev 862) +++ trunk/darwinxref/plugins/register.c 2010-08-11 00:32:06 UTC (rev 863) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2005-2010 Apple Computer, Inc. All rights reserved. * * @APPLE_BSD_LICENSE_HEADER_START@ * @@ -43,7 +43,8 @@ #include <stdio.h> #include <unistd.h> #include <string.h> -#include <openssl/evp.h> +#include <stdlib.h> +#include <CommonCrypto/CommonDigest.h> #include "sqlite3.h" extern char** environ; @@ -129,22 +130,13 @@ } static char* calculate_digest(int fd) { - unsigned char digstr[EVP_MAX_MD_SIZE]; - memset(digstr, 0, sizeof(digstr)); + unsigned char md[CC_SHA1_DIGEST_LENGTH]; + CC_SHA1_CTX c; + CC_SHA1_Init(&c); - EVP_MD_CTX ctx; - static const EVP_MD* md; + memset(md, 0, CC_SHA1_DIGEST_LENGTH); - if (md == NULL) { - EVP_MD_CTX_init(&ctx); - OpenSSL_add_all_digests(); - md = EVP_get_digestbyname("sha1"); - if (md == NULL) return NULL; - } - - EVP_DigestInit(&ctx, md); - - unsigned int len; + ssize_t len; const unsigned int blocklen = 8192; static unsigned char* block = NULL; if (block == NULL) { @@ -155,11 +147,11 @@ if (len == 0) { close(fd); break; } if ((len < 0) && (errno == EINTR)) continue; if (len < 0) { close(fd); return NULL; } - EVP_DigestUpdate(&ctx, block, len); + CC_SHA1_Update(&c, block, (size_t)len); } - - EVP_DigestFinal(&ctx, digstr, &len); - return format_digest(digstr); + + CC_SHA1_Final(md, &c); + return format_digest(md); } static char* calculate_unprebound_digest(const char* filename);
participants (1)
-
source_changes@macosforge.org