diff options
-rw-r--r-- | checks/validate.dat | 1 | ||||
-rwxr-xr-x | configure.py | 43 | ||||
-rw-r--r-- | doc/log.txt | 4 | ||||
-rw-r--r-- | src/algo_factory/algo_factory.cpp | 16 | ||||
-rw-r--r-- | src/alloc/secmem.h | 24 | ||||
-rw-r--r-- | src/ssl/unix_socket/unx_sock.cpp | 5 |
6 files changed, 70 insertions, 23 deletions
diff --git a/checks/validate.dat b/checks/validate.dat index 775367abb..ed5723506 100644 --- a/checks/validate.dat +++ b/checks/validate.dat @@ -23444,6 +23444,7 @@ D2DED73E59319A8138E0331F0EA149EAA443EA1B2C5747CE7EC5F21D4FE0C147 0000000000000000000000000000000000000000000000000000000000000000 [XTEA] +FEFEFEFEFEFEFEFE:36552E889D6A41CF:00112233445566778899AABBCCDDEEFF 0123456789ABCDEF:B8BF2821622B5B30:00112233445566778899AABBCCDDEEFF D51399607F7AA9D7:782E4E131C5BA746:D94576CD1A5F99E4155DC7BEC5D33DF2 10B233473624CCD3:57733A1DEECE283E:07EF12BC9D06D7DA20131116B665E335 diff --git a/configure.py b/configure.py index 9aa8b0cec..1a6eb1e7f 100755 --- a/configure.py +++ b/configure.py @@ -1369,6 +1369,25 @@ def generate_amalgamation(build_config): else: botan_all_cpp.write(line) +""" +Finding a program by name +code from http://stackoverflow.com/questions/377017/#377028 +""" +def which(program): + def have_exe(fpath): + return os.path.exists(fpath) and os.access(fpath, os.X_OK) + + fpath, fname = os.path.split(program) + if fpath: + if have_exe(program): + return program + else: + for path in os.environ['PATH'].split(os.pathsep): + exe_file = os.path.join(path, program) + if have_exe(exe_file): + return exe_file + + return None """ Main driver @@ -1409,7 +1428,12 @@ def main(argv = None): if options.compiler is None: if options.os == 'windows': - options.compiler = 'msvc' + if which('cl.exe') is not None: + options.compiler = 'msvc' + elif which('g++.exe') is not None: + options.compiler = 'gcc' + else: + options.compiler = 'msvc' else: options.compiler = 'gcc' logging.info('Guessing to use compiler %s' % (options.compiler)) @@ -1456,18 +1480,19 @@ def main(argv = None): if not is_64bit_arch(options.arch) and not options.dumb_gcc: try: - matching_version = '(4\.[01234]\.)|(3\.[34]\.)|(2\.95\.[0-4])' - gcc_version = ''.join( - subprocess.Popen(['g++', '-v'], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE).communicate()) + gcc_version = ''.join(subprocess.Popen( + ['g++', '-dumpversion'], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE).communicate()).strip() + + logging.info('Detected GCC version %s' % (gcc_version)) if re.search(matching_version, gcc_version): options.dumb_gcc = True - except OSError, e: - logging.info('Could not execute GCC for version check') + except OSError: + logging.warning('Could not execute GCC for version check') if options.dumb_gcc is True: logging.info('Setting -fpermissive to work around gcc bug') @@ -1515,7 +1540,7 @@ if __name__ == '__main__': try: main() except Exception, e: - print >>sys.stderr, e + logging.error(str(e)) #import traceback #traceback.print_exc(file=sys.stderr) sys.exit(1) diff --git a/doc/log.txt b/doc/log.txt index 1b70d3dc4..aeeffa9d9 100644 --- a/doc/log.txt +++ b/doc/log.txt @@ -1,6 +1,10 @@ * 1.9.8-dev, ????-??-?? - Use constant time multiplication in IDEA + - Avoid possible timing attack against OAEP decoding + - Skip building shared libraries on MinGW/Cygwin + - Fix compilation on GCC versions before 4.3 (missing cpuid.h) + - Fix complilation under the Clang compiler * 1.9.7, 2010-04-27 - TLS: Support reading SSLv2 client hellos diff --git a/src/algo_factory/algo_factory.cpp b/src/algo_factory/algo_factory.cpp index 07a072f22..5f3e752bd 100644 --- a/src/algo_factory/algo_factory.cpp +++ b/src/algo_factory/algo_factory.cpp @@ -1,6 +1,6 @@ /* * Algorithm Factory -* (C) 2008 Jack Lloyd +* (C) 2008-2010 Jack Lloyd * * Distributed under the terms of the Botan license */ @@ -26,22 +26,26 @@ namespace { * Template functions for the factory prototype/search algorithm */ template<typename T> -T* engine_get_algo(Engine* engine, const SCAN_Name& request, - Algorithm_Factory& af) +T* engine_get_algo(Engine*, + const SCAN_Name&, + Algorithm_Factory&) { return 0; } template<> -BlockCipher* engine_get_algo(Engine* engine, const SCAN_Name& request, +BlockCipher* engine_get_algo(Engine* engine, + const SCAN_Name& request, Algorithm_Factory& af) { return engine->find_block_cipher(request, af); } template<> -StreamCipher* engine_get_algo(Engine* engine, const SCAN_Name& request, +StreamCipher* engine_get_algo(Engine* engine, + const SCAN_Name& request, Algorithm_Factory& af) { return engine->find_stream_cipher(request, af); } template<> -HashFunction* engine_get_algo(Engine* engine, const SCAN_Name& request, +HashFunction* engine_get_algo(Engine* engine, + const SCAN_Name& request, Algorithm_Factory& af) { return engine->find_hash(request, af); } diff --git a/src/alloc/secmem.h b/src/alloc/secmem.h index c50df924d..b3b3fa973 100644 --- a/src/alloc/secmem.h +++ b/src/alloc/secmem.h @@ -292,6 +292,10 @@ template<typename T> class MemoryVector : public MemoryRegion<T> { public: + using MemoryRegion<T>::set; + using MemoryRegion<T>::init; + using MemoryRegion<T>::append; + /** * Copy the contents of another buffer into this buffer. * @param in the buffer to copy the contents from @@ -304,7 +308,7 @@ class MemoryVector : public MemoryRegion<T> * Create a buffer of the specified length. * @param n the length of the buffer to create. */ - MemoryVector(u32bit n = 0) { MemoryRegion<T>::init(false, n); } + MemoryVector(u32bit n = 0) { init(false, n); } /** * Create a buffer with the specified contents. @@ -313,13 +317,13 @@ class MemoryVector : public MemoryRegion<T> * @param n the size of the arry in */ MemoryVector(const T in[], u32bit n) - { MemoryRegion<T>::init(false); set(in, n); } + { init(false); set(in, n); } /** * Copy constructor. */ MemoryVector(const MemoryRegion<T>& in) - { MemoryRegion<T>::init(false); set(in); } + { init(false); set(in); } /** * Create a buffer whose content is the concatenation of two other @@ -328,7 +332,7 @@ class MemoryVector : public MemoryRegion<T> * @param in2 the contents to be appended to in1 */ MemoryVector(const MemoryRegion<T>& in1, const MemoryRegion<T>& in2) - { MemoryRegion<T>::init(false); set(in1); append(in2); } + { init(false); set(in1); append(in2); } }; /** @@ -341,6 +345,10 @@ template<typename T, u32bit INITIAL_LEN = 0> class SecureVector : public MemoryRegion<T> { public: + using MemoryRegion<T>::set; + using MemoryRegion<T>::init; + using MemoryRegion<T>::append; + /** * Copy the contents of another buffer into this buffer. * @param in the buffer to copy the contents from @@ -354,7 +362,7 @@ class SecureVector : public MemoryRegion<T> * @param n the length of the buffer to create. */ SecureVector(u32bit n = INITIAL_LEN) - { MemoryRegion<T>::init(true, n); } + { init(true, n); } /** * Create a buffer with the specified contents. @@ -363,7 +371,7 @@ class SecureVector : public MemoryRegion<T> * @param n the size of the array in */ SecureVector(const T in[], u32bit n) - { MemoryRegion<T>::init(true); set(in, n); } + { init(true); set(in, n); } /** * Create a buffer with contents specified contents. @@ -371,7 +379,7 @@ class SecureVector : public MemoryRegion<T> * copied into the newly created buffer. */ SecureVector(const MemoryRegion<T>& in) - { MemoryRegion<T>::init(true); set(in); } + { init(true); set(in); } /** * Create a buffer whose content is the concatenation of two other @@ -380,7 +388,7 @@ class SecureVector : public MemoryRegion<T> * @param in2 the contents to be appended to in1 */ SecureVector(const MemoryRegion<T>& in1, const MemoryRegion<T>& in2) - { MemoryRegion<T>::init(true); set(in1); append(in2); } + { init(true); set(in1); append(in2); } }; } diff --git a/src/ssl/unix_socket/unx_sock.cpp b/src/ssl/unix_socket/unx_sock.cpp index f9d9629fb..9954cdc06 100644 --- a/src/ssl/unix_socket/unx_sock.cpp +++ b/src/ssl/unix_socket/unx_sock.cpp @@ -41,6 +41,11 @@ Unix_Socket::Unix_Socket(const std::string& host, u16bit port) : peer(host) ::memset(&socket_info, 0, sizeof(socket_info)); socket_info.sin_family = AF_INET; socket_info.sin_port = htons(port); + + ::memcpy(&socket_info.sin_addr, + host_addr->h_addr, + host_addr->h_length); + socket_info.sin_addr = *(struct in_addr*)host_addr->h_addr; // FIXME if(::connect(fd, (sockaddr*)&socket_info, sizeof(struct sockaddr)) != 0) |