@ -45,6 +45,80 @@
# include "util-unittest.h"
# include "util-unittest-helper.h"
# if defined(UNITTESTS) || defined(FUZZ)
Flow * TestHelperBuildFlow ( int family , const char * src , const char * dst , Port sp , Port dp )
{
struct in_addr in ;
Flow * f = SCMalloc ( sizeof ( Flow ) ) ;
if ( unlikely ( f = = NULL ) ) {
printf ( " FlowAlloc failed \n " ) ;
;
return NULL ;
}
memset ( f , 0x00 , sizeof ( Flow ) ) ;
FLOW_INITIALIZE ( f ) ;
if ( family = = AF_INET ) {
f - > flags | = FLOW_IPV4 ;
} else if ( family = = AF_INET6 ) {
f - > flags | = FLOW_IPV6 ;
}
if ( src ! = NULL ) {
if ( family = = AF_INET ) {
if ( inet_pton ( AF_INET , src , & in ) ! = 1 ) {
printf ( " invalid address %s \n " , src ) ;
SCFree ( f ) ;
return NULL ;
}
f - > src . addr_data32 [ 0 ] = in . s_addr ;
} else {
BUG_ON ( 1 ) ;
}
}
if ( dst ! = NULL ) {
if ( family = = AF_INET ) {
if ( inet_pton ( AF_INET , dst , & in ) ! = 1 ) {
printf ( " invalid address %s \n " , dst ) ;
SCFree ( f ) ;
return NULL ;
}
f - > dst . addr_data32 [ 0 ] = in . s_addr ;
} else {
BUG_ON ( 1 ) ;
}
}
f - > sp = sp ;
f - > dp = dp ;
return f ;
}
/** \brief writes the contents of a buffer into a file */
int TestHelperBufferToFile ( const char * name , const uint8_t * data , size_t size )
{
if ( remove ( name ) ! = 0 ) {
if ( errno ! = ENOENT ) {
printf ( " failed remove, errno=%d \n " , errno ) ;
return - 1 ;
}
}
FILE * fd = fopen ( name , " wb " ) ;
if ( fd = = NULL ) {
printf ( " failed open, errno=%d \n " , errno ) ;
return - 2 ;
}
if ( fwrite ( data , 1 , size , fd ) ! = size ) {
fclose ( fd ) ;
return - 3 ;
}
fclose ( fd ) ;
return 0 ;
}
# endif
# ifdef UNITTESTS
/**
@ -445,53 +519,7 @@ void UTHAssignFlow(Packet *p, Flow *f)
Flow * UTHBuildFlow ( int family , const char * src , const char * dst , Port sp , Port dp )
{
struct in_addr in ;
Flow * f = SCMalloc ( sizeof ( Flow ) ) ;
if ( unlikely ( f = = NULL ) ) {
printf ( " FlowAlloc failed \n " ) ;
;
return NULL ;
}
memset ( f , 0x00 , sizeof ( Flow ) ) ;
FLOW_INITIALIZE ( f ) ;
if ( family = = AF_INET ) {
f - > flags | = FLOW_IPV4 ;
} else if ( family = = AF_INET6 ) {
f - > flags | = FLOW_IPV6 ;
}
if ( src ! = NULL ) {
if ( family = = AF_INET ) {
if ( inet_pton ( AF_INET , src , & in ) ! = 1 ) {
printf ( " invalid address %s \n " , src ) ;
SCFree ( f ) ;
return NULL ;
}
f - > src . addr_data32 [ 0 ] = in . s_addr ;
} else {
BUG_ON ( 1 ) ;
}
}
if ( dst ! = NULL ) {
if ( family = = AF_INET ) {
if ( inet_pton ( AF_INET , dst , & in ) ! = 1 ) {
printf ( " invalid address %s \n " , dst ) ;
SCFree ( f ) ;
return NULL ;
}
f - > dst . addr_data32 [ 0 ] = in . s_addr ;
} else {
BUG_ON ( 1 ) ;
}
}
f - > sp = sp ;
f - > dp = dp ;
return f ;
return TestHelperBuildFlow ( family , src , dst , sp , dp ) ;
}
void UTHFreeFlow ( Flow * flow )
@ -942,28 +970,6 @@ int UTHParseSignature(const char *str, bool expect)
PASS ;
}
/** \brief writes the contents of a buffer into a file */
int UTHbufferToFile ( const char * name , const uint8_t * data , size_t size ) {
FILE * fd ;
if ( remove ( name ) ! = 0 ) {
if ( errno ! = ENOENT ) {
printf ( " failed remove, errno=%d \n " , errno ) ;
return - 1 ;
}
}
fd = fopen ( name , " wb " ) ;
if ( fd = = NULL ) {
printf ( " failed open, errno=%d \n " , errno ) ;
return - 2 ;
}
if ( fwrite ( data , 1 , size , fd ) ! = size ) {
fclose ( fd ) ;
return - 3 ;
}
fclose ( fd ) ;
return 0 ;
}
/*
* unittests for the unittest helpers
*/