diff options
author | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2013-02-15 22:23:09 +0100 |
---|---|---|
committer | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2013-02-15 22:43:09 +0100 |
commit | 507f51b093a1dfcd2866785cd700d5c390ee28f6 (patch) | |
tree | 322e306fda111e2a8a1f8ce6a166bde1a3bbcdc6 /tools | |
parent | b2ded51418a272c300f10370032933c9671446b2 (diff) |
so_checksum is dead and gone ... and there was much rejoicing
Change-Id: I6cba24830d397ca405646a1deb0ee0385a3b67e4
Diffstat (limited to 'tools')
-rw-r--r-- | tools/Executable_so_checksum.mk | 40 | ||||
-rw-r--r-- | tools/Module_tools.mk | 1 | ||||
-rw-r--r-- | tools/bootstrp/md5.cxx | 141 | ||||
-rw-r--r-- | tools/bootstrp/md5.hxx | 25 | ||||
-rw-r--r-- | tools/bootstrp/so_checksum.cxx | 47 |
5 files changed, 0 insertions, 254 deletions
diff --git a/tools/Executable_so_checksum.mk b/tools/Executable_so_checksum.mk deleted file mode 100644 index fcd72c2ddded..000000000000 --- a/tools/Executable_so_checksum.mk +++ /dev/null @@ -1,40 +0,0 @@ -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -# This file incorporates work covered by the following license notice: -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed -# with this work for additional information regarding copyright -# ownership. The ASF licenses this file to you under the Apache -# License, Version 2.0 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.apache.org/licenses/LICENSE-2.0 . -# - -$(eval $(call gb_Executable_Executable,so_checksum)) - -$(eval $(call gb_Executable_set_include,so_checksum,\ - $$(INCLUDE) \ - -I$(SRCDIR)/tools/inc \ - -I$(SRCDIR)/tools/bootstrp \ -)) - -$(eval $(call gb_Executable_use_libraries,so_checksum,\ - sal \ - tl \ - $(gb_UWINAPI) \ -)) -# used to link against basegfxlx comphelp4gcc3 i18nisolang1gcc3 ucbhelper4gcc3 uno_cppu uno_cppuhelpergcc3 uno_salhelpergcc3 vos3gcc3 - seems to be superficial - -$(eval $(call gb_Executable_add_exception_objects,so_checksum,\ - tools/bootstrp/md5 \ - tools/bootstrp/so_checksum \ -)) - -# vim: set noet sw=4 ts=4: diff --git a/tools/Module_tools.mk b/tools/Module_tools.mk index 2ec37e0d8258..b6fe5f61ecfa 100644 --- a/tools/Module_tools.mk +++ b/tools/Module_tools.mk @@ -35,7 +35,6 @@ ifneq ($(CROSS_COMPILING),YES) $(eval $(call gb_Module_add_targets,tools,\ Executable_bestreversemap \ Executable_rscdep \ - Executable_so_checksum \ )) endif diff --git a/tools/bootstrp/md5.cxx b/tools/bootstrp/md5.cxx deleted file mode 100644 index bf2b72aaf7ee..000000000000 --- a/tools/bootstrp/md5.cxx +++ /dev/null @@ -1,141 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - - -#include "md5.hxx" - -#include <cstddef> -#include <stdio.h> - -#include <rtl/strbuf.hxx> - -#ifdef WNT -#define FILE_OPEN_READ "rb" -#else -#define FILE_OPEN_READ "r" -#endif - -// Extended calc_md5_checksum to recognize Windows executables and libraries. To -// create the same md5 checksum for a (code/data) identical file it ignores a different -// date and header checksum. Please see crashrep/source/win32/soreport.cpp -// where the same method is also used. The crash reporter uses the MD5 -// checksums to transfer them to the crash database. You have to make sure that both -// methods use the same algorithm otherwise there could be problems with stack reports. - -void normalize_pe_image(sal_uInt8* buffer, size_t nBufferSize) -{ - // Check the header part of the file buffer - if (buffer[0] == sal_uInt8('M') && buffer[1] == sal_uInt8('Z')) - { - const int OFFSET_PE_OFFSET = 0x3c; - unsigned long PEHeaderOffset = (long)buffer[OFFSET_PE_OFFSET]; - if (PEHeaderOffset < nBufferSize-4) - { - if ( buffer[PEHeaderOffset+0] == sal_uInt8('P') && - buffer[PEHeaderOffset+1] == sal_uInt8('E') && - buffer[PEHeaderOffset+2] == 0 && - buffer[PEHeaderOffset+3] == 0 ) - { - const int PE_SIGNATURE_SIZE = 4; - const int OFFSET_COFF_TIMEDATESTAMP = 4; - PEHeaderOffset += PE_SIGNATURE_SIZE; - if (PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP < nBufferSize-4) - { - // Set timedatestamp and checksum fields to a normalized - // value to enforce the same MD5 checksum for identical - // Windows executables/libraries. - buffer[PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP+0] = 0; - buffer[PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP+1] = 0; - buffer[PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP+2] = 0; - buffer[PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP+3] = 0; - } - const int COFFHEADER_SIZE = 20; - const int OFFSET_PE_OPTIONALHEADER_CHECKSUM = 64; - if (PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM < nBufferSize-4) - { - // Set checksum to a normalized value - buffer[PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM] = 0; - buffer[PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM+1] = 0; - buffer[PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM+2] = 0; - buffer[PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM+3] = 0; - } - } - } - } -} - -rtlDigestError calc_md5_checksum(const char *filename, rtl::OString &rChecksum) -{ - sal_uInt8 checksum[RTL_DIGEST_LENGTH_MD5]; - rtlDigestError error = rtl_Digest_E_None; - rtl::OStringBuffer aChecksumBuf; - - FILE *fp = fopen( filename, FILE_OPEN_READ ); - - if ( fp ) - { - rtlDigest digest = rtl_digest_createMD5(); - - if ( digest ) - { - const size_t BUFFER_SIZE = 0x1000; - size_t nBytesRead; - sal_uInt8 buffer[BUFFER_SIZE]; - bool bHeader(true); - - while ( rtl_Digest_E_None == error && - 0 != (nBytesRead = fread( buffer, 1, sizeof(buffer), fp )) ) - { - if (bHeader) - { - bHeader = false; - const size_t MINIMAL_SIZE = 512; - if (nBytesRead >= MINIMAL_SIZE && buffer[0] == sal_uInt8('M') && buffer[1] == sal_uInt8('Z') ) - normalize_pe_image(buffer, nBytesRead); - } - - error = rtl_digest_updateMD5( digest, buffer, nBytesRead ); - } - - if ( rtl_Digest_E_None == error ) - { - error = rtl_digest_getMD5( digest, checksum, sizeof(checksum) ); - } - - rtl_digest_destroyMD5( digest ); - - for ( std::size_t i = 0; i < sizeof(checksum); i++ ) - { - if ( checksum[i] < 16 ) - aChecksumBuf.append('0'); - aChecksumBuf.append(static_cast<sal_Int32>(checksum[i]), 16); - } - } - - fclose( fp ); - } - else - error = rtl_Digest_E_Unknown; - - rChecksum = aChecksumBuf.makeStringAndClear(); - - return error; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/tools/bootstrp/md5.hxx b/tools/bootstrp/md5.hxx deleted file mode 100644 index 378787c479ed..000000000000 --- a/tools/bootstrp/md5.hxx +++ /dev/null @@ -1,25 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include <rtl/digest.h> -#include <rtl/string.hxx> - -rtlDigestError calc_md5_checksum(const char *filename, rtl::OString &rChecksum); - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/tools/bootstrp/so_checksum.cxx b/tools/bootstrp/so_checksum.cxx deleted file mode 100644 index f4ad46a41432..000000000000 --- a/tools/bootstrp/so_checksum.cxx +++ /dev/null @@ -1,47 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - - -#include "md5.hxx" - -#include <rtl/string.hxx> - -#include <stdio.h> - -int main( int argc, char * argv[] ) -{ - for (int n = 1; n < argc; ++n) - { - rtl::OString aChecksum; - rtlDigestError error = calc_md5_checksum(argv[n], aChecksum); - - if ( rtl_Digest_E_None == error ) - { - printf( "%s %s\n", aChecksum.getStr(), argv[n] ); - } - else - printf( "ERROR: Unable to calculate MD5 checksum for %s\n", argv[n] ); - } - - return 0; -} - - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |