From f7d46536a8100fa9f391860998a15e3284a2f95e Mon Sep 17 00:00:00 2001 From: zhengchao Date: Sat, 8 Jul 2017 20:08:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E5=A4=84=E7=90=86SFH?= =?UTF-8?q?=E7=9A=84=E6=9C=80=E5=90=8E=E4=B8=80=E4=B8=AA=E5=AD=97=E8=8A=82?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/entry/stream_fuzzy_hash.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/entry/stream_fuzzy_hash.c b/src/entry/stream_fuzzy_hash.c index 2b0b6e6..515bc67 100644 --- a/src/entry/stream_fuzzy_hash.c +++ b/src/entry/stream_fuzzy_hash.c @@ -580,6 +580,7 @@ int SFH_digest(sfh_instance_t * handle, char * hash_buffer, unsigned int size) fuzzy_handle_inner_t* _handle=(fuzzy_handle_inner_t *)handle; unsigned int estimate_len=_handle->s_state_cnt+IVI_seg_cnt(_handle->ivi)*24+1; int actual_len=0; + char* p=NULL; sfh_output_t result; memset(&result,0,sizeof(result)); result.size_b1 = estimate_len; @@ -592,15 +593,25 @@ int SFH_digest(sfh_instance_t * handle, char * hash_buffer, unsigned int size) result.b2=_handle->blocksize*MULTIPLE; IVI_traverse(_handle->ivi, sfh_output_callback, (void *) &result); - /* - result.hash_b1[result.offset_b1]=result.last_char_b1; - result.offset_b1++; - result.hash_b2[result.offset_b2]=result.last_char_b2; - result.offset_b2++; - */ + + if(result.offset_b1==0||result.offset_b2==0) + { + hash_buffer[0]='\0'; + goto fast_out; + } + p =strrchr(result.hash_b1,'['); + assert(p!=NULL); + memmove(p+1,p,strlen(p)); + *p=result.last_char_b1; + + p =strrchr(result.hash_b2,'['); + assert(p!=NULL); + memmove(p+1,p,strlen(p)); + *p=result.last_char_b2; + actual_len=snprintf(hash_buffer,size,"%llu:%s#%llu:%s",result.b1,result.hash_b1, result.b2,result.hash_b2); - +fast_out: free(result.hash_b1); result.hash_b1=NULL; free(result.hash_b2);