diff -Nru ssdeep-2.14/ChangeLog ssdeep-2.14.1+git20180629.57fcfff/ChangeLog --- ssdeep-2.14/ChangeLog 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/ChangeLog 2018-06-29 12:13:49.000000000 +0000 @@ -1,3 +1,15 @@ +2017-11-28: Travis Finkenauer : + + * edit_dist.c: Include edit_dist.h to pick up forward declaration of + edit_distn(). + * engine.cpp (display_result): Initialize before use in case of + uncaught exception. + * filedata.h (class Filedata): Avoid unused variable warning. + * find-file-size.c: Add function prototypes for find_dev_size() and + find_file_size() to keep compiler happy. + * fuzzy.c (fuzzy_hash_file): Avoid a memory leak. + * match.cpp (sig_file_close): Fix reversed logic to close handle. + 2017-06-01: Tsukasa OI : * fuzzy.c, sum_table.h: Added many optimizations diff -Nru ssdeep-2.14/configure.ac ssdeep-2.14.1+git20180629.57fcfff/configure.ac --- ssdeep-2.14/configure.ac 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/configure.ac 2018-06-29 12:13:49.000000000 +0000 @@ -1,4 +1,4 @@ -AC_INIT([SSDEEP],[2.14],[floss_ssdeep@irq.a4lg.com]) +AC_INIT([ssdeep],[2.14.1],[floss_ssdeep@irq.a4lg.com]) AM_INIT_AUTOMAKE AC_CONFIG_FILES([Makefile]) diff -Nru ssdeep-2.14/debian/changelog ssdeep-2.14.1+git20180629.57fcfff/debian/changelog --- ssdeep-2.14/debian/changelog 2017-09-18 14:45:29.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/debian/changelog 2018-09-08 15:01:32.000000000 +0000 @@ -1,3 +1,25 @@ +ssdeep (2.14.1+git20180629.57fcfff-1) unstable; urgency=medium + + * Team upload. + [ Raphaël Hertzog ] + * d/control: + - Update Vcs-Git and Vcs-Browser for the move to salsa.debian.org + - Update team maintainer address to Debian Security Tools + + [ SZ Lin (林上智) ] + * Import new upstream release + * Remove the patch which was merged in the new release + * Add upstream metadata file + * d/control: + - Bump debhelper version to 11 + - Bump Standards-Version to 4.2.1 + * d/copyright: + - Fix insecure copyright format URI + d/compat: + - Bump compat version to 11 + + -- SZ Lin (林上智) Sat, 08 Sep 2018 23:01:32 +0800 + ssdeep (2.14-1) unstable; urgency=medium * Team upload. diff -Nru ssdeep-2.14/debian/compat ssdeep-2.14.1+git20180629.57fcfff/debian/compat --- ssdeep-2.14/debian/compat 2016-11-29 22:03:49.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/debian/compat 2018-09-08 15:01:32.000000000 +0000 @@ -1 +1 @@ -10 +11 diff -Nru ssdeep-2.14/debian/control ssdeep-2.14.1+git20180629.57fcfff/debian/control --- ssdeep-2.14/debian/control 2017-09-18 14:45:29.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/debian/control 2018-09-08 15:01:32.000000000 +0000 @@ -1,13 +1,13 @@ Source: ssdeep Section: admin Priority: optional -Maintainer: Debian Forensics +Maintainer: Debian Security Tools Uploaders: Christophe Monniez -Build-Depends: debhelper (>= 10) -Standards-Version: 4.0.0 +Build-Depends: debhelper (>= 11) +Standards-Version: 4.2.1 Homepage: https://github.com/ssdeep-project/ssdeep -Vcs-Browser: https://anonscm.debian.org/git/forensics/ssdeep.git -Vcs-Git: https://anonscm.debian.org/git/forensics/ssdeep.git +Vcs-Browser: https://salsa.debian.org/pkg-security-team/ssdeep +Vcs-Git: https://salsa.debian.org/pkg-security-team/ssdeep.git Package: ssdeep Architecture: any diff -Nru ssdeep-2.14/debian/copyright ssdeep-2.14.1+git20180629.57fcfff/debian/copyright --- ssdeep-2.14/debian/copyright 2017-09-18 14:45:29.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/debian/copyright 2018-09-08 15:01:32.000000000 +0000 @@ -1,4 +1,4 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Contact: Jesse Kornblum , Tsukasa OI Source: https://github.com/ssdeep-project/ssdeep diff -Nru ssdeep-2.14/debian/patches/10_fix-spelling-final-executable.patch ssdeep-2.14.1+git20180629.57fcfff/debian/patches/10_fix-spelling-final-executable.patch --- ssdeep-2.14/debian/patches/10_fix-spelling-final-executable.patch 2016-11-29 22:03:49.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/debian/patches/10_fix-spelling-final-executable.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -Description: fix a spelling error in final executable. -Author: Joao Eriberto Mota Filho -Last-Update: 2016-11-29 -Index: ssdeep-2.13/main.cpp -=================================================================== ---- ssdeep-2.13.orig/main.cpp -+++ ssdeep-2.13/main.cpp -@@ -53,7 +53,7 @@ static void usage(void) - print_status ("-v - Verbose mode. Displays filename as its being processed"); - print_status ("-r - Recursive mode"); - -- print_status ("-s - Silent mode; all errors are supressed"); -+ print_status ("-s - Silent mode; all errors are suppressed"); - print_status ("-b - Uses only the bare name of files; all path information omitted"); - print_status ("-l - Uses relative paths for filenames"); - print_status ("-c - Prints output in CSV format"); diff -Nru ssdeep-2.14/debian/patches/series ssdeep-2.14.1+git20180629.57fcfff/debian/patches/series --- ssdeep-2.14/debian/patches/series 2016-11-29 22:03:49.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -10_fix-spelling-final-executable.patch diff -Nru ssdeep-2.14/debian/upstream/metadata ssdeep-2.14.1+git20180629.57fcfff/debian/upstream/metadata --- ssdeep-2.14/debian/upstream/metadata 1970-01-01 00:00:00.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/debian/upstream/metadata 2018-09-08 15:01:32.000000000 +0000 @@ -0,0 +1,5 @@ +Reference: + Author: Andrew Tridgell + Name: recursive piecewise hashing tool + Year: 2002 + URL: https://ssdeep-project.github.io/ssdeep/index.html diff -Nru ssdeep-2.14/dig.cpp ssdeep-2.14.1+git20180629.57fcfff/dig.cpp --- ssdeep-2.14/dig.cpp 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/dig.cpp 2018-06-29 12:13:49.000000000 +0000 @@ -168,7 +168,7 @@ static void clean_name(state *s, TCHAR *fn) { - if (not (s->mode & mode_relative)) { + if (!(s->mode & mode_relative)) { remove_double_slash(fn); remove_single_dirs(fn); remove_double_dirs(fn); @@ -446,7 +446,7 @@ TCHAR dirname[SSDEEP_PATH_MAX], new_fn[SSDEEP_PATH_MAX], expanded_fn[SSDEEP_PATH_MAX]; WIN32_FIND_DATAW FindFileData; - if (NULL == s or NULL == fn) + if (NULL == s || NULL == fn) return true; //print_status("process_win32 got %S", fn); @@ -460,7 +460,7 @@ // as an error or use it to alias the current working directory on c:. // As a convenience to users, we're going to accept 'c:'. To do this // we change it into 'c:\' - if (_tcslen(fn) == 2 and isalpha(fn[0]) and fn[1] == _TEXT(':')) { + if (_tcslen(fn) == 2 && isalpha(fn[0]) && fn[1] == _TEXT(':')) { fn[2] = _TEXT(DIR_SEPARATOR); fn[3] = 0; } @@ -484,8 +484,8 @@ // If we don't have it already, create the expanded filename. // "C:\foo\bar.txt" --> "\\?\C:\foo\bar.txt" - if (not expanded_path(fn) and - not (s->mode & mode_relative)) { + if (!expanded_path(fn) && + !(s->mode & mode_relative)) { _sntprintf(expanded_fn, SSDEEP_PATH_MAX, _TEXT("\\\\?\\%s"), @@ -503,7 +503,7 @@ // original filename, e.g. C:\foo\*. When this happens it means we just // didn't find any matching files. // Note that we still display errors with the original 'fn' - if (not _tcsstr(fn, _TEXT("*"))) + if (!_tcsstr(fn, _TEXT("*"))) print_error_unicode(s, fn, "No such file or directory"); return false; } @@ -521,7 +521,7 @@ // Because the wildcard is always in the last part of the input // (e.g. c:\bin\*.exe) we can use the original dirname, combined // with the filename we've found, to make the new filename. - if (not is_special_dir(FindFileData.cFileName)) { + if (!is_special_dir(FindFileData.cFileName)) { // print_status("Found file: %S", FindFileData.cFileName); @@ -530,8 +530,8 @@ _TEXT("%s%s"), dirname, FindFileData.cFileName); - if (not expanded_path(new_fn) and - not (s->mode & mode_relative)) { + if (!expanded_path(new_fn) && + !(s->mode & mode_relative)) { _sntprintf(expanded_fn, SSDEEP_PATH_MAX, _TEXT("\\\\?\\%s"), diff -Nru ssdeep-2.14/edit_dist.c ssdeep-2.14.1+git20180629.57fcfff/edit_dist.c --- ssdeep-2.14/edit_dist.c 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/edit_dist.c 2018-06-29 12:13:49.000000000 +0000 @@ -47,6 +47,7 @@ #include #include #include +#include "edit_dist.h" #define HELLOWORLD "Hello World!" diff -Nru ssdeep-2.14/engine.cpp ssdeep-2.14.1+git20180629.57fcfff/engine.cpp --- ssdeep-2.14/engine.cpp 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/engine.cpp 2018-06-29 12:13:49.000000000 +0000 @@ -1,4 +1,4 @@ -// $Id$ +// $Id$ #include "main.h" #include "ssdeep.h" @@ -8,12 +8,12 @@ bool display_result(state *s, const TCHAR * fn, const char * sum) { // Only spend the extra time to make a Filedata object if we need to - if (MODE(mode_match_pretty) or MODE(mode_match) or MODE(mode_directory)) { - Filedata * f; + if (MODE(mode_match_pretty) || MODE(mode_match) || MODE(mode_directory)) { + Filedata * f = NULL; try { f = new Filedata(fn, sum); - } + } catch (std::bad_alloc) { fatal_error("%s: Unable to create Filedata object in engine.cpp:display_result()", __progname); } @@ -23,7 +23,7 @@ print_error_unicode(s, fn, "Unable to add hash to set of known hashes"); } else { - // This block is for MODE(mode_match) or MODE(mode_directory) + // This block is for MODE(mode_match) || MODE(mode_directory) match_compare(s, f); if (MODE(mode_directory)) { @@ -61,12 +61,12 @@ TCHAR *my_filename, *msg; FILE *handle; -#ifdef WIN32 +#ifdef WIN32 TCHAR expanded_fn[SSDEEP_PATH_MAX]; - if (not expanded_path(fn)) { + if (!expanded_path(fn) && !(s->mode & mode_relative)) { _sntprintf(expanded_fn, SSDEEP_PATH_MAX, - _TEXT("\\\\?\\%s"), + _TEXT("\\\\?\\%s"), fn); } else { _tcsncpy(expanded_fn, fn, SSDEEP_PATH_MAX); @@ -89,7 +89,8 @@ return TRUE; } - if ((msg = (TCHAR *)malloc(sizeof(TCHAR) * (MAX_STATUS_MSG + 2))) == NULL) +#define MSG_LENGTH (MAX_STATUS_MSG + 20) + if ((msg = (TCHAR *)malloc(sizeof(TCHAR) * MSG_LENGTH)) == NULL) { free(sum); fclose(handle); @@ -111,9 +112,9 @@ my_filename = fn; _sntprintf(msg, - MAX_STATUS_MSG-1, - _TEXT("Hashing: %s%s"), - my_filename, + MSG_LENGTH-1, + _TEXT("Hashing: %s%s"), + my_filename, _TEXT(BLANK_LINE)); _ftprintf(stderr,_TEXT("%s\r"), msg); diff -Nru ssdeep-2.14/filedata.cpp ssdeep-2.14.1+git20180629.57fcfff/filedata.cpp --- ssdeep-2.14/filedata.cpp 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/filedata.cpp 2018-06-29 12:13:49.000000000 +0000 @@ -59,7 +59,7 @@ Filedata::Filedata(const TCHAR * fn, const char * sig, const char * match_file) { m_signature = std::string(sig); - if (not valid()) + if (!valid()) throw std::bad_alloc(); m_filename = _tcsdup(fn); @@ -101,7 +101,7 @@ m_signature = std::string(sig); // We still have to check the validity of the signature - if (not valid()) + if (!valid()) throw std::bad_alloc(); return; @@ -163,11 +163,11 @@ { if (a.get_signature() != b.get_signature()) return false; - if (a.has_match_file() and not b.has_match_file()) + if (a.has_match_file() && !b.has_match_file()) return false; - if (not a.has_match_file() and b.has_match_file()) + if (!a.has_match_file() && b.has_match_file()) return false; - if (a.has_match_file() and b.has_match_file()) + if (a.has_match_file() && b.has_match_file()) { if (a.get_match_file() != b.get_match_file()) return false; diff -Nru ssdeep-2.14/filedata.h ssdeep-2.14.1+git20180629.57fcfff/filedata.h --- ssdeep-2.14/filedata.h 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/filedata.h 2018-06-29 12:13:49.000000000 +0000 @@ -52,7 +52,7 @@ ~Filedata() { if (m_filename) { free(m_filename); } } private: - Filedata(const Filedata &other) { assert(false); /* never copy */ } + Filedata(const Filedata &other) { (void) other; assert(false); /* never copy */ } std::set * m_cluster; diff -Nru ssdeep-2.14/find-file-size.c ssdeep-2.14.1+git20180629.57fcfff/find-file-size.c --- ssdeep-2.14/find-file-size.c 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/find-file-size.c 2018-06-29 12:13:49.000000000 +0000 @@ -7,6 +7,11 @@ #include "main.h" +// Prototypes +off_t find_file_size(FILE *f); +off_t find_dev_size(int fd, int blk_size); + + #ifndef _WIN32 // Return the size, in bytes of an open file stream. On error, return 0 @@ -37,7 +42,7 @@ #else // If we can't run the ioctl call, we can't do anything here return 0; -#endif // ifdefined _IO and BLKGETSIZE +#endif // ifdefined _IO && BLKGETSIZE #if defined(_IO) && defined(BLKSSZGET) @@ -49,7 +54,7 @@ sector_size = 512; #else sector_size = 512; -#endif // ifdef _IO and BLKSSZGET +#endif // ifdef _IO && BLKSSZGET return (num_sectors * sector_size); } diff -Nru ssdeep-2.14/fuzzy.c ssdeep-2.14.1+git20180629.57fcfff/fuzzy.c --- ssdeep-2.14/fuzzy.c 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/fuzzy.c 2018-06-29 12:13:49.000000000 +0000 @@ -121,7 +121,7 @@ unsigned int dindex; char digest[SPAMSUM_LENGTH]; char halfdigest; - char h, halfh; + unsigned char h, halfh; }; struct fuzzy_state @@ -583,7 +583,7 @@ if (status == 0) { if (fseeko(handle, fpos, SEEK_SET) < 0) - return -1; + status = -1; } fuzzy_free(ctx); return status; @@ -609,6 +609,7 @@ // // return 1 if the two strings do have a common substring, 0 otherwise // +#ifndef SSDEEP_ENABLE_POSITION_ARRAY static int has_common_substring(const char *s1, size_t s1len, const char *s2, size_t s2len) { size_t i, j; @@ -662,7 +663,7 @@ return 0; } - +#endif #ifdef SSDEEP_ENABLE_POSITION_ARRAY diff -Nru ssdeep-2.14/.gitignore ssdeep-2.14.1+git20180629.57fcfff/.gitignore --- ssdeep-2.14/.gitignore 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/.gitignore 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ - -# / -/*~ -/*.tmp -/.*.swp -/*.a -/*.o -/*.la -/*.lai -/*.lo -/*.so -/*.so.[0-9]* -/*.dll -/*.def -/*.exe -/*.obj -/*.in -/.deps -/.libs -/Makefile -/aclocal.m4 -/autom4te.cache -/compile -/config.guess -/config.h -/config.log -/config.status -/config.sub -/configure -/depcomp -/install-sh -/libtool -/ltmain.sh -/missing -/stamp-h1 -/README.TXT -/API.TXT -/FILEFORMAT.TXT -/NEWS.TXT -/ssdeep -/ssdeep-[0-9]* - -# /m4/ -/m4/*.m4 - -# /doc/ -/doc/ diff -Nru ssdeep-2.14/main.cpp ssdeep-2.14.1+git20180629.57fcfff/main.cpp --- ssdeep-2.14/main.cpp 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/main.cpp 2018-06-29 12:13:49.000000000 +0000 @@ -53,7 +53,7 @@ print_status ("-v - Verbose mode. Displays filename as its being processed"); print_status ("-r - Recursive mode"); - print_status ("-s - Silent mode; all errors are supressed"); + print_status ("-s - Silent mode; all errors are suppressed"); print_status ("-b - Uses only the bare name of files; all path information omitted"); print_status ("-l - Uses relative paths for filenames"); print_status ("-c - Prints output in CSV format"); @@ -131,7 +131,7 @@ if (MODE(mode_compare_unknown) || MODE(mode_sigcompare)) fatal_error("Positive matching cannot be combined with other matching modes"); s->mode |= mode_match; - if (not match_load(s,optarg)) + if (!match_load(s,optarg)) match_files_loaded = TRUE; break; @@ -139,7 +139,7 @@ if (MODE(mode_match) || MODE(mode_sigcompare)) fatal_error("Signature matching cannot be combined with other matching modes"); s->mode |= mode_compare_unknown; - if (not match_load(s,optarg)) + if (!match_load(s,optarg)) match_files_loaded = TRUE; break; @@ -162,7 +162,7 @@ // the command line arguments. sanity_check(s, ((MODE(mode_match) || MODE(mode_compare_unknown)) - && not match_files_loaded), + && !match_files_loaded), "No matching files loaded"); sanity_check(s, @@ -174,15 +174,15 @@ "Directory mode and pretty matching are mutually exclusive"); sanity_check(s, - MODE(mode_csv) and MODE(mode_cluster), + MODE(mode_csv) && MODE(mode_cluster), "CSV and clustering modes cannot be combined"); // -m, -p, and -d are incompatible with -k and -x // The former treat FILES as raw files. The latter require them to be sigs sanity_check(s, - ((MODE(mode_match) or MODE(mode_match_pretty) or MODE(mode_directory)) - and - (MODE(mode_compare_unknown) or MODE(mode_sigcompare))), + ((MODE(mode_match) || MODE(mode_match_pretty) || MODE(mode_directory)) + && + (MODE(mode_compare_unknown) || MODE(mode_sigcompare))), "Incompatible matching modes"); @@ -214,7 +214,7 @@ internal_error("Unknown error in is_absolute_path"); #ifdef _WIN32 - return (isalpha(fn[0]) and _TEXT(':') == fn[1]); + return (isalpha(fn[0]) && _TEXT(':') == fn[1]); # else return (DIR_SEPARATOR == fn[0]); #endif @@ -292,7 +292,7 @@ // on it on Win32 (i.e. where it matters). The setting of 'goal' // to the original argc occured at the start of main(), so we just // need to update it if we're *not* in signature compare mode. - if (not (s->mode & mode_sigcompare)) { + if (!(s->mode & mode_sigcompare)) { goal = s->argc; } @@ -319,7 +319,7 @@ // to be meaningful, we should display a warning message to the user. // This happens mostly when people are testing very small files // e.g. $ echo "hello world" > foo && ssdeep foo - if ((not s->found_meaningful_file) and s->processed_file) + if (!s->found_meaningful_file && s->processed_file) { print_error(s,"%s: Did not process files large enough to produce meaningful results", __progname); } @@ -331,7 +331,7 @@ // work for us. if (MODE(mode_sigcompare)) s->mode |= mode_match_pretty; - if (MODE(mode_match_pretty) or MODE(mode_sigcompare) or MODE(mode_cluster)) + if (MODE(mode_match_pretty) || MODE(mode_sigcompare) || MODE(mode_cluster)) find_matches_in_known(s); if (MODE(mode_cluster)) display_clusters(s); diff -Nru ssdeep-2.14/match.cpp ssdeep-2.14.1+git20180629.57fcfff/match.cpp --- ssdeep-2.14/match.cpp 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/match.cpp 2018-06-29 12:13:49.000000000 +0000 @@ -37,7 +37,7 @@ /// @return Returns false success, true on error bool sig_file_open(state *s, const char * fn) { - if (NULL == s or NULL == fn) + if (NULL == s || NULL == fn) return true; s->known_handle = fopen(fn,"rb"); @@ -60,7 +60,7 @@ chop_line(buffer); - if (strncmp(buffer,SSDEEPV1_0_HEADER,MAX_STR_LEN) and + if (strncmp(buffer,SSDEEPV1_0_HEADER,MAX_STR_LEN) && strncmp(buffer,SSDEEPV1_1_HEADER,MAX_STR_LEN)) { if ( ! (MODE(mode_silent)) ) @@ -88,7 +88,7 @@ /// Otherwise, false. bool sig_file_next(state *s, Filedata ** f) { - if (NULL == s or NULL == f or NULL == s->known_handle) + if (NULL == s || NULL == f || NULL == s->known_handle) return true; char buffer[MAX_STR_LEN]; @@ -127,7 +127,7 @@ free(s->known_fn); - if (s->known_handle != NULL) + if (s->known_handle == NULL) return true; if (fclose(s->known_handle)) @@ -220,19 +220,19 @@ bool a_has = a->has_cluster(), b_has = b->has_cluster(); // In the easiest case, one of these has a cluster and one doesn't - if (a_has and not b_has) + if (a_has && !b_has) { cluster_add(a,b); return; } - if (b_has and not a_has) + if (b_has && !a_has) { cluster_add(b,a); return; } // Combine existing clusters - if (a_has and b_has) + if (a_has && b_has) { cluster_join(s,a,b); return; @@ -301,14 +301,14 @@ { if (!(_tcsncmp(f->get_filename(), (*it)->get_filename(), - std::max(fn_len,_tcslen((*it)->get_filename())))) and + std::max(fn_len,_tcslen((*it)->get_filename())))) && (f->get_signature() == (*it)->get_signature())) { // Unless these results from different matching files (such as // what happens in sigcompare mode). That being said, we have to // be careful to avoid NULL values such as when working in // normal pretty print mode. - if (not(f->has_match_file()) or + if (!f->has_match_file() || f->get_match_file() == (*it)->get_match_file()) continue; } @@ -320,7 +320,7 @@ print_error(s, "%s: Bad hashes in comparison", __progname); else { - if (score > s->threshold or MODE(mode_display_all)) + if (score > s->threshold || MODE(mode_display_all)) { handle_match(s,f,(*it),score); status = true; @@ -345,7 +345,7 @@ // In pretty mode and sigcompare mode we need to display a blank // line after each file. In clustering mode we don't display anything // right now. - if (status and not(MODE(mode_cluster))) + if (status && !(MODE(mode_cluster))) print_status(""); } @@ -364,7 +364,7 @@ bool match_load(state *s, const char *fn) { - if (NULL == s or NULL == fn) + if (NULL == s || NULL == fn) return true; if (sig_file_open(s,fn)) @@ -375,7 +375,7 @@ do { Filedata * f; status = sig_file_next(s,&f); - if (not status) { + if (!status) { if (match_add(s,f)) { // One bad hash doesn't mean this load was a failure. // We don't change the return status because match_add failed. @@ -383,7 +383,7 @@ break; } } - } while (not sig_file_end(s)); + } while (!sig_file_end(s)); sig_file_close(s); @@ -393,7 +393,7 @@ bool match_compare_unknown(state *s, const char * fn) { - if (NULL == s or NULL == fn) + if (NULL == s || NULL == fn) return true; if (sig_file_open(s,fn)) @@ -405,9 +405,9 @@ { Filedata *f; status = sig_file_next(s,&f); - if (not status) + if (!status) match_compare(s,f); - } while (not sig_file_end(s)); + } while (!sig_file_end(s)); sig_file_close(s); diff -Nru ssdeep-2.14/NEWS ssdeep-2.14.1+git20180629.57fcfff/NEWS --- ssdeep-2.14/NEWS 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/NEWS 2018-06-29 12:13:49.000000000 +0000 @@ -1,10 +1,18 @@ +** Version 2.14.1 - 7 Nov 2017 + +* Bug Fixes + + - Fixed a spelling error. + - Made relative path mode on Win32 to work. + + ** Version 2.14 - 12 Sep 2017 * New Features - Optimizations to the fuzzy hashing engine. (hash generator can run as twice - as fast and comparison can run five times faster than the previous - release) + as fast and comparison can run 1.5 through 5 times faster [heavily depends + on the data and platform] than the previous release) * Bug Fixes diff -Nru ssdeep-2.14/ssdeep.1 ssdeep-2.14.1+git20180629.57fcfff/ssdeep.1 --- ssdeep-2.14/ssdeep.1 2017-09-11 04:47:37.000000000 +0000 +++ ssdeep-2.14.1+git20180629.57fcfff/ssdeep.1 2018-06-29 12:13:49.000000000 +0000 @@ -1,4 +1,4 @@ -.TH SSDEEP "1" "Version 2.14 \- 12 Sep 2017" "ssdeep Project" "SSDEEP COMMAND" +.TH SSDEEP "1" "Version 2.14.1 \- 7 Nov 2017" "ssdeep Project" "SSDEEP COMMAND" .SH NAME ssdeep - Computes context triggered piecewise hashes (fuzzy hashes)